diff --git a/.obsidian/community-plugins.json b/.obsidian/community-plugins.json index a9b8df55..59324fee 100644 --- a/.obsidian/community-plugins.json +++ b/.obsidian/community-plugins.json @@ -42,7 +42,6 @@ "table-editor-obsidian", "obsidian-smart-typography", "podnotes", - "emoji-shortcodes", "obsidian-banners", "templater-obsidian", "obsidian-kanban", @@ -60,5 +59,7 @@ "obsidian-gallery", "obsidian-timelines", "obsidian-full-calendar", - "cm-editor-syntax-highlight-obsidian" + "cm-editor-syntax-highlight-obsidian", + "obsidian-icon-folder", + "obsidian-icon-shortcodes" ] \ No newline at end of file diff --git a/.obsidian/icons/test-pack/ArmoiriesMajorque.svg b/.obsidian/icons/test-pack/ArmoiriesMajorque.svg new file mode 100644 index 00000000..d6d0bdec --- /dev/null +++ b/.obsidian/icons/test-pack/ArmoiriesMajorque.svg @@ -0,0 +1,2161 @@ + + + + + + + image/svg+xml + + + + + + Flag of Canton of Valais (Wallis) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test-pack/ArmsOfMadridCity.svg b/.obsidian/icons/test-pack/ArmsOfMadridCity.svg new file mode 100644 index 00000000..46388dca --- /dev/null +++ b/.obsidian/icons/test-pack/ArmsOfMadridCity.svg @@ -0,0 +1,303 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test-pack/ArosaWappen.svg b/.obsidian/icons/test-pack/ArosaWappen.svg new file mode 100644 index 00000000..d23a4562 --- /dev/null +++ b/.obsidian/icons/test-pack/ArosaWappen.svg @@ -0,0 +1,136 @@ + + + + + + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + dc:title="Wappen Arosa (CH-GR)" + dc:date="2006-11-25" + dc:format="image/svg+xml" + dc:language="de"> + dc:creator="http://de.wikipedia.org/wiki/Benutzer:Bernina" + + +Wappen Arosa (CH-GR) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test-pack/BlasonArles13.svg b/.obsidian/icons/test-pack/BlasonArles13.svg new file mode 100644 index 00000000..c3295f2c --- /dev/null +++ b/.obsidian/icons/test-pack/BlasonArles13.svg @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test-pack/BlasonMarseille.svg b/.obsidian/icons/test-pack/BlasonMarseille.svg new file mode 100644 index 00000000..c322f185 --- /dev/null +++ b/.obsidian/icons/test-pack/BlasonMarseille.svg @@ -0,0 +1,21 @@ + + + + + + + + + + diff --git a/.obsidian/icons/test-pack/BlasonVilleFrNรฎmes(Gard).svg b/.obsidian/icons/test-pack/BlasonVilleFrNรฎmes(Gard).svg new file mode 100644 index 00000000..00cea665 --- /dev/null +++ b/.obsidian/icons/test-pack/BlasonVilleFrNรฎmes(Gard).svg @@ -0,0 +1,1192 @@ + + + + + + image/svg+xml + + Gabarit d'un blason en pointe pour le projet Blasons de Wikipรฉdia + 03-AUG-2006 + + + Jรฉrรดme BLUM (wagner51) + + + + fr + + + gabarit modรจle blason projet wikipรฉdia + + + + + + + + + + + + Flag of Canton of Valais (Wallis) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test-pack/CoACittร DiMilano.svg b/.obsidian/icons/test-pack/CoACittร DiMilano.svg new file mode 100644 index 00000000..5a2be5dc --- /dev/null +++ b/.obsidian/icons/test-pack/CoACittร DiMilano.svg @@ -0,0 +1,1369 @@ + + + + + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test-pack/CoatOfArmsOfDubai.svg b/.obsidian/icons/test-pack/CoatOfArmsOfDubai.svg new file mode 100644 index 00000000..b8187222 --- /dev/null +++ b/.obsidian/icons/test-pack/CoatOfArmsOfDubai.svg @@ -0,0 +1,2108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test-pack/CoatOfArmsOfFrance.svg b/.obsidian/icons/test-pack/CoatOfArmsOfFrance.svg new file mode 100644 index 00000000..a82bbe5b --- /dev/null +++ b/.obsidian/icons/test-pack/CoatOfArmsOfFrance.svg @@ -0,0 +1,16229 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test-pack/CoatOfArmsOfMorocco.svg b/.obsidian/icons/test-pack/CoatOfArmsOfMorocco.svg new file mode 100644 index 00000000..95261828 --- /dev/null +++ b/.obsidian/icons/test-pack/CoatOfArmsOfMorocco.svg @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test-pack/CoatOfArmsOfNewYork.svg b/.obsidian/icons/test-pack/CoatOfArmsOfNewYork.svg new file mode 100644 index 00000000..270e1cb2 --- /dev/null +++ b/.obsidian/icons/test-pack/CoatOfArmsOfNewYork.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/.obsidian/icons/test-pack/CoatOfArmsOfSouthAfrica(heraldic).svg b/.obsidian/icons/test-pack/CoatOfArmsOfSouthAfrica(heraldic).svg new file mode 100644 index 00000000..93ec7dc8 --- /dev/null +++ b/.obsidian/icons/test-pack/CoatOfArmsOfSouthAfrica(heraldic).svg @@ -0,0 +1,1439 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test-pack/CoatOfArmsOfSpain.svg b/.obsidian/icons/test-pack/CoatOfArmsOfSpain.svg new file mode 100644 index 00000000..e59019de --- /dev/null +++ b/.obsidian/icons/test-pack/CoatOfArmsOfSpain.svg @@ -0,0 +1,3962 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test-pack/CoatOfArmsOfSwitzerland.svg b/.obsidian/icons/test-pack/CoatOfArmsOfSwitzerland.svg new file mode 100644 index 00000000..1b7c3db1 --- /dev/null +++ b/.obsidian/icons/test-pack/CoatOfArmsOfSwitzerland.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.obsidian/icons/test-pack/CoatOfArmsOfTheCityOfLondon.svg b/.obsidian/icons/test-pack/CoatOfArmsOfTheCityOfLondon.svg new file mode 100644 index 00000000..6defedaa --- /dev/null +++ b/.obsidian/icons/test-pack/CoatOfArmsOfTheCityOfLondon.svg @@ -0,0 +1 @@ + diff --git a/.obsidian/icons/test-pack/CoatOfArmsOfTheKingdomOfBahrain.svg b/.obsidian/icons/test-pack/CoatOfArmsOfTheKingdomOfBahrain.svg new file mode 100644 index 00000000..f4bb4fd5 --- /dev/null +++ b/.obsidian/icons/test-pack/CoatOfArmsOfTheKingdomOfBahrain.svg @@ -0,0 +1,2231 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test-pack/CoatOfArmsOfTheKingdomOfItaly(1890).svg b/.obsidian/icons/test-pack/CoatOfArmsOfTheKingdomOfItaly(1890).svg new file mode 100644 index 00000000..b263f14f --- /dev/null +++ b/.obsidian/icons/test-pack/CoatOfArmsOfTheKingdomOfItaly(1890).svg @@ -0,0 +1,13330 @@ + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test-pack/CoatOfArmsOfTheUnitedStatesOfAmerica.svg b/.obsidian/icons/test-pack/CoatOfArmsOfTheUnitedStatesOfAmerica.svg new file mode 100644 index 00000000..beeacfe7 --- /dev/null +++ b/.obsidian/icons/test-pack/CoatOfArmsOfTheUnitedStatesOfAmerica.svg @@ -0,0 +1,1139 @@ + + + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.obsidian/icons/test-pack/Coat_of_Arms_of_The_City_of_London.svg b/.obsidian/icons/test-pack/Coat_of_Arms_of_The_City_of_London.svg new file mode 100644 index 00000000..6defedaa --- /dev/null +++ b/.obsidian/icons/test-pack/Coat_of_Arms_of_The_City_of_London.svg @@ -0,0 +1 @@ + diff --git a/.obsidian/icons/test-pack/EmblemOfEthiopia.svg b/.obsidian/icons/test-pack/EmblemOfEthiopia.svg new file mode 100644 index 00000000..5fdc512d --- /dev/null +++ b/.obsidian/icons/test-pack/EmblemOfEthiopia.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/.obsidian/icons/test-pack/FlorenceCoA.svg b/.obsidian/icons/test-pack/FlorenceCoA.svg new file mode 100644 index 00000000..a5989aad --- /dev/null +++ b/.obsidian/icons/test-pack/FlorenceCoA.svg @@ -0,0 +1,282 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.obsidian/icons/test-pack/FlumsBlazon.svg b/.obsidian/icons/test-pack/FlumsBlazon.svg new file mode 100644 index 00000000..2f34c06c --- /dev/null +++ b/.obsidian/icons/test-pack/FlumsBlazon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/.obsidian/icons/test-pack/GrandesArmesD'Avignon.svg b/.obsidian/icons/test-pack/GrandesArmesD'Avignon.svg new file mode 100644 index 00000000..1d63bc75 --- /dev/null +++ b/.obsidian/icons/test-pack/GrandesArmesD'Avignon.svg @@ -0,0 +1,21098 @@ + + + + + + + + + + + + + + + + + image/svg+xml + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test-pack/GrandesArmesDeParis.svg b/.obsidian/icons/test-pack/GrandesArmesDeParis.svg new file mode 100644 index 00000000..2f39b634 --- /dev/null +++ b/.obsidian/icons/test-pack/GrandesArmesDeParis.svg @@ -0,0 +1,849 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test-pack/GreaterCoatOfArmsOfTheCityOfBrussels.svg b/.obsidian/icons/test-pack/GreaterCoatOfArmsOfTheCityOfBrussels.svg new file mode 100644 index 00000000..0d16d036 --- /dev/null +++ b/.obsidian/icons/test-pack/GreaterCoatOfArmsOfTheCityOfBrussels.svg @@ -0,0 +1,965 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test-pack/GrindelwaldCoatOfArms.svg b/.obsidian/icons/test-pack/GrindelwaldCoatOfArms.svg new file mode 100644 index 00000000..d2f980fb --- /dev/null +++ b/.obsidian/icons/test-pack/GrindelwaldCoatOfArms.svg @@ -0,0 +1,420 @@ + + + + + + image/svg+xml + + 04-AUG-2009 + + + Juan G (aliman5040) + + + + + + + + + + Wappen Gemeinde Grindelwald + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test-pack/LebvLogo.svg b/.obsidian/icons/test-pack/LebvLogo.svg new file mode 100644 index 00000000..004262db --- /dev/null +++ b/.obsidian/icons/test-pack/LebvLogo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/.obsidian/icons/test-pack/PalermoStemma3.svg b/.obsidian/icons/test-pack/PalermoStemma3.svg new file mode 100644 index 00000000..16893796 --- /dev/null +++ b/.obsidian/icons/test-pack/PalermoStemma3.svg @@ -0,0 +1,685 @@ + + +Stemma Provincia di Ravenna + + + +image/svg+xml + +Stemma Provincia di Ravenna +13-OCT-2013 + + +https://commons.wikimedia.org/wiki/User:GJo + + +it, en + + +Stemma +Coat of arms +Provincia +Province +Ravenna + + +Stemma della Provincia di Ravenna: d'oro all'aquila di rosso (R.D. del 28 marzo e 4 giugno 1938, RR.LL.PP. del 28 ottobre 1938) + + + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test-pack/ParisSaintGermainLogo.svg b/.obsidian/icons/test-pack/ParisSaintGermainLogo.svg new file mode 100644 index 00000000..f71b9055 --- /dev/null +++ b/.obsidian/icons/test-pack/ParisSaintGermainLogo.svg @@ -0,0 +1,393 @@ + + + +image/svg+xml diff --git a/.obsidian/icons/test-pack/RL.D.svg b/.obsidian/icons/test-pack/RL.D.svg new file mode 100644 index 00000000..6f4c91f6 --- /dev/null +++ b/.obsidian/icons/test-pack/RL.D.svg @@ -0,0 +1,9 @@ + + PoloPlayer-svg + + + + + \ No newline at end of file diff --git a/.obsidian/icons/test-pack/RL.svg b/.obsidian/icons/test-pack/RL.svg new file mode 100644 index 00000000..4e5df450 --- /dev/null +++ b/.obsidian/icons/test-pack/RL.svg @@ -0,0 +1,9 @@ + + PoloPlayer-svg + + + + + \ No newline at end of file diff --git a/.obsidian/icons/test-pack/SealOfMiami,Florida.svg b/.obsidian/icons/test-pack/SealOfMiami,Florida.svg new file mode 100644 index 00000000..a7694351 --- /dev/null +++ b/.obsidian/icons/test-pack/SealOfMiami,Florida.svg @@ -0,0 +1,1055 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.obsidian/icons/test-pack/WappenGenfMatt.svg b/.obsidian/icons/test-pack/WappenGenfMatt.svg new file mode 100644 index 00000000..db2ee44e --- /dev/null +++ b/.obsidian/icons/test-pack/WappenGenfMatt.svg @@ -0,0 +1,112 @@ + + + +image/svg+xml + + + + + + + + + + \ No newline at end of file diff --git a/.obsidian/icons/test-pack/WappenTessinMatt.svg b/.obsidian/icons/test-pack/WappenTessinMatt.svg new file mode 100644 index 00000000..1aad7519 --- /dev/null +++ b/.obsidian/icons/test-pack/WappenTessinMatt.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test-pack/Zurich-coat_of_arms.svg b/.obsidian/icons/test-pack/Zurich-coat_of_arms.svg new file mode 100644 index 00000000..72c6cd1b --- /dev/null +++ b/.obsidian/icons/test-pack/Zurich-coat_of_arms.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test-pack/ZurichCoatOfArms.svg b/.obsidian/icons/test-pack/ZurichCoatOfArms.svg new file mode 100644 index 00000000..72c6cd1b --- /dev/null +++ b/.obsidian/icons/test-pack/ZurichCoatOfArms.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test_armoiries_majorque.svg b/.obsidian/icons/test_armoiries_majorque.svg new file mode 100644 index 00000000..d6d0bdec --- /dev/null +++ b/.obsidian/icons/test_armoiries_majorque.svg @@ -0,0 +1,2161 @@ + + + + + + + image/svg+xml + + + + + + Flag of Canton of Valais (Wallis) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test_arms_of_madrid_city.svg b/.obsidian/icons/test_arms_of_madrid_city.svg new file mode 100644 index 00000000..46388dca --- /dev/null +++ b/.obsidian/icons/test_arms_of_madrid_city.svg @@ -0,0 +1,303 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test_arosa_wappen.svg b/.obsidian/icons/test_arosa_wappen.svg new file mode 100644 index 00000000..d23a4562 --- /dev/null +++ b/.obsidian/icons/test_arosa_wappen.svg @@ -0,0 +1,136 @@ + + + + + + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + dc:title="Wappen Arosa (CH-GR)" + dc:date="2006-11-25" + dc:format="image/svg+xml" + dc:language="de"> + dc:creator="http://de.wikipedia.org/wiki/Benutzer:Bernina" + + +Wappen Arosa (CH-GR) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test_blason_arles_13.svg b/.obsidian/icons/test_blason_arles_13.svg new file mode 100644 index 00000000..c3295f2c --- /dev/null +++ b/.obsidian/icons/test_blason_arles_13.svg @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test_blason_marseille.svg b/.obsidian/icons/test_blason_marseille.svg new file mode 100644 index 00000000..c322f185 --- /dev/null +++ b/.obsidian/icons/test_blason_marseille.svg @@ -0,0 +1,21 @@ + + + + + + + + + + diff --git a/.obsidian/icons/test_blason_ville_fr_nรฎmes_(gard).svg b/.obsidian/icons/test_blason_ville_fr_nรฎmes_(gard).svg new file mode 100644 index 00000000..00cea665 --- /dev/null +++ b/.obsidian/icons/test_blason_ville_fr_nรฎmes_(gard).svg @@ -0,0 +1,1192 @@ + + + + + + image/svg+xml + + Gabarit d'un blason en pointe pour le projet Blasons de Wikipรฉdia + 03-AUG-2006 + + + Jรฉrรดme BLUM (wagner51) + + + + fr + + + gabarit modรจle blason projet wikipรฉdia + + + + + + + + + + + + Flag of Canton of Valais (Wallis) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test_coa_cittร _di_milano.svg b/.obsidian/icons/test_coa_cittร _di_milano.svg new file mode 100644 index 00000000..5a2be5dc --- /dev/null +++ b/.obsidian/icons/test_coa_cittร _di_milano.svg @@ -0,0 +1,1369 @@ + + + + + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test_coat_of_arms_of_dubai.svg b/.obsidian/icons/test_coat_of_arms_of_dubai.svg new file mode 100644 index 00000000..b8187222 --- /dev/null +++ b/.obsidian/icons/test_coat_of_arms_of_dubai.svg @@ -0,0 +1,2108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test_coat_of_arms_of_france.svg b/.obsidian/icons/test_coat_of_arms_of_france.svg new file mode 100644 index 00000000..a82bbe5b --- /dev/null +++ b/.obsidian/icons/test_coat_of_arms_of_france.svg @@ -0,0 +1,16229 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test_coat_of_arms_of_geneva.svg b/.obsidian/icons/test_coat_of_arms_of_geneva.svg new file mode 100644 index 00000000..1d38bac6 --- /dev/null +++ b/.obsidian/icons/test_coat_of_arms_of_geneva.svg @@ -0,0 +1,258 @@ + + + + + + image/svg+xml + + 07-AUG-2006 + + + Jรฉrรดme BLUM (wagner51) + + + + + Gabarit pour le Projet:Blasons de WIkipรฉdia + + + blason suisse modรจle gabarit projet blasons + + + fr + Gabrit d'un blason suisse + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Coat of Arms of Canton of Freiburg (Fribourg) + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test_coat_of_arms_of_morocco.svg b/.obsidian/icons/test_coat_of_arms_of_morocco.svg new file mode 100644 index 00000000..95261828 --- /dev/null +++ b/.obsidian/icons/test_coat_of_arms_of_morocco.svg @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test_coat_of_arms_of_new_york.svg b/.obsidian/icons/test_coat_of_arms_of_new_york.svg new file mode 100644 index 00000000..270e1cb2 --- /dev/null +++ b/.obsidian/icons/test_coat_of_arms_of_new_york.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/.obsidian/icons/test_coat_of_arms_of_south_africa_(heraldic).svg b/.obsidian/icons/test_coat_of_arms_of_south_africa_(heraldic).svg new file mode 100644 index 00000000..93ec7dc8 --- /dev/null +++ b/.obsidian/icons/test_coat_of_arms_of_south_africa_(heraldic).svg @@ -0,0 +1,1439 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test_coat_of_arms_of_spain.svg b/.obsidian/icons/test_coat_of_arms_of_spain.svg new file mode 100644 index 00000000..e59019de --- /dev/null +++ b/.obsidian/icons/test_coat_of_arms_of_spain.svg @@ -0,0 +1,3962 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test_coat_of_arms_of_switzerland.svg b/.obsidian/icons/test_coat_of_arms_of_switzerland.svg new file mode 100644 index 00000000..1b7c3db1 --- /dev/null +++ b/.obsidian/icons/test_coat_of_arms_of_switzerland.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.obsidian/icons/test_coat_of_arms_of_the_city_of_london.svg b/.obsidian/icons/test_coat_of_arms_of_the_city_of_london.svg new file mode 100644 index 00000000..6defedaa --- /dev/null +++ b/.obsidian/icons/test_coat_of_arms_of_the_city_of_london.svg @@ -0,0 +1 @@ + diff --git a/.obsidian/icons/test_coat_of_arms_of_the_kingdom_of_bahrain.svg b/.obsidian/icons/test_coat_of_arms_of_the_kingdom_of_bahrain.svg new file mode 100644 index 00000000..f4bb4fd5 --- /dev/null +++ b/.obsidian/icons/test_coat_of_arms_of_the_kingdom_of_bahrain.svg @@ -0,0 +1,2231 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test_coat_of_arms_of_the_kingdom_of_italy_(1890).svg b/.obsidian/icons/test_coat_of_arms_of_the_kingdom_of_italy_(1890).svg new file mode 100644 index 00000000..b263f14f --- /dev/null +++ b/.obsidian/icons/test_coat_of_arms_of_the_kingdom_of_italy_(1890).svg @@ -0,0 +1,13330 @@ + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test_coat_of_arms_of_the_united_states_of_america.svg b/.obsidian/icons/test_coat_of_arms_of_the_united_states_of_america.svg new file mode 100644 index 00000000..beeacfe7 --- /dev/null +++ b/.obsidian/icons/test_coat_of_arms_of_the_united_states_of_america.svg @@ -0,0 +1,1139 @@ + + + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.obsidian/icons/test_emblem_of_ethiopia.svg b/.obsidian/icons/test_emblem_of_ethiopia.svg new file mode 100644 index 00000000..5fdc512d --- /dev/null +++ b/.obsidian/icons/test_emblem_of_ethiopia.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/.obsidian/icons/test_florencecoa.svg b/.obsidian/icons/test_florencecoa.svg new file mode 100644 index 00000000..a5989aad --- /dev/null +++ b/.obsidian/icons/test_florencecoa.svg @@ -0,0 +1,282 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.obsidian/icons/test_flums_blazon.svg b/.obsidian/icons/test_flums_blazon.svg new file mode 100644 index 00000000..2f34c06c --- /dev/null +++ b/.obsidian/icons/test_flums_blazon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/.obsidian/icons/test_grandes_armes_d'avignon.svg b/.obsidian/icons/test_grandes_armes_d'avignon.svg new file mode 100644 index 00000000..1d63bc75 --- /dev/null +++ b/.obsidian/icons/test_grandes_armes_d'avignon.svg @@ -0,0 +1,21098 @@ + + + + + + + + + + + + + + + + + image/svg+xml + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test_grandes_armes_de_paris.svg b/.obsidian/icons/test_grandes_armes_de_paris.svg new file mode 100644 index 00000000..2f39b634 --- /dev/null +++ b/.obsidian/icons/test_grandes_armes_de_paris.svg @@ -0,0 +1,849 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test_greater_coat_of_arms_of_the_city_of_brussels.svg b/.obsidian/icons/test_greater_coat_of_arms_of_the_city_of_brussels.svg new file mode 100644 index 00000000..0d16d036 --- /dev/null +++ b/.obsidian/icons/test_greater_coat_of_arms_of_the_city_of_brussels.svg @@ -0,0 +1,965 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test_grindelwald_coat_of_arms.svg b/.obsidian/icons/test_grindelwald_coat_of_arms.svg new file mode 100644 index 00000000..d2f980fb --- /dev/null +++ b/.obsidian/icons/test_grindelwald_coat_of_arms.svg @@ -0,0 +1,420 @@ + + + + + + image/svg+xml + + 04-AUG-2009 + + + Juan G (aliman5040) + + + + + + + + + + Wappen Gemeinde Grindelwald + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test_lebv_logo.svg b/.obsidian/icons/test_lebv_logo.svg new file mode 100644 index 00000000..004262db --- /dev/null +++ b/.obsidian/icons/test_lebv_logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/.obsidian/icons/test_logo_stadt_zuerich.svg b/.obsidian/icons/test_logo_stadt_zuerich.svg new file mode 100644 index 00000000..531ba43d --- /dev/null +++ b/.obsidian/icons/test_logo_stadt_zuerich.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.obsidian/icons/test_palermo_stemma_3.svg b/.obsidian/icons/test_palermo_stemma_3.svg new file mode 100644 index 00000000..16893796 --- /dev/null +++ b/.obsidian/icons/test_palermo_stemma_3.svg @@ -0,0 +1,685 @@ + + +Stemma Provincia di Ravenna + + + +image/svg+xml + +Stemma Provincia di Ravenna +13-OCT-2013 + + +https://commons.wikimedia.org/wiki/User:GJo + + +it, en + + +Stemma +Coat of arms +Provincia +Province +Ravenna + + +Stemma della Provincia di Ravenna: d'oro all'aquila di rosso (R.D. del 28 marzo e 4 giugno 1938, RR.LL.PP. del 28 ottobre 1938) + + + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test_paris_saint_germain_logo.svg b/.obsidian/icons/test_paris_saint_germain_logo.svg new file mode 100644 index 00000000..f71b9055 --- /dev/null +++ b/.obsidian/icons/test_paris_saint_germain_logo.svg @@ -0,0 +1,393 @@ + + + +image/svg+xml diff --git a/.obsidian/icons/test_ppz.png.png b/.obsidian/icons/test_ppz.png.png new file mode 100644 index 00000000..64ad88c5 Binary files /dev/null and b/.obsidian/icons/test_ppz.png.png differ diff --git a/.obsidian/icons/test_rl.d.svg b/.obsidian/icons/test_rl.d.svg new file mode 100644 index 00000000..6f4c91f6 --- /dev/null +++ b/.obsidian/icons/test_rl.d.svg @@ -0,0 +1,9 @@ + + PoloPlayer-svg + + + + + \ No newline at end of file diff --git a/.obsidian/icons/test_rl.svg b/.obsidian/icons/test_rl.svg new file mode 100644 index 00000000..4e5df450 --- /dev/null +++ b/.obsidian/icons/test_rl.svg @@ -0,0 +1,9 @@ + + PoloPlayer-svg + + + + + \ No newline at end of file diff --git a/.obsidian/icons/test_royal_automobile_club.jpg.jpeg b/.obsidian/icons/test_royal_automobile_club.jpg.jpeg new file mode 100644 index 00000000..466cff88 Binary files /dev/null and b/.obsidian/icons/test_royal_automobile_club.jpg.jpeg differ diff --git a/.obsidian/icons/test_seal_of_miami,_florida.svg b/.obsidian/icons/test_seal_of_miami,_florida.svg new file mode 100644 index 00000000..a7694351 --- /dev/null +++ b/.obsidian/icons/test_seal_of_miami,_florida.svg @@ -0,0 +1,1055 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.obsidian/icons/test_wappen_genf_matt.svg b/.obsidian/icons/test_wappen_genf_matt.svg new file mode 100644 index 00000000..db2ee44e --- /dev/null +++ b/.obsidian/icons/test_wappen_genf_matt.svg @@ -0,0 +1,112 @@ + + + +image/svg+xml + + + + + + + + + + \ No newline at end of file diff --git a/.obsidian/icons/test_wappen_genf_matt_1.svg b/.obsidian/icons/test_wappen_genf_matt_1.svg new file mode 100644 index 00000000..db2ee44e --- /dev/null +++ b/.obsidian/icons/test_wappen_genf_matt_1.svg @@ -0,0 +1,112 @@ + + + +image/svg+xml + + + + + + + + + + \ No newline at end of file diff --git a/.obsidian/icons/test_wappen_tessin_matt.svg b/.obsidian/icons/test_wappen_tessin_matt.svg new file mode 100644 index 00000000..1aad7519 --- /dev/null +++ b/.obsidian/icons/test_wappen_tessin_matt.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.obsidian/icons/test_zurich_coat_of_arms.svg b/.obsidian/icons/test_zurich_coat_of_arms.svg new file mode 100644 index 00000000..72c6cd1b --- /dev/null +++ b/.obsidian/icons/test_zurich_coat_of_arms.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + diff --git a/.obsidian/plugins/cron/data.json b/.obsidian/plugins/cron/data.json index 128bbfeb..aee1def5 100644 --- a/.obsidian/plugins/cron/data.json +++ b/.obsidian/plugins/cron/data.json @@ -19,7 +19,7 @@ "601d1cc7-a4f3-4f19-aa9f-3bddd7ab6b1d": { "locked": false, "lockedDeviceName": "iPhone", - "lastRun": "2023-12-22T07:33:23+01:00" + "lastRun": "2023-12-27T07:52:27+01:00" } } } \ No newline at end of file diff --git a/.obsidian/plugins/emoji-shortcodes/data.json b/.obsidian/plugins/emoji-shortcodes/data.json deleted file mode 100644 index 9034c43e..00000000 --- a/.obsidian/plugins/emoji-shortcodes/data.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "immediateReplace": true, - "suggester": true, - "historyPriority": true, - "historyLimit": 100, - "history": [ - ":tv:", - ":plate_with_cutlery:", - ":train2:", - ":book:", - ":fork_and_knife:", - ":mountain:", - ":stadium:", - ":ski:", - ":salt:", - ":blue_car:", - ":medical_symbol:", - ":minidisc:", - ":bread:", - ":coffee:", - ":latvia:", - ":mega:", - ":pregnant_woman:", - ":shopping:", - ":potable_water:", - ":potted_plant:", - ":peanuts:", - ":flatbread:", - ":racehorse:", - ":soccer:", - ":man_cook:", - ":email:", - ":telephone_receiver:", - ":house:", - ":rugby_football:", - ":paintbrush:", - ":hiking_boot:", - ":battery:", - ":car:", - ":hot_pepper:", - ":palm_tree:", - ":candy:", - ":champagne:", - ":wine_glass:", - ":cityscape:", - ":iphone:", - ":european_castle:", - ":horse_racing:", - ":birthday:", - ":herb:", - ":chicken:", - ":meat_on_bone:", - ":avocado:", - ":broken_heart:", - ":warning:", - ":musical_score:", - ":clapper:", - ":crocodile:", - ":ferris_wheel:", - ":cake:", - ":family_man_woman_girl_boy:", - ":star:", - ":racing_car:", - ":hotel:", - ":classical_building:", - ":small_airplane:", - ":bar_chart:", - ":moneybag:", - ":unicorn:", - ":flight_departure:", - ":mexico:", - ":bell_pepper:", - ":coconut:", - ":skier:", - ":ring:", - ":house_with_garden:", - ":ramen:", - ":newspaper_roll:", - ":church:", - ":cocktail:", - ":scroll:", - ":bank:", - ":shield:", - ":test_tube:", - ":scientist:", - ":airplane:", - ":film_strip:", - ":dragon:", - ":artist:", - ":cat2:", - ":standing_person:", - ":croissant:", - ":lemon:", - ":wind_face:", - ":candle:", - ":fondue:", - ":ice_skate:", - ":family:", - ":stopwatch:", - ":ballot_box:", - ":crown:", - ":milk_glass:", - ":apple:", - ":cheese:", - ":butter:", - ":ballet_shoes:" - ] -} \ No newline at end of file diff --git a/.obsidian/plugins/emoji-shortcodes/main.js b/.obsidian/plugins/emoji-shortcodes/main.js deleted file mode 100644 index 5a3b2e1b..00000000 --- a/.obsidian/plugins/emoji-shortcodes/main.js +++ /dev/null @@ -1,2069 +0,0 @@ -/* -THIS IS A GENERATED/BUNDLED FILE BY ROLLUP -if you want to view the source visit the plugins github repository -*/ - -'use strict'; - -var obsidian = require('obsidian'); - -/****************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */ - -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()); - }); -} - -// Generated from: https://api.github.com/emojis -const emoji = JSON.parse(`{ - ":100:": "๐Ÿ’ฏ", - ":1234:": "๐Ÿ”ข", - ":+1:": "๐Ÿ‘", - ":-1:": "๐Ÿ‘Ž", - ":1st_place_medal:": "๐Ÿฅ‡", - ":2nd_place_medal:": "๐Ÿฅˆ", - ":3rd_place_medal:": "๐Ÿฅ‰", - ":8ball:": "๐ŸŽฑ", - ":a:": "๐Ÿ…ฐ", - ":ab:": "๐Ÿ†Ž", - ":abacus:": "๐Ÿงฎ", - ":abc:": "๐Ÿ”ค", - ":abcd:": "๐Ÿ”ก", - ":accept:": "๐Ÿ‰‘", - ":accordion:": "๐Ÿช—", - ":adhesive_bandage:": "๐Ÿฉน", - ":adult:": "๐Ÿง‘", - ":aerial_tramway:": "๐Ÿšก", - ":afghanistan:": "๐Ÿ‡ฆโ€๐Ÿ‡ซ", - ":airplane:": "โœˆ", - ":aland_islands:": "๐Ÿ‡ฆโ€๐Ÿ‡ฝ", - ":alarm_clock:": "โฐ", - ":albania:": "๐Ÿ‡ฆโ€๐Ÿ‡ฑ", - ":alembic:": "โš—", - ":algeria:": "๐Ÿ‡ฉโ€๐Ÿ‡ฟ", - ":alien:": "๐Ÿ‘ฝ", - ":ambulance:": "๐Ÿš‘", - ":american_samoa:": "๐Ÿ‡ฆโ€๐Ÿ‡ธ", - ":amphora:": "๐Ÿบ", - ":anatomical_heart:": "๐Ÿซ€", - ":anchor:": "โš“", - ":andorra:": "๐Ÿ‡ฆโ€๐Ÿ‡ฉ", - ":angel:": "๐Ÿ‘ผ", - ":anger:": "๐Ÿ’ข", - ":angola:": "๐Ÿ‡ฆโ€๐Ÿ‡ด", - ":angry:": "๐Ÿ˜ ", - ":anguilla:": "๐Ÿ‡ฆโ€๐Ÿ‡ฎ", - ":anguished:": "๐Ÿ˜ง", - ":ant:": "๐Ÿœ", - ":antarctica:": "๐Ÿ‡ฆโ€๐Ÿ‡ถ", - ":antigua_barbuda:": "๐Ÿ‡ฆโ€๐Ÿ‡ฌ", - ":apple:": "๐ŸŽ", - ":aquarius:": "โ™’", - ":argentina:": "๐Ÿ‡ฆโ€๐Ÿ‡ท", - ":aries:": "โ™ˆ", - ":armenia:": "๐Ÿ‡ฆโ€๐Ÿ‡ฒ", - ":arrow_backward:": "โ—€", - ":arrow_double_down:": "โฌ", - ":arrow_double_up:": "โซ", - ":arrow_down:": "โฌ‡", - ":arrow_down_small:": "๐Ÿ”ฝ", - ":arrow_forward:": "โ–ถ", - ":arrow_heading_down:": "โคต", - ":arrow_heading_up:": "โคด", - ":arrow_left:": "โฌ…", - ":arrow_lower_left:": "โ†™", - ":arrow_lower_right:": "โ†˜", - ":arrow_right:": "โžก", - ":arrow_right_hook:": "โ†ช", - ":arrow_up:": "โฌ†", - ":arrow_up_down:": "โ†•", - ":arrow_up_small:": "๐Ÿ”ผ", - ":arrow_upper_left:": "โ†–", - ":arrow_upper_right:": "โ†—", - ":arrows_clockwise:": "๐Ÿ”ƒ", - ":arrows_counterclockwise:": "๐Ÿ”„", - ":art:": "๐ŸŽจ", - ":articulated_lorry:": "๐Ÿš›", - ":artificial_satellite:": "๐Ÿ›ฐ", - ":artist:": "๐Ÿง‘โ€๐ŸŽจ", - ":aruba:": "๐Ÿ‡ฆโ€๐Ÿ‡ผ", - ":ascension_island:": "๐Ÿ‡ฆโ€๐Ÿ‡จ", - ":asterisk:": "*โ€โƒฃ", - ":astonished:": "๐Ÿ˜ฒ", - ":astronaut:": "๐Ÿง‘โ€๐Ÿš€", - ":athletic_shoe:": "๐Ÿ‘Ÿ", - ":atm:": "๐Ÿง", - ":atom_symbol:": "โš›", - ":australia:": "๐Ÿ‡ฆโ€๐Ÿ‡บ", - ":austria:": "๐Ÿ‡ฆโ€๐Ÿ‡น", - ":auto_rickshaw:": "๐Ÿ›บ", - ":avocado:": "๐Ÿฅ‘", - ":axe:": "๐Ÿช“", - ":azerbaijan:": "๐Ÿ‡ฆโ€๐Ÿ‡ฟ", - ":b:": "๐Ÿ…ฑ", - ":baby:": "๐Ÿ‘ถ", - ":baby_bottle:": "๐Ÿผ", - ":baby_chick:": "๐Ÿค", - ":baby_symbol:": "๐Ÿšผ", - ":back:": "๐Ÿ”™", - ":bacon:": "๐Ÿฅ“", - ":badger:": "๐Ÿฆก", - ":badminton:": "๐Ÿธ", - ":bagel:": "๐Ÿฅฏ", - ":baggage_claim:": "๐Ÿ›„", - ":baguette_bread:": "๐Ÿฅ–", - ":bahamas:": "๐Ÿ‡งโ€๐Ÿ‡ธ", - ":bahrain:": "๐Ÿ‡งโ€๐Ÿ‡ญ", - ":balance_scale:": "โš–", - ":bald_man:": "๐Ÿ‘จโ€๐Ÿฆฒ", - ":bald_woman:": "๐Ÿ‘ฉโ€๐Ÿฆฒ", - ":ballet_shoes:": "๐Ÿฉฐ", - ":balloon:": "๐ŸŽˆ", - ":ballot_box:": "๐Ÿ—ณ", - ":ballot_box_with_check:": "โ˜‘", - ":bamboo:": "๐ŸŽ", - ":banana:": "๐ŸŒ", - ":bangbang:": "โ€ผ", - ":bangladesh:": "๐Ÿ‡งโ€๐Ÿ‡ฉ", - ":banjo:": "๐Ÿช•", - ":bank:": "๐Ÿฆ", - ":bar_chart:": "๐Ÿ“Š", - ":barbados:": "๐Ÿ‡งโ€๐Ÿ‡ง", - ":barber:": "๐Ÿ’ˆ", - ":baseball:": "โšพ", - ":basket:": "๐Ÿงบ", - ":basketball:": "๐Ÿ€", - ":basketball_man:": "โ›นโ€โ™‚", - ":basketball_woman:": "โ›นโ€โ™€", - ":bat:": "๐Ÿฆ‡", - ":bath:": "๐Ÿ›€", - ":bathtub:": "๐Ÿ›", - ":battery:": "๐Ÿ”‹", - ":beach_umbrella:": "๐Ÿ–", - ":bear:": "๐Ÿป", - ":bearded_person:": "๐Ÿง”", - ":beaver:": "๐Ÿฆซ", - ":bed:": "๐Ÿ›", - ":bee:": "๐Ÿ", - ":beer:": "๐Ÿบ", - ":beers:": "๐Ÿป", - ":beetle:": "๐Ÿชฒ", - ":beginner:": "๐Ÿ”ฐ", - ":belarus:": "๐Ÿ‡งโ€๐Ÿ‡พ", - ":belgium:": "๐Ÿ‡งโ€๐Ÿ‡ช", - ":belize:": "๐Ÿ‡งโ€๐Ÿ‡ฟ", - ":bell:": "๐Ÿ””", - ":bell_pepper:": "๐Ÿซ‘", - ":bellhop_bell:": "๐Ÿ›Ž", - ":benin:": "๐Ÿ‡งโ€๐Ÿ‡ฏ", - ":bento:": "๐Ÿฑ", - ":bermuda:": "๐Ÿ‡งโ€๐Ÿ‡ฒ", - ":beverage_box:": "๐Ÿงƒ", - ":bhutan:": "๐Ÿ‡งโ€๐Ÿ‡น", - ":bicyclist:": "๐Ÿšด", - ":bike:": "๐Ÿšฒ", - ":biking_man:": "๐Ÿšดโ€โ™‚", - ":biking_woman:": "๐Ÿšดโ€โ™€", - ":bikini:": "๐Ÿ‘™", - ":billed_cap:": "๐Ÿงข", - ":biohazard:": "โ˜ฃ", - ":bird:": "๐Ÿฆ", - ":birthday:": "๐ŸŽ‚", - ":bison:": "๐Ÿฆฌ", - ":black_cat:": "๐Ÿˆโ€โฌ›", - ":black_circle:": "โšซ", - ":black_flag:": "๐Ÿด", - ":black_heart:": "๐Ÿ–ค", - ":black_joker:": "๐Ÿƒ", - ":black_large_square:": "โฌ›", - ":black_medium_small_square:": "โ—พ", - ":black_medium_square:": "โ—ผ", - ":black_nib:": "โœ’", - ":black_small_square:": "โ–ช", - ":black_square_button:": "๐Ÿ”ฒ", - ":blond_haired_man:": "๐Ÿ‘ฑโ€โ™‚", - ":blond_haired_person:": "๐Ÿ‘ฑ", - ":blond_haired_woman:": "๐Ÿ‘ฑโ€โ™€", - ":blonde_woman:": "๐Ÿ‘ฑโ€โ™€", - ":blossom:": "๐ŸŒผ", - ":blowfish:": "๐Ÿก", - ":blue_book:": "๐Ÿ“˜", - ":blue_car:": "๐Ÿš™", - ":blue_heart:": "๐Ÿ’™", - ":blue_square:": "๐ŸŸฆ", - ":blueberries:": "๐Ÿซ", - ":blush:": "๐Ÿ˜Š", - ":boar:": "๐Ÿ—", - ":boat:": "โ›ต", - ":bolivia:": "๐Ÿ‡งโ€๐Ÿ‡ด", - ":bomb:": "๐Ÿ’ฃ", - ":bone:": "๐Ÿฆด", - ":book:": "๐Ÿ“–", - ":bookmark:": "๐Ÿ”–", - ":bookmark_tabs:": "๐Ÿ“‘", - ":books:": "๐Ÿ“š", - ":boom:": "๐Ÿ’ฅ", - ":boomerang:": "๐Ÿชƒ", - ":boot:": "๐Ÿ‘ข", - ":bosnia_herzegovina:": "๐Ÿ‡งโ€๐Ÿ‡ฆ", - ":botswana:": "๐Ÿ‡งโ€๐Ÿ‡ผ", - ":bouncing_ball_man:": "โ›นโ€โ™‚", - ":bouncing_ball_person:": "โ›น", - ":bouncing_ball_woman:": "โ›นโ€โ™€", - ":bouquet:": "๐Ÿ’", - ":bouvet_island:": "๐Ÿ‡งโ€๐Ÿ‡ป", - ":bow:": "๐Ÿ™‡", - ":bow_and_arrow:": "๐Ÿน", - ":bowing_man:": "๐Ÿ™‡โ€โ™‚", - ":bowing_woman:": "๐Ÿ™‡โ€โ™€", - ":bowl_with_spoon:": "๐Ÿฅฃ", - ":bowling:": "๐ŸŽณ", - ":boxing_glove:": "๐ŸฅŠ", - ":boy:": "๐Ÿ‘ฆ", - ":brain:": "๐Ÿง ", - ":brazil:": "๐Ÿ‡งโ€๐Ÿ‡ท", - ":bread:": "๐Ÿž", - ":breast_feeding:": "๐Ÿคฑ", - ":bricks:": "๐Ÿงฑ", - ":bride_with_veil:": "๐Ÿ‘ฐโ€โ™€", - ":bridge_at_night:": "๐ŸŒ‰", - ":briefcase:": "๐Ÿ’ผ", - ":british_indian_ocean_territory:": "๐Ÿ‡ฎโ€๐Ÿ‡ด", - ":british_virgin_islands:": "๐Ÿ‡ปโ€๐Ÿ‡ฌ", - ":broccoli:": "๐Ÿฅฆ", - ":broken_heart:": "๐Ÿ’”", - ":broom:": "๐Ÿงน", - ":brown_circle:": "๐ŸŸค", - ":brown_heart:": "๐ŸคŽ", - ":brown_square:": "๐ŸŸซ", - ":brunei:": "๐Ÿ‡งโ€๐Ÿ‡ณ", - ":bubble_tea:": "๐Ÿง‹", - ":bucket:": "๐Ÿชฃ", - ":bug:": "๐Ÿ›", - ":building_construction:": "๐Ÿ—", - ":bulb:": "๐Ÿ’ก", - ":bulgaria:": "๐Ÿ‡งโ€๐Ÿ‡ฌ", - ":bullettrain_front:": "๐Ÿš…", - ":bullettrain_side:": "๐Ÿš„", - ":burkina_faso:": "๐Ÿ‡งโ€๐Ÿ‡ซ", - ":burrito:": "๐ŸŒฏ", - ":burundi:": "๐Ÿ‡งโ€๐Ÿ‡ฎ", - ":bus:": "๐ŸšŒ", - ":business_suit_levitating:": "๐Ÿ•ด", - ":busstop:": "๐Ÿš", - ":bust_in_silhouette:": "๐Ÿ‘ค", - ":busts_in_silhouette:": "๐Ÿ‘ฅ", - ":butter:": "๐Ÿงˆ", - ":butterfly:": "๐Ÿฆ‹", - ":cactus:": "๐ŸŒต", - ":cake:": "๐Ÿฐ", - ":calendar:": "๐Ÿ“†", - ":call_me_hand:": "๐Ÿค™", - ":calling:": "๐Ÿ“ฒ", - ":cambodia:": "๐Ÿ‡ฐโ€๐Ÿ‡ญ", - ":camel:": "๐Ÿซ", - ":camera:": "๐Ÿ“ท", - ":camera_flash:": "๐Ÿ“ธ", - ":cameroon:": "๐Ÿ‡จโ€๐Ÿ‡ฒ", - ":camping:": "๐Ÿ•", - ":canada:": "๐Ÿ‡จโ€๐Ÿ‡ฆ", - ":canary_islands:": "๐Ÿ‡ฎโ€๐Ÿ‡จ", - ":cancer:": "โ™‹", - ":candle:": "๐Ÿ•ฏ", - ":candy:": "๐Ÿฌ", - ":canned_food:": "๐Ÿฅซ", - ":canoe:": "๐Ÿ›ถ", - ":cape_verde:": "๐Ÿ‡จโ€๐Ÿ‡ป", - ":capital_abcd:": "๐Ÿ” ", - ":capricorn:": "โ™‘", - ":car:": "๐Ÿš—", - ":card_file_box:": "๐Ÿ—ƒ", - ":card_index:": "๐Ÿ“‡", - ":card_index_dividers:": "๐Ÿ—‚", - ":caribbean_netherlands:": "๐Ÿ‡งโ€๐Ÿ‡ถ", - ":carousel_horse:": "๐ŸŽ ", - ":carpentry_saw:": "๐Ÿชš", - ":carrot:": "๐Ÿฅ•", - ":cartwheeling:": "๐Ÿคธ", - ":cat:": "๐Ÿฑ", - ":cat2:": "๐Ÿˆ", - ":cayman_islands:": "๐Ÿ‡ฐโ€๐Ÿ‡พ", - ":cd:": "๐Ÿ’ฟ", - ":central_african_republic:": "๐Ÿ‡จโ€๐Ÿ‡ซ", - ":ceuta_melilla:": "๐Ÿ‡ชโ€๐Ÿ‡ฆ", - ":chad:": "๐Ÿ‡นโ€๐Ÿ‡ฉ", - ":chains:": "โ›“", - ":chair:": "๐Ÿช‘", - ":champagne:": "๐Ÿพ", - ":chart:": "๐Ÿ’น", - ":chart_with_downwards_trend:": "๐Ÿ“‰", - ":chart_with_upwards_trend:": "๐Ÿ“ˆ", - ":checkered_flag:": "๐Ÿ", - ":cheese:": "๐Ÿง€", - ":cherries:": "๐Ÿ’", - ":cherry_blossom:": "๐ŸŒธ", - ":chess_pawn:": "โ™Ÿ", - ":chestnut:": "๐ŸŒฐ", - ":chicken:": "๐Ÿ”", - ":child:": "๐Ÿง’", - ":children_crossing:": "๐Ÿšธ", - ":chile:": "๐Ÿ‡จโ€๐Ÿ‡ฑ", - ":chipmunk:": "๐Ÿฟ", - ":chocolate_bar:": "๐Ÿซ", - ":chopsticks:": "๐Ÿฅข", - ":christmas_island:": "๐Ÿ‡จโ€๐Ÿ‡ฝ", - ":christmas_tree:": "๐ŸŽ„", - ":church:": "โ›ช", - ":cinema:": "๐ŸŽฆ", - ":circus_tent:": "๐ŸŽช", - ":city_sunrise:": "๐ŸŒ‡", - ":city_sunset:": "๐ŸŒ†", - ":cityscape:": "๐Ÿ™", - ":cl:": "๐Ÿ†‘", - ":clamp:": "๐Ÿ—œ", - ":clap:": "๐Ÿ‘", - ":clapper:": "๐ŸŽฌ", - ":classical_building:": "๐Ÿ›", - ":climbing:": "๐Ÿง—", - ":climbing_man:": "๐Ÿง—โ€โ™‚", - ":climbing_woman:": "๐Ÿง—โ€โ™€", - ":clinking_glasses:": "๐Ÿฅ‚", - ":clipboard:": "๐Ÿ“‹", - ":clipperton_island:": "๐Ÿ‡จโ€๐Ÿ‡ต", - ":clock1:": "๐Ÿ•", - ":clock10:": "๐Ÿ•™", - ":clock1030:": "๐Ÿ•ฅ", - ":clock11:": "๐Ÿ•š", - ":clock1130:": "๐Ÿ•ฆ", - ":clock12:": "๐Ÿ•›", - ":clock1230:": "๐Ÿ•ง", - ":clock130:": "๐Ÿ•œ", - ":clock2:": "๐Ÿ•‘", - ":clock230:": "๐Ÿ•", - ":clock3:": "๐Ÿ•’", - ":clock330:": "๐Ÿ•ž", - ":clock4:": "๐Ÿ•“", - ":clock430:": "๐Ÿ•Ÿ", - ":clock5:": "๐Ÿ•”", - ":clock530:": "๐Ÿ• ", - ":clock6:": "๐Ÿ••", - ":clock630:": "๐Ÿ•ก", - ":clock7:": "๐Ÿ•–", - ":clock730:": "๐Ÿ•ข", - ":clock8:": "๐Ÿ•—", - ":clock830:": "๐Ÿ•ฃ", - ":clock9:": "๐Ÿ•˜", - ":clock930:": "๐Ÿ•ค", - ":closed_book:": "๐Ÿ“•", - ":closed_lock_with_key:": "๐Ÿ”", - ":closed_umbrella:": "๐ŸŒ‚", - ":cloud:": "โ˜", - ":cloud_with_lightning:": "๐ŸŒฉ", - ":cloud_with_lightning_and_rain:": "โ›ˆ", - ":cloud_with_rain:": "๐ŸŒง", - ":cloud_with_snow:": "๐ŸŒจ", - ":clown_face:": "๐Ÿคก", - ":clubs:": "โ™ฃ", - ":cn:": "๐Ÿ‡จโ€๐Ÿ‡ณ", - ":coat:": "๐Ÿงฅ", - ":cockroach:": "๐Ÿชณ", - ":cocktail:": "๐Ÿธ", - ":coconut:": "๐Ÿฅฅ", - ":cocos_islands:": "๐Ÿ‡จโ€๐Ÿ‡จ", - ":coffee:": "โ˜•", - ":coffin:": "โšฐ", - ":coin:": "๐Ÿช™", - ":cold_face:": "๐Ÿฅถ", - ":cold_sweat:": "๐Ÿ˜ฐ", - ":collision:": "๐Ÿ’ฅ", - ":colombia:": "๐Ÿ‡จโ€๐Ÿ‡ด", - ":comet:": "โ˜„", - ":comoros:": "๐Ÿ‡ฐโ€๐Ÿ‡ฒ", - ":compass:": "๐Ÿงญ", - ":computer:": "๐Ÿ’ป", - ":computer_mouse:": "๐Ÿ–ฑ", - ":confetti_ball:": "๐ŸŽŠ", - ":confounded:": "๐Ÿ˜–", - ":confused:": "๐Ÿ˜•", - ":congo_brazzaville:": "๐Ÿ‡จโ€๐Ÿ‡ฌ", - ":congo_kinshasa:": "๐Ÿ‡จโ€๐Ÿ‡ฉ", - ":congratulations:": "ใŠ—", - ":construction:": "๐Ÿšง", - ":construction_worker:": "๐Ÿ‘ท", - ":construction_worker_man:": "๐Ÿ‘ทโ€โ™‚", - ":construction_worker_woman:": "๐Ÿ‘ทโ€โ™€", - ":control_knobs:": "๐ŸŽ›", - ":convenience_store:": "๐Ÿช", - ":cook:": "๐Ÿง‘โ€๐Ÿณ", - ":cook_islands:": "๐Ÿ‡จโ€๐Ÿ‡ฐ", - ":cookie:": "๐Ÿช", - ":cool:": "๐Ÿ†’", - ":cop:": "๐Ÿ‘ฎ", - ":copyright:": "ยฉ", - ":corn:": "๐ŸŒฝ", - ":costa_rica:": "๐Ÿ‡จโ€๐Ÿ‡ท", - ":cote_divoire:": "๐Ÿ‡จโ€๐Ÿ‡ฎ", - ":couch_and_lamp:": "๐Ÿ›‹", - ":couple:": "๐Ÿ‘ซ", - ":couple_with_heart:": "๐Ÿ’‘", - ":couple_with_heart_man_man:": "๐Ÿ‘จโ€โคโ€๐Ÿ‘จ", - ":couple_with_heart_woman_man:": "๐Ÿ‘ฉโ€โคโ€๐Ÿ‘จ", - ":couple_with_heart_woman_woman:": "๐Ÿ‘ฉโ€โคโ€๐Ÿ‘ฉ", - ":couplekiss:": "๐Ÿ’", - ":couplekiss_man_man:": "๐Ÿ‘จโ€โคโ€๐Ÿ’‹โ€๐Ÿ‘จ", - ":couplekiss_man_woman:": "๐Ÿ‘ฉโ€โคโ€๐Ÿ’‹โ€๐Ÿ‘จ", - ":couplekiss_woman_woman:": "๐Ÿ‘ฉโ€โคโ€๐Ÿ’‹โ€๐Ÿ‘ฉ", - ":cow:": "๐Ÿฎ", - ":cow2:": "๐Ÿ„", - ":cowboy_hat_face:": "๐Ÿค ", - ":crab:": "๐Ÿฆ€", - ":crayon:": "๐Ÿ–", - ":credit_card:": "๐Ÿ’ณ", - ":crescent_moon:": "๐ŸŒ™", - ":cricket:": "๐Ÿฆ—", - ":cricket_game:": "๐Ÿ", - ":croatia:": "๐Ÿ‡ญโ€๐Ÿ‡ท", - ":crocodile:": "๐ŸŠ", - ":croissant:": "๐Ÿฅ", - ":crossed_fingers:": "๐Ÿคž", - ":crossed_flags:": "๐ŸŽŒ", - ":crossed_swords:": "โš”", - ":crown:": "๐Ÿ‘‘", - ":cry:": "๐Ÿ˜ข", - ":crying_cat_face:": "๐Ÿ˜ฟ", - ":crystal_ball:": "๐Ÿ”ฎ", - ":cuba:": "๐Ÿ‡จโ€๐Ÿ‡บ", - ":cucumber:": "๐Ÿฅ’", - ":cup_with_straw:": "๐Ÿฅค", - ":cupcake:": "๐Ÿง", - ":cupid:": "๐Ÿ’˜", - ":curacao:": "๐Ÿ‡จโ€๐Ÿ‡ผ", - ":curling_stone:": "๐ŸฅŒ", - ":curly_haired_man:": "๐Ÿ‘จโ€๐Ÿฆฑ", - ":curly_haired_woman:": "๐Ÿ‘ฉโ€๐Ÿฆฑ", - ":curly_loop:": "โžฐ", - ":currency_exchange:": "๐Ÿ’ฑ", - ":curry:": "๐Ÿ›", - ":cursing_face:": "๐Ÿคฌ", - ":custard:": "๐Ÿฎ", - ":customs:": "๐Ÿ›ƒ", - ":cut_of_meat:": "๐Ÿฅฉ", - ":cyclone:": "๐ŸŒ€", - ":cyprus:": "๐Ÿ‡จโ€๐Ÿ‡พ", - ":czech_republic:": "๐Ÿ‡จโ€๐Ÿ‡ฟ", - ":dagger:": "๐Ÿ—ก", - ":dancer:": "๐Ÿ’ƒ", - ":dancers:": "๐Ÿ‘ฏ", - ":dancing_men:": "๐Ÿ‘ฏโ€โ™‚", - ":dancing_women:": "๐Ÿ‘ฏโ€โ™€", - ":dango:": "๐Ÿก", - ":dark_sunglasses:": "๐Ÿ•ถ", - ":dart:": "๐ŸŽฏ", - ":dash:": "๐Ÿ’จ", - ":date:": "๐Ÿ“…", - ":de:": "๐Ÿ‡ฉโ€๐Ÿ‡ช", - ":deaf_man:": "๐Ÿงโ€โ™‚", - ":deaf_person:": "๐Ÿง", - ":deaf_woman:": "๐Ÿงโ€โ™€", - ":deciduous_tree:": "๐ŸŒณ", - ":deer:": "๐ŸฆŒ", - ":denmark:": "๐Ÿ‡ฉโ€๐Ÿ‡ฐ", - ":department_store:": "๐Ÿฌ", - ":derelict_house:": "๐Ÿš", - ":desert:": "๐Ÿœ", - ":desert_island:": "๐Ÿ", - ":desktop_computer:": "๐Ÿ–ฅ", - ":detective:": "๐Ÿ•ต", - ":diamond_shape_with_a_dot_inside:": "๐Ÿ’ ", - ":diamonds:": "โ™ฆ", - ":diego_garcia:": "๐Ÿ‡ฉโ€๐Ÿ‡ฌ", - ":disappointed:": "๐Ÿ˜ž", - ":disappointed_relieved:": "๐Ÿ˜ฅ", - ":disguised_face:": "๐Ÿฅธ", - ":diving_mask:": "๐Ÿคฟ", - ":diya_lamp:": "๐Ÿช”", - ":dizzy:": "๐Ÿ’ซ", - ":dizzy_face:": "๐Ÿ˜ต", - ":djibouti:": "๐Ÿ‡ฉโ€๐Ÿ‡ฏ", - ":dna:": "๐Ÿงฌ", - ":do_not_litter:": "๐Ÿšฏ", - ":dodo:": "๐Ÿฆค", - ":dog:": "๐Ÿถ", - ":dog2:": "๐Ÿ•", - ":dollar:": "๐Ÿ’ต", - ":dolls:": "๐ŸŽŽ", - ":dolphin:": "๐Ÿฌ", - ":dominica:": "๐Ÿ‡ฉโ€๐Ÿ‡ฒ", - ":dominican_republic:": "๐Ÿ‡ฉโ€๐Ÿ‡ด", - ":door:": "๐Ÿšช", - ":doughnut:": "๐Ÿฉ", - ":dove:": "๐Ÿ•Š", - ":dragon:": "๐Ÿ‰", - ":dragon_face:": "๐Ÿฒ", - ":dress:": "๐Ÿ‘—", - ":dromedary_camel:": "๐Ÿช", - ":drooling_face:": "๐Ÿคค", - ":drop_of_blood:": "๐Ÿฉธ", - ":droplet:": "๐Ÿ’ง", - ":drum:": "๐Ÿฅ", - ":duck:": "๐Ÿฆ†", - ":dumpling:": "๐ŸฅŸ", - ":dvd:": "๐Ÿ“€", - ":e-mail:": "๐Ÿ“ง", - ":eagle:": "๐Ÿฆ…", - ":ear:": "๐Ÿ‘‚", - ":ear_of_rice:": "๐ŸŒพ", - ":ear_with_hearing_aid:": "๐Ÿฆป", - ":earth_africa:": "๐ŸŒ", - ":earth_americas:": "๐ŸŒŽ", - ":earth_asia:": "๐ŸŒ", - ":ecuador:": "๐Ÿ‡ชโ€๐Ÿ‡จ", - ":egg:": "๐Ÿฅš", - ":eggplant:": "๐Ÿ†", - ":egypt:": "๐Ÿ‡ชโ€๐Ÿ‡ฌ", - ":eight:": "8โ€โƒฃ", - ":eight_pointed_black_star:": "โœด", - ":eight_spoked_asterisk:": "โœณ", - ":eject_button:": "โ", - ":el_salvador:": "๐Ÿ‡ธโ€๐Ÿ‡ป", - ":electric_plug:": "๐Ÿ”Œ", - ":elephant:": "๐Ÿ˜", - ":elevator:": "๐Ÿ›—", - ":elf:": "๐Ÿง", - ":elf_man:": "๐Ÿงโ€โ™‚", - ":elf_woman:": "๐Ÿงโ€โ™€", - ":email:": "๐Ÿ“ง", - ":end:": "๐Ÿ”š", - ":england:": "๐Ÿดโ€๓ งโ€๓ ขโ€๓ ฅโ€๓ ฎโ€๓ งโ€๓ ฟ", - ":envelope:": "โœ‰", - ":envelope_with_arrow:": "๐Ÿ“ฉ", - ":equatorial_guinea:": "๐Ÿ‡ฌโ€๐Ÿ‡ถ", - ":eritrea:": "๐Ÿ‡ชโ€๐Ÿ‡ท", - ":es:": "๐Ÿ‡ชโ€๐Ÿ‡ธ", - ":estonia:": "๐Ÿ‡ชโ€๐Ÿ‡ช", - ":ethiopia:": "๐Ÿ‡ชโ€๐Ÿ‡น", - ":eu:": "๐Ÿ‡ชโ€๐Ÿ‡บ", - ":euro:": "๐Ÿ’ถ", - ":european_castle:": "๐Ÿฐ", - ":european_post_office:": "๐Ÿค", - ":european_union:": "๐Ÿ‡ชโ€๐Ÿ‡บ", - ":evergreen_tree:": "๐ŸŒฒ", - ":exclamation:": "โ—", - ":exploding_head:": "๐Ÿคฏ", - ":expressionless:": "๐Ÿ˜‘", - ":eye:": "๐Ÿ‘", - ":eye_speech_bubble:": "๐Ÿ‘โ€๐Ÿ—จ", - ":eyeglasses:": "๐Ÿ‘“", - ":eyes:": "๐Ÿ‘€", - ":face_exhaling:": "๐Ÿ˜ฎโ€๐Ÿ’จ", - ":face_in_clouds:": "๐Ÿ˜ถโ€๐ŸŒซ", - ":face_with_head_bandage:": "๐Ÿค•", - ":face_with_spiral_eyes:": "๐Ÿ˜ตโ€๐Ÿ’ซ", - ":face_with_thermometer:": "๐Ÿค’", - ":facepalm:": "๐Ÿคฆ", - ":facepunch:": "๐Ÿ‘Š", - ":factory:": "๐Ÿญ", - ":factory_worker:": "๐Ÿง‘โ€๐Ÿญ", - ":fairy:": "๐Ÿงš", - ":fairy_man:": "๐Ÿงšโ€โ™‚", - ":fairy_woman:": "๐Ÿงšโ€โ™€", - ":falafel:": "๐Ÿง†", - ":falkland_islands:": "๐Ÿ‡ซโ€๐Ÿ‡ฐ", - ":fallen_leaf:": "๐Ÿ‚", - ":family:": "๐Ÿ‘ช", - ":family_man_boy:": "๐Ÿ‘จโ€๐Ÿ‘ฆ", - ":family_man_boy_boy:": "๐Ÿ‘จโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ", - ":family_man_girl:": "๐Ÿ‘จโ€๐Ÿ‘ง", - ":family_man_girl_boy:": "๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ", - ":family_man_girl_girl:": "๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง", - ":family_man_man_boy:": "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆ", - ":family_man_man_boy_boy:": "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ", - ":family_man_man_girl:": "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ง", - ":family_man_man_girl_boy:": "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ", - ":family_man_man_girl_girl:": "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง", - ":family_man_woman_boy:": "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ", - ":family_man_woman_boy_boy:": "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ", - ":family_man_woman_girl:": "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง", - ":family_man_woman_girl_boy:": "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ", - ":family_man_woman_girl_girl:": "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง", - ":family_woman_boy:": "๐Ÿ‘ฉโ€๐Ÿ‘ฆ", - ":family_woman_boy_boy:": "๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ", - ":family_woman_girl:": "๐Ÿ‘ฉโ€๐Ÿ‘ง", - ":family_woman_girl_boy:": "๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ", - ":family_woman_girl_girl:": "๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง", - ":family_woman_woman_boy:": "๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ", - ":family_woman_woman_boy_boy:": "๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ", - ":family_woman_woman_girl:": "๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ง", - ":family_woman_woman_girl_boy:": "๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ", - ":family_woman_woman_girl_girl:": "๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง", - ":farmer:": "๐Ÿง‘โ€๐ŸŒพ", - ":faroe_islands:": "๐Ÿ‡ซโ€๐Ÿ‡ด", - ":fast_forward:": "โฉ", - ":fax:": "๐Ÿ“ ", - ":fearful:": "๐Ÿ˜จ", - ":feather:": "๐Ÿชถ", - ":feet:": "๐Ÿพ", - ":female_detective:": "๐Ÿ•ตโ€โ™€", - ":female_sign:": "โ™€", - ":ferris_wheel:": "๐ŸŽก", - ":ferry:": "โ›ด", - ":field_hockey:": "๐Ÿ‘", - ":fiji:": "๐Ÿ‡ซโ€๐Ÿ‡ฏ", - ":file_cabinet:": "๐Ÿ—„", - ":file_folder:": "๐Ÿ“", - ":film_projector:": "๐Ÿ“ฝ", - ":film_strip:": "๐ŸŽž", - ":finland:": "๐Ÿ‡ซโ€๐Ÿ‡ฎ", - ":fire:": "๐Ÿ”ฅ", - ":fire_engine:": "๐Ÿš’", - ":fire_extinguisher:": "๐Ÿงฏ", - ":firecracker:": "๐Ÿงจ", - ":firefighter:": "๐Ÿง‘โ€๐Ÿš’", - ":fireworks:": "๐ŸŽ†", - ":first_quarter_moon:": "๐ŸŒ“", - ":first_quarter_moon_with_face:": "๐ŸŒ›", - ":fish:": "๐ŸŸ", - ":fish_cake:": "๐Ÿฅ", - ":fishing_pole_and_fish:": "๐ŸŽฃ", - ":fist:": "โœŠ", - ":fist_left:": "๐Ÿค›", - ":fist_oncoming:": "๐Ÿ‘Š", - ":fist_raised:": "โœŠ", - ":fist_right:": "๐Ÿคœ", - ":five:": "5โ€โƒฃ", - ":flags:": "๐ŸŽ", - ":flamingo:": "๐Ÿฆฉ", - ":flashlight:": "๐Ÿ”ฆ", - ":flat_shoe:": "๐Ÿฅฟ", - ":flatbread:": "๐Ÿซ“", - ":fleur_de_lis:": "โšœ", - ":flight_arrival:": "๐Ÿ›ฌ", - ":flight_departure:": "๐Ÿ›ซ", - ":flipper:": "๐Ÿฌ", - ":floppy_disk:": "๐Ÿ’พ", - ":flower_playing_cards:": "๐ŸŽด", - ":flushed:": "๐Ÿ˜ณ", - ":fly:": "๐Ÿชฐ", - ":flying_disc:": "๐Ÿฅ", - ":flying_saucer:": "๐Ÿ›ธ", - ":fog:": "๐ŸŒซ", - ":foggy:": "๐ŸŒ", - ":fondue:": "๐Ÿซ•", - ":foot:": "๐Ÿฆถ", - ":football:": "๐Ÿˆ", - ":footprints:": "๐Ÿ‘ฃ", - ":fork_and_knife:": "๐Ÿด", - ":fortune_cookie:": "๐Ÿฅ ", - ":fountain:": "โ›ฒ", - ":fountain_pen:": "๐Ÿ–‹", - ":four:": "4โ€โƒฃ", - ":four_leaf_clover:": "๐Ÿ€", - ":fox_face:": "๐ŸฆŠ", - ":fr:": "๐Ÿ‡ซโ€๐Ÿ‡ท", - ":framed_picture:": "๐Ÿ–ผ", - ":free:": "๐Ÿ†“", - ":french_guiana:": "๐Ÿ‡ฌโ€๐Ÿ‡ซ", - ":french_polynesia:": "๐Ÿ‡ตโ€๐Ÿ‡ซ", - ":french_southern_territories:": "๐Ÿ‡นโ€๐Ÿ‡ซ", - ":fried_egg:": "๐Ÿณ", - ":fried_shrimp:": "๐Ÿค", - ":fries:": "๐ŸŸ", - ":frog:": "๐Ÿธ", - ":frowning:": "๐Ÿ˜ฆ", - ":frowning_face:": "โ˜น", - ":frowning_man:": "๐Ÿ™โ€โ™‚", - ":frowning_person:": "๐Ÿ™", - ":frowning_woman:": "๐Ÿ™โ€โ™€", - ":fu:": "๐Ÿ–•", - ":fuelpump:": "โ›ฝ", - ":full_moon:": "๐ŸŒ•", - ":full_moon_with_face:": "๐ŸŒ", - ":funeral_urn:": "โšฑ", - ":gabon:": "๐Ÿ‡ฌโ€๐Ÿ‡ฆ", - ":gambia:": "๐Ÿ‡ฌโ€๐Ÿ‡ฒ", - ":game_die:": "๐ŸŽฒ", - ":garlic:": "๐Ÿง„", - ":gb:": "๐Ÿ‡ฌโ€๐Ÿ‡ง", - ":gear:": "โš™", - ":gem:": "๐Ÿ’Ž", - ":gemini:": "โ™Š", - ":genie:": "๐Ÿงž", - ":genie_man:": "๐Ÿงžโ€โ™‚", - ":genie_woman:": "๐Ÿงžโ€โ™€", - ":georgia:": "๐Ÿ‡ฌโ€๐Ÿ‡ช", - ":ghana:": "๐Ÿ‡ฌโ€๐Ÿ‡ญ", - ":ghost:": "๐Ÿ‘ป", - ":gibraltar:": "๐Ÿ‡ฌโ€๐Ÿ‡ฎ", - ":gift:": "๐ŸŽ", - ":gift_heart:": "๐Ÿ’", - ":giraffe:": "๐Ÿฆ’", - ":girl:": "๐Ÿ‘ง", - ":globe_with_meridians:": "๐ŸŒ", - ":gloves:": "๐Ÿงค", - ":goal_net:": "๐Ÿฅ…", - ":goat:": "๐Ÿ", - ":goggles:": "๐Ÿฅฝ", - ":golf:": "โ›ณ", - ":golfing:": "๐ŸŒ", - ":golfing_man:": "๐ŸŒโ€โ™‚", - ":golfing_woman:": "๐ŸŒโ€โ™€", - ":gorilla:": "๐Ÿฆ", - ":grapes:": "๐Ÿ‡", - ":greece:": "๐Ÿ‡ฌโ€๐Ÿ‡ท", - ":green_apple:": "๐Ÿ", - ":green_book:": "๐Ÿ“—", - ":green_circle:": "๐ŸŸข", - ":green_heart:": "๐Ÿ’š", - ":green_salad:": "๐Ÿฅ—", - ":green_square:": "๐ŸŸฉ", - ":greenland:": "๐Ÿ‡ฌโ€๐Ÿ‡ฑ", - ":grenada:": "๐Ÿ‡ฌโ€๐Ÿ‡ฉ", - ":grey_exclamation:": "โ•", - ":grey_question:": "โ”", - ":grimacing:": "๐Ÿ˜ฌ", - ":grin:": "๐Ÿ˜", - ":grinning:": "๐Ÿ˜€", - ":guadeloupe:": "๐Ÿ‡ฌโ€๐Ÿ‡ต", - ":guam:": "๐Ÿ‡ฌโ€๐Ÿ‡บ", - ":guard:": "๐Ÿ’‚", - ":guardsman:": "๐Ÿ’‚โ€โ™‚", - ":guardswoman:": "๐Ÿ’‚โ€โ™€", - ":guatemala:": "๐Ÿ‡ฌโ€๐Ÿ‡น", - ":guernsey:": "๐Ÿ‡ฌโ€๐Ÿ‡ฌ", - ":guide_dog:": "๐Ÿฆฎ", - ":guinea:": "๐Ÿ‡ฌโ€๐Ÿ‡ณ", - ":guinea_bissau:": "๐Ÿ‡ฌโ€๐Ÿ‡ผ", - ":guitar:": "๐ŸŽธ", - ":gun:": "๐Ÿ”ซ", - ":guyana:": "๐Ÿ‡ฌโ€๐Ÿ‡พ", - ":haircut:": "๐Ÿ’‡", - ":haircut_man:": "๐Ÿ’‡โ€โ™‚", - ":haircut_woman:": "๐Ÿ’‡โ€โ™€", - ":haiti:": "๐Ÿ‡ญโ€๐Ÿ‡น", - ":hamburger:": "๐Ÿ”", - ":hammer:": "๐Ÿ”จ", - ":hammer_and_pick:": "โš’", - ":hammer_and_wrench:": "๐Ÿ› ", - ":hamster:": "๐Ÿน", - ":hand:": "โœ‹", - ":hand_over_mouth:": "๐Ÿคญ", - ":handbag:": "๐Ÿ‘œ", - ":handball_person:": "๐Ÿคพ", - ":handshake:": "๐Ÿค", - ":hankey:": "๐Ÿ’ฉ", - ":hash:": "#โ€โƒฃ", - ":hatched_chick:": "๐Ÿฅ", - ":hatching_chick:": "๐Ÿฃ", - ":headphones:": "๐ŸŽง", - ":headstone:": "๐Ÿชฆ", - ":health_worker:": "๐Ÿง‘โ€โš•", - ":hear_no_evil:": "๐Ÿ™‰", - ":heard_mcdonald_islands:": "๐Ÿ‡ญโ€๐Ÿ‡ฒ", - ":heart:": "โค๏ธ", - ":heart_decoration:": "๐Ÿ’Ÿ", - ":heart_eyes:": "๐Ÿ˜", - ":heart_eyes_cat:": "๐Ÿ˜ป", - ":heart_on_fire:": "โคโ€๐Ÿ”ฅ", - ":heartbeat:": "๐Ÿ’“", - ":heartpulse:": "๐Ÿ’—", - ":hearts:": "โ™ฅ", - ":heavy_check_mark:": "โœ”", - ":heavy_division_sign:": "โž—", - ":heavy_dollar_sign:": "๐Ÿ’ฒ", - ":heavy_exclamation_mark:": "โ—", - ":heavy_heart_exclamation:": "โฃ", - ":heavy_minus_sign:": "โž–", - ":heavy_multiplication_x:": "โœ–", - ":heavy_plus_sign:": "โž•", - ":hedgehog:": "๐Ÿฆ”", - ":helicopter:": "๐Ÿš", - ":herb:": "๐ŸŒฟ", - ":hibiscus:": "๐ŸŒบ", - ":high_brightness:": "๐Ÿ”†", - ":high_heel:": "๐Ÿ‘ ", - ":hiking_boot:": "๐Ÿฅพ", - ":hindu_temple:": "๐Ÿ›•", - ":hippopotamus:": "๐Ÿฆ›", - ":hocho:": "๐Ÿ”ช", - ":hole:": "๐Ÿ•ณ", - ":honduras:": "๐Ÿ‡ญโ€๐Ÿ‡ณ", - ":honey_pot:": "๐Ÿฏ", - ":honeybee:": "๐Ÿ", - ":hong_kong:": "๐Ÿ‡ญโ€๐Ÿ‡ฐ", - ":hook:": "๐Ÿช", - ":horse:": "๐Ÿด", - ":horse_racing:": "๐Ÿ‡", - ":hospital:": "๐Ÿฅ", - ":hot_face:": "๐Ÿฅต", - ":hot_pepper:": "๐ŸŒถ", - ":hotdog:": "๐ŸŒญ", - ":hotel:": "๐Ÿจ", - ":hotsprings:": "โ™จ", - ":hourglass:": "โŒ›", - ":hourglass_flowing_sand:": "โณ", - ":house:": "๐Ÿ ", - ":house_with_garden:": "๐Ÿก", - ":houses:": "๐Ÿ˜", - ":hugs:": "๐Ÿค—", - ":hungary:": "๐Ÿ‡ญโ€๐Ÿ‡บ", - ":hushed:": "๐Ÿ˜ฏ", - ":hut:": "๐Ÿ›–", - ":ice_cream:": "๐Ÿจ", - ":ice_cube:": "๐ŸงŠ", - ":ice_hockey:": "๐Ÿ’", - ":ice_skate:": "โ›ธ", - ":icecream:": "๐Ÿฆ", - ":iceland:": "๐Ÿ‡ฎโ€๐Ÿ‡ธ", - ":id:": "๐Ÿ†”", - ":ideograph_advantage:": "๐Ÿ‰", - ":imp:": "๐Ÿ‘ฟ", - ":inbox_tray:": "๐Ÿ“ฅ", - ":incoming_envelope:": "๐Ÿ“จ", - ":india:": "๐Ÿ‡ฎโ€๐Ÿ‡ณ", - ":indonesia:": "๐Ÿ‡ฎโ€๐Ÿ‡ฉ", - ":infinity:": "โ™พ", - ":information_desk_person:": "๐Ÿ’", - ":information_source:": "โ„น", - ":innocent:": "๐Ÿ˜‡", - ":interrobang:": "โ‰", - ":iphone:": "๐Ÿ“ฑ", - ":iran:": "๐Ÿ‡ฎโ€๐Ÿ‡ท", - ":iraq:": "๐Ÿ‡ฎโ€๐Ÿ‡ถ", - ":ireland:": "๐Ÿ‡ฎโ€๐Ÿ‡ช", - ":isle_of_man:": "๐Ÿ‡ฎโ€๐Ÿ‡ฒ", - ":israel:": "๐Ÿ‡ฎโ€๐Ÿ‡ฑ", - ":it:": "๐Ÿ‡ฎโ€๐Ÿ‡น", - ":izakaya_lantern:": "๐Ÿฎ", - ":jack_o_lantern:": "๐ŸŽƒ", - ":jamaica:": "๐Ÿ‡ฏโ€๐Ÿ‡ฒ", - ":japan:": "๐Ÿ—พ", - ":japanese_castle:": "๐Ÿฏ", - ":japanese_goblin:": "๐Ÿ‘บ", - ":japanese_ogre:": "๐Ÿ‘น", - ":jeans:": "๐Ÿ‘–", - ":jersey:": "๐Ÿ‡ฏโ€๐Ÿ‡ช", - ":jigsaw:": "๐Ÿงฉ", - ":jordan:": "๐Ÿ‡ฏโ€๐Ÿ‡ด", - ":joy:": "๐Ÿ˜‚", - ":joy_cat:": "๐Ÿ˜น", - ":joystick:": "๐Ÿ•น", - ":jp:": "๐Ÿ‡ฏโ€๐Ÿ‡ต", - ":judge:": "๐Ÿง‘โ€โš–", - ":juggling_person:": "๐Ÿคน", - ":kaaba:": "๐Ÿ•‹", - ":kangaroo:": "๐Ÿฆ˜", - ":kazakhstan:": "๐Ÿ‡ฐโ€๐Ÿ‡ฟ", - ":kenya:": "๐Ÿ‡ฐโ€๐Ÿ‡ช", - ":key:": "๐Ÿ”‘", - ":keyboard:": "โŒจ", - ":keycap_ten:": "๐Ÿ”Ÿ", - ":kick_scooter:": "๐Ÿ›ด", - ":kimono:": "๐Ÿ‘˜", - ":kiribati:": "๐Ÿ‡ฐโ€๐Ÿ‡ฎ", - ":kiss:": "๐Ÿ’‹", - ":kissing:": "๐Ÿ˜—", - ":kissing_cat:": "๐Ÿ˜ฝ", - ":kissing_closed_eyes:": "๐Ÿ˜š", - ":kissing_heart:": "๐Ÿ˜˜", - ":kissing_smiling_eyes:": "๐Ÿ˜™", - ":kite:": "๐Ÿช", - ":kiwi_fruit:": "๐Ÿฅ", - ":kneeling_man:": "๐ŸงŽโ€โ™‚", - ":kneeling_person:": "๐ŸงŽ", - ":kneeling_woman:": "๐ŸงŽโ€โ™€", - ":knife:": "๐Ÿ”ช", - ":knot:": "๐Ÿชข", - ":koala:": "๐Ÿจ", - ":koko:": "๐Ÿˆ", - ":kosovo:": "๐Ÿ‡ฝโ€๐Ÿ‡ฐ", - ":kr:": "๐Ÿ‡ฐโ€๐Ÿ‡ท", - ":kuwait:": "๐Ÿ‡ฐโ€๐Ÿ‡ผ", - ":kyrgyzstan:": "๐Ÿ‡ฐโ€๐Ÿ‡ฌ", - ":lab_coat:": "๐Ÿฅผ", - ":label:": "๐Ÿท", - ":lacrosse:": "๐Ÿฅ", - ":ladder:": "๐Ÿชœ", - ":lady_beetle:": "๐Ÿž", - ":lantern:": "๐Ÿฎ", - ":laos:": "๐Ÿ‡ฑโ€๐Ÿ‡ฆ", - ":large_blue_circle:": "๐Ÿ”ต", - ":large_blue_diamond:": "๐Ÿ”ท", - ":large_orange_diamond:": "๐Ÿ”ถ", - ":last_quarter_moon:": "๐ŸŒ—", - ":last_quarter_moon_with_face:": "๐ŸŒœ", - ":latin_cross:": "โœ", - ":latvia:": "๐Ÿ‡ฑโ€๐Ÿ‡ป", - ":laughing:": "๐Ÿ˜†", - ":leafy_green:": "๐Ÿฅฌ", - ":leaves:": "๐Ÿƒ", - ":lebanon:": "๐Ÿ‡ฑโ€๐Ÿ‡ง", - ":ledger:": "๐Ÿ“’", - ":left_luggage:": "๐Ÿ›…", - ":left_right_arrow:": "โ†”", - ":left_speech_bubble:": "๐Ÿ—จ", - ":leftwards_arrow_with_hook:": "โ†ฉ", - ":leg:": "๐Ÿฆต", - ":lemon:": "๐Ÿ‹", - ":leo:": "โ™Œ", - ":leopard:": "๐Ÿ†", - ":lesotho:": "๐Ÿ‡ฑโ€๐Ÿ‡ธ", - ":level_slider:": "๐ŸŽš", - ":liberia:": "๐Ÿ‡ฑโ€๐Ÿ‡ท", - ":libra:": "โ™Ž", - ":libya:": "๐Ÿ‡ฑโ€๐Ÿ‡พ", - ":liechtenstein:": "๐Ÿ‡ฑโ€๐Ÿ‡ฎ", - ":light_rail:": "๐Ÿšˆ", - ":link:": "๐Ÿ”—", - ":lion:": "๐Ÿฆ", - ":lips:": "๐Ÿ‘„", - ":lipstick:": "๐Ÿ’„", - ":lithuania:": "๐Ÿ‡ฑโ€๐Ÿ‡น", - ":lizard:": "๐ŸฆŽ", - ":llama:": "๐Ÿฆ™", - ":lobster:": "๐Ÿฆž", - ":lock:": "๐Ÿ”’", - ":lock_with_ink_pen:": "๐Ÿ”", - ":lollipop:": "๐Ÿญ", - ":long_drum:": "๐Ÿช˜", - ":loop:": "โžฟ", - ":lotion_bottle:": "๐Ÿงด", - ":lotus_position:": "๐Ÿง˜", - ":lotus_position_man:": "๐Ÿง˜โ€โ™‚", - ":lotus_position_woman:": "๐Ÿง˜โ€โ™€", - ":loud_sound:": "๐Ÿ”Š", - ":loudspeaker:": "๐Ÿ“ข", - ":love_hotel:": "๐Ÿฉ", - ":love_letter:": "๐Ÿ’Œ", - ":love_you_gesture:": "๐ŸคŸ", - ":low_brightness:": "๐Ÿ”…", - ":luggage:": "๐Ÿงณ", - ":lungs:": "๐Ÿซ", - ":luxembourg:": "๐Ÿ‡ฑโ€๐Ÿ‡บ", - ":lying_face:": "๐Ÿคฅ", - ":m:": "โ“‚", - ":macau:": "๐Ÿ‡ฒโ€๐Ÿ‡ด", - ":macedonia:": "๐Ÿ‡ฒโ€๐Ÿ‡ฐ", - ":madagascar:": "๐Ÿ‡ฒโ€๐Ÿ‡ฌ", - ":mag:": "๐Ÿ”", - ":mag_right:": "๐Ÿ”Ž", - ":mage:": "๐Ÿง™", - ":mage_man:": "๐Ÿง™โ€โ™‚", - ":mage_woman:": "๐Ÿง™โ€โ™€", - ":magic_wand:": "๐Ÿช„", - ":magnet:": "๐Ÿงฒ", - ":mahjong:": "๐Ÿ€„", - ":mailbox:": "๐Ÿ“ซ", - ":mailbox_closed:": "๐Ÿ“ช", - ":mailbox_with_mail:": "๐Ÿ“ฌ", - ":mailbox_with_no_mail:": "๐Ÿ“ญ", - ":malawi:": "๐Ÿ‡ฒโ€๐Ÿ‡ผ", - ":malaysia:": "๐Ÿ‡ฒโ€๐Ÿ‡พ", - ":maldives:": "๐Ÿ‡ฒโ€๐Ÿ‡ป", - ":male_detective:": "๐Ÿ•ตโ€โ™‚", - ":male_sign:": "โ™‚", - ":mali:": "๐Ÿ‡ฒโ€๐Ÿ‡ฑ", - ":malta:": "๐Ÿ‡ฒโ€๐Ÿ‡น", - ":mammoth:": "๐Ÿฆฃ", - ":man:": "๐Ÿ‘จ", - ":man_artist:": "๐Ÿ‘จโ€๐ŸŽจ", - ":man_astronaut:": "๐Ÿ‘จโ€๐Ÿš€", - ":man_beard:": "๐Ÿง”โ€โ™‚", - ":man_cartwheeling:": "๐Ÿคธโ€โ™‚", - ":man_cook:": "๐Ÿ‘จโ€๐Ÿณ", - ":man_dancing:": "๐Ÿ•บ", - ":man_facepalming:": "๐Ÿคฆโ€โ™‚", - ":man_factory_worker:": "๐Ÿ‘จโ€๐Ÿญ", - ":man_farmer:": "๐Ÿ‘จโ€๐ŸŒพ", - ":man_feeding_baby:": "๐Ÿ‘จโ€๐Ÿผ", - ":man_firefighter:": "๐Ÿ‘จโ€๐Ÿš’", - ":man_health_worker:": "๐Ÿ‘จโ€โš•", - ":man_in_manual_wheelchair:": "๐Ÿ‘จโ€๐Ÿฆฝ", - ":man_in_motorized_wheelchair:": "๐Ÿ‘จโ€๐Ÿฆผ", - ":man_in_tuxedo:": "๐Ÿคตโ€โ™‚", - ":man_judge:": "๐Ÿ‘จโ€โš–", - ":man_juggling:": "๐Ÿคนโ€โ™‚", - ":man_mechanic:": "๐Ÿ‘จโ€๐Ÿ”ง", - ":man_office_worker:": "๐Ÿ‘จโ€๐Ÿ’ผ", - ":man_pilot:": "๐Ÿ‘จโ€โœˆ", - ":man_playing_handball:": "๐Ÿคพโ€โ™‚", - ":man_playing_water_polo:": "๐Ÿคฝโ€โ™‚", - ":man_scientist:": "๐Ÿ‘จโ€๐Ÿ”ฌ", - ":man_shrugging:": "๐Ÿคทโ€โ™‚", - ":man_singer:": "๐Ÿ‘จโ€๐ŸŽค", - ":man_student:": "๐Ÿ‘จโ€๐ŸŽ“", - ":man_teacher:": "๐Ÿ‘จโ€๐Ÿซ", - ":man_technologist:": "๐Ÿ‘จโ€๐Ÿ’ป", - ":man_with_gua_pi_mao:": "๐Ÿ‘ฒ", - ":man_with_probing_cane:": "๐Ÿ‘จโ€๐Ÿฆฏ", - ":man_with_turban:": "๐Ÿ‘ณโ€โ™‚", - ":man_with_veil:": "๐Ÿ‘ฐโ€โ™‚", - ":mandarin:": "๐ŸŠ", - ":mango:": "๐Ÿฅญ", - ":mans_shoe:": "๐Ÿ‘ž", - ":mantelpiece_clock:": "๐Ÿ•ฐ", - ":manual_wheelchair:": "๐Ÿฆฝ", - ":maple_leaf:": "๐Ÿ", - ":marshall_islands:": "๐Ÿ‡ฒโ€๐Ÿ‡ญ", - ":martial_arts_uniform:": "๐Ÿฅ‹", - ":martinique:": "๐Ÿ‡ฒโ€๐Ÿ‡ถ", - ":mask:": "๐Ÿ˜ท", - ":massage:": "๐Ÿ’†", - ":massage_man:": "๐Ÿ’†โ€โ™‚", - ":massage_woman:": "๐Ÿ’†โ€โ™€", - ":mate:": "๐Ÿง‰", - ":mauritania:": "๐Ÿ‡ฒโ€๐Ÿ‡ท", - ":mauritius:": "๐Ÿ‡ฒโ€๐Ÿ‡บ", - ":mayotte:": "๐Ÿ‡พโ€๐Ÿ‡น", - ":meat_on_bone:": "๐Ÿ–", - ":mechanic:": "๐Ÿง‘โ€๐Ÿ”ง", - ":mechanical_arm:": "๐Ÿฆพ", - ":mechanical_leg:": "๐Ÿฆฟ", - ":medal_military:": "๐ŸŽ–", - ":medal_sports:": "๐Ÿ…", - ":medical_symbol:": "โš•", - ":mega:": "๐Ÿ“ฃ", - ":melon:": "๐Ÿˆ", - ":memo:": "๐Ÿ“", - ":men_wrestling:": "๐Ÿคผโ€โ™‚", - ":mending_heart:": "โคโ€๐Ÿฉน", - ":menorah:": "๐Ÿ•Ž", - ":mens:": "๐Ÿšน", - ":mermaid:": "๐Ÿงœโ€โ™€", - ":merman:": "๐Ÿงœโ€โ™‚", - ":merperson:": "๐Ÿงœ", - ":metal:": "๐Ÿค˜", - ":metro:": "๐Ÿš‡", - ":mexico:": "๐Ÿ‡ฒโ€๐Ÿ‡ฝ", - ":microbe:": "๐Ÿฆ ", - ":micronesia:": "๐Ÿ‡ซโ€๐Ÿ‡ฒ", - ":microphone:": "๐ŸŽค", - ":microscope:": "๐Ÿ”ฌ", - ":middle_finger:": "๐Ÿ–•", - ":military_helmet:": "๐Ÿช–", - ":milk_glass:": "๐Ÿฅ›", - ":milky_way:": "๐ŸŒŒ", - ":minibus:": "๐Ÿš", - ":minidisc:": "๐Ÿ’ฝ", - ":mirror:": "๐Ÿชž", - ":mobile_phone_off:": "๐Ÿ“ด", - ":moldova:": "๐Ÿ‡ฒโ€๐Ÿ‡ฉ", - ":monaco:": "๐Ÿ‡ฒโ€๐Ÿ‡จ", - ":money_mouth_face:": "๐Ÿค‘", - ":money_with_wings:": "๐Ÿ’ธ", - ":moneybag:": "๐Ÿ’ฐ", - ":mongolia:": "๐Ÿ‡ฒโ€๐Ÿ‡ณ", - ":monkey:": "๐Ÿ’", - ":monkey_face:": "๐Ÿต", - ":monocle_face:": "๐Ÿง", - ":monorail:": "๐Ÿš", - ":montenegro:": "๐Ÿ‡ฒโ€๐Ÿ‡ช", - ":montserrat:": "๐Ÿ‡ฒโ€๐Ÿ‡ธ", - ":moon:": "๐ŸŒ”", - ":moon_cake:": "๐Ÿฅฎ", - ":morocco:": "๐Ÿ‡ฒโ€๐Ÿ‡ฆ", - ":mortar_board:": "๐ŸŽ“", - ":mosque:": "๐Ÿ•Œ", - ":mosquito:": "๐ŸฆŸ", - ":motor_boat:": "๐Ÿ›ฅ", - ":motor_scooter:": "๐Ÿ›ต", - ":motorcycle:": "๐Ÿ", - ":motorized_wheelchair:": "๐Ÿฆผ", - ":motorway:": "๐Ÿ›ฃ", - ":mount_fuji:": "๐Ÿ—ป", - ":mountain:": "โ›ฐ", - ":mountain_bicyclist:": "๐Ÿšต", - ":mountain_biking_man:": "๐Ÿšตโ€โ™‚", - ":mountain_biking_woman:": "๐Ÿšตโ€โ™€", - ":mountain_cableway:": "๐Ÿš ", - ":mountain_railway:": "๐Ÿšž", - ":mountain_snow:": "๐Ÿ”", - ":mouse:": "๐Ÿญ", - ":mouse2:": "๐Ÿ", - ":mouse_trap:": "๐Ÿชค", - ":movie_camera:": "๐ŸŽฅ", - ":moyai:": "๐Ÿ—ฟ", - ":mozambique:": "๐Ÿ‡ฒโ€๐Ÿ‡ฟ", - ":mrs_claus:": "๐Ÿคถ", - ":muscle:": "๐Ÿ’ช", - ":mushroom:": "๐Ÿ„", - ":musical_keyboard:": "๐ŸŽน", - ":musical_note:": "๐ŸŽต", - ":musical_score:": "๐ŸŽผ", - ":mute:": "๐Ÿ”‡", - ":mx_claus:": "๐Ÿง‘โ€๐ŸŽ„", - ":myanmar:": "๐Ÿ‡ฒโ€๐Ÿ‡ฒ", - ":nail_care:": "๐Ÿ’…", - ":name_badge:": "๐Ÿ“›", - ":namibia:": "๐Ÿ‡ณโ€๐Ÿ‡ฆ", - ":national_park:": "๐Ÿž", - ":nauru:": "๐Ÿ‡ณโ€๐Ÿ‡ท", - ":nauseated_face:": "๐Ÿคข", - ":nazar_amulet:": "๐Ÿงฟ", - ":necktie:": "๐Ÿ‘”", - ":negative_squared_cross_mark:": "โŽ", - ":nepal:": "๐Ÿ‡ณโ€๐Ÿ‡ต", - ":nerd_face:": "๐Ÿค“", - ":nesting_dolls:": "๐Ÿช†", - ":netherlands:": "๐Ÿ‡ณโ€๐Ÿ‡ฑ", - ":neutral_face:": "๐Ÿ˜", - ":new:": "๐Ÿ†•", - ":new_caledonia:": "๐Ÿ‡ณโ€๐Ÿ‡จ", - ":new_moon:": "๐ŸŒ‘", - ":new_moon_with_face:": "๐ŸŒš", - ":new_zealand:": "๐Ÿ‡ณโ€๐Ÿ‡ฟ", - ":newspaper:": "๐Ÿ“ฐ", - ":newspaper_roll:": "๐Ÿ—ž", - ":next_track_button:": "โญ", - ":ng:": "๐Ÿ†–", - ":ng_man:": "๐Ÿ™…โ€โ™‚", - ":ng_woman:": "๐Ÿ™…โ€โ™€", - ":nicaragua:": "๐Ÿ‡ณโ€๐Ÿ‡ฎ", - ":niger:": "๐Ÿ‡ณโ€๐Ÿ‡ช", - ":nigeria:": "๐Ÿ‡ณโ€๐Ÿ‡ฌ", - ":night_with_stars:": "๐ŸŒƒ", - ":nine:": "9โ€โƒฃ", - ":ninja:": "๐Ÿฅท", - ":niue:": "๐Ÿ‡ณโ€๐Ÿ‡บ", - ":no_bell:": "๐Ÿ”•", - ":no_bicycles:": "๐Ÿšณ", - ":no_entry:": "โ›”", - ":no_entry_sign:": "๐Ÿšซ", - ":no_good:": "๐Ÿ™…", - ":no_good_man:": "๐Ÿ™…โ€โ™‚", - ":no_good_woman:": "๐Ÿ™…โ€โ™€", - ":no_mobile_phones:": "๐Ÿ“ต", - ":no_mouth:": "๐Ÿ˜ถ", - ":no_pedestrians:": "๐Ÿšท", - ":no_smoking:": "๐Ÿšญ", - ":non-potable_water:": "๐Ÿšฑ", - ":norfolk_island:": "๐Ÿ‡ณโ€๐Ÿ‡ซ", - ":north_korea:": "๐Ÿ‡ฐโ€๐Ÿ‡ต", - ":northern_mariana_islands:": "๐Ÿ‡ฒโ€๐Ÿ‡ต", - ":norway:": "๐Ÿ‡ณโ€๐Ÿ‡ด", - ":nose:": "๐Ÿ‘ƒ", - ":notebook:": "๐Ÿ““", - ":notebook_with_decorative_cover:": "๐Ÿ“”", - ":notes:": "๐ŸŽถ", - ":nut_and_bolt:": "๐Ÿ”ฉ", - ":o:": "โญ•", - ":o2:": "๐Ÿ…พ", - ":ocean:": "๐ŸŒŠ", - ":octopus:": "๐Ÿ™", - ":oden:": "๐Ÿข", - ":office:": "๐Ÿข", - ":office_worker:": "๐Ÿง‘โ€๐Ÿ’ผ", - ":oil_drum:": "๐Ÿ›ข", - ":ok:": "๐Ÿ†—", - ":ok_hand:": "๐Ÿ‘Œ", - ":ok_man:": "๐Ÿ™†โ€โ™‚", - ":ok_person:": "๐Ÿ™†", - ":ok_woman:": "๐Ÿ™†โ€โ™€", - ":old_key:": "๐Ÿ—", - ":older_adult:": "๐Ÿง“", - ":older_man:": "๐Ÿ‘ด", - ":older_woman:": "๐Ÿ‘ต", - ":olive:": "๐Ÿซ’", - ":om:": "๐Ÿ•‰", - ":oman:": "๐Ÿ‡ดโ€๐Ÿ‡ฒ", - ":on:": "๐Ÿ”›", - ":oncoming_automobile:": "๐Ÿš˜", - ":oncoming_bus:": "๐Ÿš", - ":oncoming_police_car:": "๐Ÿš”", - ":oncoming_taxi:": "๐Ÿš–", - ":one:": "1โ€โƒฃ", - ":one_piece_swimsuit:": "๐Ÿฉฑ", - ":onion:": "๐Ÿง…", - ":open_book:": "๐Ÿ“–", - ":open_file_folder:": "๐Ÿ“‚", - ":open_hands:": "๐Ÿ‘", - ":open_mouth:": "๐Ÿ˜ฎ", - ":open_umbrella:": "โ˜‚", - ":ophiuchus:": "โ›Ž", - ":orange:": "๐ŸŠ", - ":orange_book:": "๐Ÿ“™", - ":orange_circle:": "๐ŸŸ ", - ":orange_heart:": "๐Ÿงก", - ":orange_square:": "๐ŸŸง", - ":orangutan:": "๐Ÿฆง", - ":orthodox_cross:": "โ˜ฆ", - ":otter:": "๐Ÿฆฆ", - ":outbox_tray:": "๐Ÿ“ค", - ":owl:": "๐Ÿฆ‰", - ":ox:": "๐Ÿ‚", - ":oyster:": "๐Ÿฆช", - ":package:": "๐Ÿ“ฆ", - ":page_facing_up:": "๐Ÿ“„", - ":page_with_curl:": "๐Ÿ“ƒ", - ":pager:": "๐Ÿ“Ÿ", - ":paintbrush:": "๐Ÿ–Œ", - ":pakistan:": "๐Ÿ‡ตโ€๐Ÿ‡ฐ", - ":palau:": "๐Ÿ‡ตโ€๐Ÿ‡ผ", - ":palestinian_territories:": "๐Ÿ‡ตโ€๐Ÿ‡ธ", - ":palm_tree:": "๐ŸŒด", - ":palms_up_together:": "๐Ÿคฒ", - ":panama:": "๐Ÿ‡ตโ€๐Ÿ‡ฆ", - ":pancakes:": "๐Ÿฅž", - ":panda_face:": "๐Ÿผ", - ":paperclip:": "๐Ÿ“Ž", - ":paperclips:": "๐Ÿ–‡", - ":papua_new_guinea:": "๐Ÿ‡ตโ€๐Ÿ‡ฌ", - ":parachute:": "๐Ÿช‚", - ":paraguay:": "๐Ÿ‡ตโ€๐Ÿ‡พ", - ":parasol_on_ground:": "โ›ฑ", - ":parking:": "๐Ÿ…ฟ", - ":parrot:": "๐Ÿฆœ", - ":part_alternation_mark:": "ใ€ฝ", - ":partly_sunny:": "โ›…", - ":partying_face:": "๐Ÿฅณ", - ":passenger_ship:": "๐Ÿ›ณ", - ":passport_control:": "๐Ÿ›‚", - ":pause_button:": "โธ", - ":paw_prints:": "๐Ÿพ", - ":peace_symbol:": "โ˜ฎ", - ":peach:": "๐Ÿ‘", - ":peacock:": "๐Ÿฆš", - ":peanuts:": "๐Ÿฅœ", - ":pear:": "๐Ÿ", - ":pen:": "๐Ÿ–Š", - ":pencil:": "๐Ÿ“", - ":pencil2:": "โœ", - ":penguin:": "๐Ÿง", - ":pensive:": "๐Ÿ˜”", - ":people_holding_hands:": "๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘", - ":people_hugging:": "๐Ÿซ‚", - ":performing_arts:": "๐ŸŽญ", - ":persevere:": "๐Ÿ˜ฃ", - ":person_bald:": "๐Ÿง‘โ€๐Ÿฆฒ", - ":person_curly_hair:": "๐Ÿง‘โ€๐Ÿฆฑ", - ":person_feeding_baby:": "๐Ÿง‘โ€๐Ÿผ", - ":person_fencing:": "๐Ÿคบ", - ":person_in_manual_wheelchair:": "๐Ÿง‘โ€๐Ÿฆฝ", - ":person_in_motorized_wheelchair:": "๐Ÿง‘โ€๐Ÿฆผ", - ":person_in_tuxedo:": "๐Ÿคต", - ":person_red_hair:": "๐Ÿง‘โ€๐Ÿฆฐ", - ":person_white_hair:": "๐Ÿง‘โ€๐Ÿฆณ", - ":person_with_probing_cane:": "๐Ÿง‘โ€๐Ÿฆฏ", - ":person_with_turban:": "๐Ÿ‘ณ", - ":person_with_veil:": "๐Ÿ‘ฐ", - ":peru:": "๐Ÿ‡ตโ€๐Ÿ‡ช", - ":petri_dish:": "๐Ÿงซ", - ":philippines:": "๐Ÿ‡ตโ€๐Ÿ‡ญ", - ":phone:": "โ˜Ž", - ":pick:": "โ›", - ":pickup_truck:": "๐Ÿ›ป", - ":pie:": "๐Ÿฅง", - ":pig:": "๐Ÿท", - ":pig2:": "๐Ÿ–", - ":pig_nose:": "๐Ÿฝ", - ":pill:": "๐Ÿ’Š", - ":pilot:": "๐Ÿง‘โ€โœˆ", - ":pinata:": "๐Ÿช…", - ":pinched_fingers:": "๐ŸคŒ", - ":pinching_hand:": "๐Ÿค", - ":pineapple:": "๐Ÿ", - ":ping_pong:": "๐Ÿ“", - ":pirate_flag:": "๐Ÿดโ€โ˜ ", - ":pisces:": "โ™“", - ":pitcairn_islands:": "๐Ÿ‡ตโ€๐Ÿ‡ณ", - ":pizza:": "๐Ÿ•", - ":placard:": "๐Ÿชง", - ":place_of_worship:": "๐Ÿ›", - ":plate_with_cutlery:": "๐Ÿฝ", - ":play_or_pause_button:": "โฏ", - ":pleading_face:": "๐Ÿฅบ", - ":plunger:": "๐Ÿช ", - ":point_down:": "๐Ÿ‘‡", - ":point_left:": "๐Ÿ‘ˆ", - ":point_right:": "๐Ÿ‘‰", - ":point_up:": "โ˜", - ":point_up_2:": "๐Ÿ‘†", - ":poland:": "๐Ÿ‡ตโ€๐Ÿ‡ฑ", - ":polar_bear:": "๐Ÿปโ€โ„", - ":police_car:": "๐Ÿš“", - ":police_officer:": "๐Ÿ‘ฎ", - ":policeman:": "๐Ÿ‘ฎโ€โ™‚", - ":policewoman:": "๐Ÿ‘ฎโ€โ™€", - ":poodle:": "๐Ÿฉ", - ":poop:": "๐Ÿ’ฉ", - ":popcorn:": "๐Ÿฟ", - ":portugal:": "๐Ÿ‡ตโ€๐Ÿ‡น", - ":post_office:": "๐Ÿฃ", - ":postal_horn:": "๐Ÿ“ฏ", - ":postbox:": "๐Ÿ“ฎ", - ":potable_water:": "๐Ÿšฐ", - ":potato:": "๐Ÿฅ”", - ":potted_plant:": "๐Ÿชด", - ":pouch:": "๐Ÿ‘", - ":poultry_leg:": "๐Ÿ—", - ":pound:": "๐Ÿ’ท", - ":pout:": "๐Ÿ˜ก", - ":pouting_cat:": "๐Ÿ˜พ", - ":pouting_face:": "๐Ÿ™Ž", - ":pouting_man:": "๐Ÿ™Žโ€โ™‚", - ":pouting_woman:": "๐Ÿ™Žโ€โ™€", - ":pray:": "๐Ÿ™", - ":prayer_beads:": "๐Ÿ“ฟ", - ":pregnant_woman:": "๐Ÿคฐ", - ":pretzel:": "๐Ÿฅจ", - ":previous_track_button:": "โฎ", - ":prince:": "๐Ÿคด", - ":princess:": "๐Ÿ‘ธ", - ":printer:": "๐Ÿ–จ", - ":probing_cane:": "๐Ÿฆฏ", - ":puerto_rico:": "๐Ÿ‡ตโ€๐Ÿ‡ท", - ":punch:": "๐Ÿ‘Š", - ":purple_circle:": "๐ŸŸฃ", - ":purple_heart:": "๐Ÿ’œ", - ":purple_square:": "๐ŸŸช", - ":purse:": "๐Ÿ‘›", - ":pushpin:": "๐Ÿ“Œ", - ":put_litter_in_its_place:": "๐Ÿšฎ", - ":qatar:": "๐Ÿ‡ถโ€๐Ÿ‡ฆ", - ":question:": "โ“", - ":rabbit:": "๐Ÿฐ", - ":rabbit2:": "๐Ÿ‡", - ":raccoon:": "๐Ÿฆ", - ":racehorse:": "๐ŸŽ", - ":racing_car:": "๐ŸŽ", - ":radio:": "๐Ÿ“ป", - ":radio_button:": "๐Ÿ”˜", - ":radioactive:": "โ˜ข", - ":rage:": "๐Ÿ˜ก", - ":railway_car:": "๐Ÿšƒ", - ":railway_track:": "๐Ÿ›ค", - ":rainbow:": "๐ŸŒˆ", - ":rainbow_flag:": "๐Ÿณโ€๐ŸŒˆ", - ":raised_back_of_hand:": "๐Ÿคš", - ":raised_eyebrow:": "๐Ÿคจ", - ":raised_hand:": "โœ‹", - ":raised_hand_with_fingers_splayed:": "๐Ÿ–", - ":raised_hands:": "๐Ÿ™Œ", - ":raising_hand:": "๐Ÿ™‹", - ":raising_hand_man:": "๐Ÿ™‹โ€โ™‚", - ":raising_hand_woman:": "๐Ÿ™‹โ€โ™€", - ":ram:": "๐Ÿ", - ":ramen:": "๐Ÿœ", - ":rat:": "๐Ÿ€", - ":razor:": "๐Ÿช’", - ":receipt:": "๐Ÿงพ", - ":record_button:": "โบ", - ":recycle:": "โ™ป", - ":red_car:": "๐Ÿš—", - ":red_circle:": "๐Ÿ”ด", - ":red_envelope:": "๐Ÿงง", - ":red_haired_man:": "๐Ÿ‘จโ€๐Ÿฆฐ", - ":red_haired_woman:": "๐Ÿ‘ฉโ€๐Ÿฆฐ", - ":red_square:": "๐ŸŸฅ", - ":registered:": "ยฎ", - ":relaxed:": "โ˜บ", - ":relieved:": "๐Ÿ˜Œ", - ":reminder_ribbon:": "๐ŸŽ—", - ":repeat:": "๐Ÿ”", - ":repeat_one:": "๐Ÿ”‚", - ":rescue_worker_helmet:": "โ›‘", - ":restroom:": "๐Ÿšป", - ":reunion:": "๐Ÿ‡ทโ€๐Ÿ‡ช", - ":revolving_hearts:": "๐Ÿ’ž", - ":rewind:": "โช", - ":rhinoceros:": "๐Ÿฆ", - ":ribbon:": "๐ŸŽ€", - ":rice:": "๐Ÿš", - ":rice_ball:": "๐Ÿ™", - ":rice_cracker:": "๐Ÿ˜", - ":rice_scene:": "๐ŸŽ‘", - ":right_anger_bubble:": "๐Ÿ—ฏ", - ":ring:": "๐Ÿ’", - ":ringed_planet:": "๐Ÿช", - ":robot:": "๐Ÿค–", - ":rock:": "๐Ÿชจ", - ":rocket:": "๐Ÿš€", - ":rofl:": "๐Ÿคฃ", - ":roll_eyes:": "๐Ÿ™„", - ":roll_of_paper:": "๐Ÿงป", - ":roller_coaster:": "๐ŸŽข", - ":roller_skate:": "๐Ÿ›ผ", - ":romania:": "๐Ÿ‡ทโ€๐Ÿ‡ด", - ":rooster:": "๐Ÿ“", - ":rose:": "๐ŸŒน", - ":rosette:": "๐Ÿต", - ":rotating_light:": "๐Ÿšจ", - ":round_pushpin:": "๐Ÿ“", - ":rowboat:": "๐Ÿšฃ", - ":rowing_man:": "๐Ÿšฃโ€โ™‚", - ":rowing_woman:": "๐Ÿšฃโ€โ™€", - ":ru:": "๐Ÿ‡ทโ€๐Ÿ‡บ", - ":rugby_football:": "๐Ÿ‰", - ":runner:": "๐Ÿƒ", - ":running:": "๐Ÿƒ", - ":running_man:": "๐Ÿƒโ€โ™‚", - ":running_shirt_with_sash:": "๐ŸŽฝ", - ":running_woman:": "๐Ÿƒโ€โ™€", - ":rwanda:": "๐Ÿ‡ทโ€๐Ÿ‡ผ", - ":sa:": "๐Ÿˆ‚", - ":safety_pin:": "๐Ÿงท", - ":safety_vest:": "๐Ÿฆบ", - ":sagittarius:": "โ™", - ":sailboat:": "โ›ต", - ":sake:": "๐Ÿถ", - ":salt:": "๐Ÿง‚", - ":samoa:": "๐Ÿ‡ผโ€๐Ÿ‡ธ", - ":san_marino:": "๐Ÿ‡ธโ€๐Ÿ‡ฒ", - ":sandal:": "๐Ÿ‘ก", - ":sandwich:": "๐Ÿฅช", - ":santa:": "๐ŸŽ…", - ":sao_tome_principe:": "๐Ÿ‡ธโ€๐Ÿ‡น", - ":sari:": "๐Ÿฅป", - ":sassy_man:": "๐Ÿ’โ€โ™‚", - ":sassy_woman:": "๐Ÿ’โ€โ™€", - ":satellite:": "๐Ÿ“ก", - ":satisfied:": "๐Ÿ˜†", - ":saudi_arabia:": "๐Ÿ‡ธโ€๐Ÿ‡ฆ", - ":sauna_man:": "๐Ÿง–โ€โ™‚", - ":sauna_person:": "๐Ÿง–", - ":sauna_woman:": "๐Ÿง–โ€โ™€", - ":sauropod:": "๐Ÿฆ•", - ":saxophone:": "๐ŸŽท", - ":scarf:": "๐Ÿงฃ", - ":school:": "๐Ÿซ", - ":school_satchel:": "๐ŸŽ’", - ":scientist:": "๐Ÿง‘โ€๐Ÿ”ฌ", - ":scissors:": "โœ‚", - ":scorpion:": "๐Ÿฆ‚", - ":scorpius:": "โ™", - ":scotland:": "๐Ÿดโ€๓ งโ€๓ ขโ€๓ ณโ€๓ ฃโ€๓ ดโ€๓ ฟ", - ":scream:": "๐Ÿ˜ฑ", - ":scream_cat:": "๐Ÿ™€", - ":screwdriver:": "๐Ÿช›", - ":scroll:": "๐Ÿ“œ", - ":seal:": "๐Ÿฆญ", - ":seat:": "๐Ÿ’บ", - ":secret:": "ใŠ™", - ":see_no_evil:": "๐Ÿ™ˆ", - ":seedling:": "๐ŸŒฑ", - ":selfie:": "๐Ÿคณ", - ":senegal:": "๐Ÿ‡ธโ€๐Ÿ‡ณ", - ":serbia:": "๐Ÿ‡ทโ€๐Ÿ‡ธ", - ":service_dog:": "๐Ÿ•โ€๐Ÿฆบ", - ":seven:": "7โ€โƒฃ", - ":sewing_needle:": "๐Ÿชก", - ":seychelles:": "๐Ÿ‡ธโ€๐Ÿ‡จ", - ":shallow_pan_of_food:": "๐Ÿฅ˜", - ":shamrock:": "โ˜˜", - ":shark:": "๐Ÿฆˆ", - ":shaved_ice:": "๐Ÿง", - ":sheep:": "๐Ÿ‘", - ":shell:": "๐Ÿš", - ":shield:": "๐Ÿ›ก", - ":shinto_shrine:": "โ›ฉ", - ":ship:": "๐Ÿšข", - ":shirt:": "๐Ÿ‘•", - ":shit:": "๐Ÿ’ฉ", - ":shoe:": "๐Ÿ‘ž", - ":shopping:": "๐Ÿ›", - ":shopping_cart:": "๐Ÿ›’", - ":shorts:": "๐Ÿฉณ", - ":shower:": "๐Ÿšฟ", - ":shrimp:": "๐Ÿฆ", - ":shrug:": "๐Ÿคท", - ":shushing_face:": "๐Ÿคซ", - ":sierra_leone:": "๐Ÿ‡ธโ€๐Ÿ‡ฑ", - ":signal_strength:": "๐Ÿ“ถ", - ":singapore:": "๐Ÿ‡ธโ€๐Ÿ‡ฌ", - ":singer:": "๐Ÿง‘โ€๐ŸŽค", - ":sint_maarten:": "๐Ÿ‡ธโ€๐Ÿ‡ฝ", - ":six:": "6โ€โƒฃ", - ":six_pointed_star:": "๐Ÿ”ฏ", - ":skateboard:": "๐Ÿ›น", - ":ski:": "๐ŸŽฟ", - ":skier:": "โ›ท", - ":skull:": "๐Ÿ’€", - ":skull_and_crossbones:": "โ˜ ", - ":skunk:": "๐Ÿฆจ", - ":sled:": "๐Ÿ›ท", - ":sleeping:": "๐Ÿ˜ด", - ":sleeping_bed:": "๐Ÿ›Œ", - ":sleepy:": "๐Ÿ˜ช", - ":slightly_frowning_face:": "๐Ÿ™", - ":slightly_smiling_face:": "๐Ÿ™‚", - ":slot_machine:": "๐ŸŽฐ", - ":sloth:": "๐Ÿฆฅ", - ":slovakia:": "๐Ÿ‡ธโ€๐Ÿ‡ฐ", - ":slovenia:": "๐Ÿ‡ธโ€๐Ÿ‡ฎ", - ":small_airplane:": "๐Ÿ›ฉ", - ":small_blue_diamond:": "๐Ÿ”น", - ":small_orange_diamond:": "๐Ÿ”ธ", - ":small_red_triangle:": "๐Ÿ”บ", - ":small_red_triangle_down:": "๐Ÿ”ป", - ":smile:": "๐Ÿ˜„", - ":smile_cat:": "๐Ÿ˜ธ", - ":smiley:": "๐Ÿ˜ƒ", - ":smiley_cat:": "๐Ÿ˜บ", - ":smiling_face_with_tear:": "๐Ÿฅฒ", - ":smiling_face_with_three_hearts:": "๐Ÿฅฐ", - ":smiling_imp:": "๐Ÿ˜ˆ", - ":smirk:": "๐Ÿ˜", - ":smirk_cat:": "๐Ÿ˜ผ", - ":smoking:": "๐Ÿšฌ", - ":snail:": "๐ŸŒ", - ":snake:": "๐Ÿ", - ":sneezing_face:": "๐Ÿคง", - ":snowboarder:": "๐Ÿ‚", - ":snowflake:": "โ„", - ":snowman:": "โ›„", - ":snowman_with_snow:": "โ˜ƒ", - ":soap:": "๐Ÿงผ", - ":sob:": "๐Ÿ˜ญ", - ":soccer:": "โšฝ", - ":socks:": "๐Ÿงฆ", - ":softball:": "๐ŸฅŽ", - ":solomon_islands:": "๐Ÿ‡ธโ€๐Ÿ‡ง", - ":somalia:": "๐Ÿ‡ธโ€๐Ÿ‡ด", - ":soon:": "๐Ÿ”œ", - ":sos:": "๐Ÿ†˜", - ":sound:": "๐Ÿ”‰", - ":south_africa:": "๐Ÿ‡ฟโ€๐Ÿ‡ฆ", - ":south_georgia_south_sandwich_islands:": "๐Ÿ‡ฌโ€๐Ÿ‡ธ", - ":south_sudan:": "๐Ÿ‡ธโ€๐Ÿ‡ธ", - ":space_invader:": "๐Ÿ‘พ", - ":spades:": "โ™ ", - ":spaghetti:": "๐Ÿ", - ":sparkle:": "โ‡", - ":sparkler:": "๐ŸŽ‡", - ":sparkles:": "โœจ", - ":sparkling_heart:": "๐Ÿ’–", - ":speak_no_evil:": "๐Ÿ™Š", - ":speaker:": "๐Ÿ”ˆ", - ":speaking_head:": "๐Ÿ—ฃ", - ":speech_balloon:": "๐Ÿ’ฌ", - ":speedboat:": "๐Ÿšค", - ":spider:": "๐Ÿ•ท", - ":spider_web:": "๐Ÿ•ธ", - ":spiral_calendar:": "๐Ÿ—“", - ":spiral_notepad:": "๐Ÿ—’", - ":sponge:": "๐Ÿงฝ", - ":spoon:": "๐Ÿฅ„", - ":squid:": "๐Ÿฆ‘", - ":sri_lanka:": "๐Ÿ‡ฑโ€๐Ÿ‡ฐ", - ":st_barthelemy:": "๐Ÿ‡งโ€๐Ÿ‡ฑ", - ":st_helena:": "๐Ÿ‡ธโ€๐Ÿ‡ญ", - ":st_kitts_nevis:": "๐Ÿ‡ฐโ€๐Ÿ‡ณ", - ":st_lucia:": "๐Ÿ‡ฑโ€๐Ÿ‡จ", - ":st_martin:": "๐Ÿ‡ฒโ€๐Ÿ‡ซ", - ":st_pierre_miquelon:": "๐Ÿ‡ตโ€๐Ÿ‡ฒ", - ":st_vincent_grenadines:": "๐Ÿ‡ปโ€๐Ÿ‡จ", - ":stadium:": "๐ŸŸ", - ":standing_man:": "๐Ÿงโ€โ™‚", - ":standing_person:": "๐Ÿง", - ":standing_woman:": "๐Ÿงโ€โ™€", - ":star:": "โญ", - ":star2:": "๐ŸŒŸ", - ":star_and_crescent:": "โ˜ช", - ":star_of_david:": "โœก", - ":star_struck:": "๐Ÿคฉ", - ":stars:": "๐ŸŒ ", - ":station:": "๐Ÿš‰", - ":statue_of_liberty:": "๐Ÿ—ฝ", - ":steam_locomotive:": "๐Ÿš‚", - ":stethoscope:": "๐Ÿฉบ", - ":stew:": "๐Ÿฒ", - ":stop_button:": "โน", - ":stop_sign:": "๐Ÿ›‘", - ":stopwatch:": "โฑ", - ":straight_ruler:": "๐Ÿ“", - ":strawberry:": "๐Ÿ“", - ":stuck_out_tongue:": "๐Ÿ˜›", - ":stuck_out_tongue_closed_eyes:": "๐Ÿ˜", - ":stuck_out_tongue_winking_eye:": "๐Ÿ˜œ", - ":student:": "๐Ÿง‘โ€๐ŸŽ“", - ":studio_microphone:": "๐ŸŽ™", - ":stuffed_flatbread:": "๐Ÿฅ™", - ":sudan:": "๐Ÿ‡ธโ€๐Ÿ‡ฉ", - ":sun_behind_large_cloud:": "๐ŸŒฅ", - ":sun_behind_rain_cloud:": "๐ŸŒฆ", - ":sun_behind_small_cloud:": "๐ŸŒค", - ":sun_with_face:": "๐ŸŒž", - ":sunflower:": "๐ŸŒป", - ":sunglasses:": "๐Ÿ˜Ž", - ":sunny:": "โ˜€", - ":sunrise:": "๐ŸŒ…", - ":sunrise_over_mountains:": "๐ŸŒ„", - ":superhero:": "๐Ÿฆธ", - ":superhero_man:": "๐Ÿฆธโ€โ™‚", - ":superhero_woman:": "๐Ÿฆธโ€โ™€", - ":supervillain:": "๐Ÿฆน", - ":supervillain_man:": "๐Ÿฆนโ€โ™‚", - ":supervillain_woman:": "๐Ÿฆนโ€โ™€", - ":surfer:": "๐Ÿ„", - ":surfing_man:": "๐Ÿ„โ€โ™‚", - ":surfing_woman:": "๐Ÿ„โ€โ™€", - ":suriname:": "๐Ÿ‡ธโ€๐Ÿ‡ท", - ":sushi:": "๐Ÿฃ", - ":suspension_railway:": "๐ŸšŸ", - ":svalbard_jan_mayen:": "๐Ÿ‡ธโ€๐Ÿ‡ฏ", - ":swan:": "๐Ÿฆข", - ":swaziland:": "๐Ÿ‡ธโ€๐Ÿ‡ฟ", - ":sweat:": "๐Ÿ˜“", - ":sweat_drops:": "๐Ÿ’ฆ", - ":sweat_smile:": "๐Ÿ˜…", - ":sweden:": "๐Ÿ‡ธโ€๐Ÿ‡ช", - ":sweet_potato:": "๐Ÿ ", - ":swim_brief:": "๐Ÿฉฒ", - ":swimmer:": "๐ŸŠ", - ":swimming_man:": "๐ŸŠโ€โ™‚", - ":swimming_woman:": "๐ŸŠโ€โ™€", - ":switzerland:": "๐Ÿ‡จโ€๐Ÿ‡ญ", - ":symbols:": "๐Ÿ”ฃ", - ":synagogue:": "๐Ÿ•", - ":syria:": "๐Ÿ‡ธโ€๐Ÿ‡พ", - ":syringe:": "๐Ÿ’‰", - ":t-rex:": "๐Ÿฆ–", - ":taco:": "๐ŸŒฎ", - ":tada:": "๐ŸŽ‰", - ":taiwan:": "๐Ÿ‡นโ€๐Ÿ‡ผ", - ":tajikistan:": "๐Ÿ‡นโ€๐Ÿ‡ฏ", - ":takeout_box:": "๐Ÿฅก", - ":tamale:": "๐Ÿซ”", - ":tanabata_tree:": "๐ŸŽ‹", - ":tangerine:": "๐ŸŠ", - ":tanzania:": "๐Ÿ‡นโ€๐Ÿ‡ฟ", - ":taurus:": "โ™‰", - ":taxi:": "๐Ÿš•", - ":tea:": "๐Ÿต", - ":teacher:": "๐Ÿง‘โ€๐Ÿซ", - ":teapot:": "๐Ÿซ–", - ":technologist:": "๐Ÿง‘โ€๐Ÿ’ป", - ":teddy_bear:": "๐Ÿงธ", - ":telephone:": "โ˜Ž", - ":telephone_receiver:": "๐Ÿ“ž", - ":telescope:": "๐Ÿ”ญ", - ":tennis:": "๐ŸŽพ", - ":tent:": "โ›บ", - ":test_tube:": "๐Ÿงช", - ":thailand:": "๐Ÿ‡นโ€๐Ÿ‡ญ", - ":thermometer:": "๐ŸŒก", - ":thinking:": "๐Ÿค”", - ":thong_sandal:": "๐Ÿฉด", - ":thought_balloon:": "๐Ÿ’ญ", - ":thread:": "๐Ÿงต", - ":three:": "3โ€โƒฃ", - ":thumbsdown:": "๐Ÿ‘Ž", - ":thumbsup:": "๐Ÿ‘", - ":ticket:": "๐ŸŽซ", - ":tickets:": "๐ŸŽŸ", - ":tiger:": "๐Ÿฏ", - ":tiger2:": "๐Ÿ…", - ":timer_clock:": "โฒ", - ":timor_leste:": "๐Ÿ‡นโ€๐Ÿ‡ฑ", - ":tipping_hand_man:": "๐Ÿ’โ€โ™‚", - ":tipping_hand_person:": "๐Ÿ’", - ":tipping_hand_woman:": "๐Ÿ’โ€โ™€", - ":tired_face:": "๐Ÿ˜ซ", - ":tm:": "โ„ข", - ":togo:": "๐Ÿ‡นโ€๐Ÿ‡ฌ", - ":toilet:": "๐Ÿšฝ", - ":tokelau:": "๐Ÿ‡นโ€๐Ÿ‡ฐ", - ":tokyo_tower:": "๐Ÿ—ผ", - ":tomato:": "๐Ÿ…", - ":tonga:": "๐Ÿ‡นโ€๐Ÿ‡ด", - ":tongue:": "๐Ÿ‘…", - ":toolbox:": "๐Ÿงฐ", - ":tooth:": "๐Ÿฆท", - ":toothbrush:": "๐Ÿชฅ", - ":top:": "๐Ÿ”", - ":tophat:": "๐ŸŽฉ", - ":tornado:": "๐ŸŒช", - ":tr:": "๐Ÿ‡นโ€๐Ÿ‡ท", - ":trackball:": "๐Ÿ–ฒ", - ":tractor:": "๐Ÿšœ", - ":traffic_light:": "๐Ÿšฅ", - ":train:": "๐Ÿš‹", - ":train2:": "๐Ÿš†", - ":tram:": "๐ŸšŠ", - ":transgender_flag:": "๐Ÿณโ€โšง", - ":transgender_symbol:": "โšง", - ":triangular_flag_on_post:": "๐Ÿšฉ", - ":triangular_ruler:": "๐Ÿ“", - ":trident:": "๐Ÿ”ฑ", - ":trinidad_tobago:": "๐Ÿ‡นโ€๐Ÿ‡น", - ":tristan_da_cunha:": "๐Ÿ‡นโ€๐Ÿ‡ฆ", - ":triumph:": "๐Ÿ˜ค", - ":trolleybus:": "๐ŸšŽ", - ":trophy:": "๐Ÿ†", - ":tropical_drink:": "๐Ÿน", - ":tropical_fish:": "๐Ÿ ", - ":truck:": "๐Ÿšš", - ":trumpet:": "๐ŸŽบ", - ":tshirt:": "๐Ÿ‘•", - ":tulip:": "๐ŸŒท", - ":tumbler_glass:": "๐Ÿฅƒ", - ":tunisia:": "๐Ÿ‡นโ€๐Ÿ‡ณ", - ":turkey:": "๐Ÿฆƒ", - ":turkmenistan:": "๐Ÿ‡นโ€๐Ÿ‡ฒ", - ":turks_caicos_islands:": "๐Ÿ‡นโ€๐Ÿ‡จ", - ":turtle:": "๐Ÿข", - ":tuvalu:": "๐Ÿ‡นโ€๐Ÿ‡ป", - ":tv:": "๐Ÿ“บ", - ":twisted_rightwards_arrows:": "๐Ÿ”€", - ":two:": "2โ€โƒฃ", - ":two_hearts:": "๐Ÿ’•", - ":two_men_holding_hands:": "๐Ÿ‘ฌ", - ":two_women_holding_hands:": "๐Ÿ‘ญ", - ":u5272:": "๐Ÿˆน", - ":u5408:": "๐Ÿˆด", - ":u55b6:": "๐Ÿˆบ", - ":u6307:": "๐Ÿˆฏ", - ":u6708:": "๐Ÿˆท", - ":u6709:": "๐Ÿˆถ", - ":u6e80:": "๐Ÿˆต", - ":u7121:": "๐Ÿˆš", - ":u7533:": "๐Ÿˆธ", - ":u7981:": "๐Ÿˆฒ", - ":u7a7a:": "๐Ÿˆณ", - ":uganda:": "๐Ÿ‡บโ€๐Ÿ‡ฌ", - ":uk:": "๐Ÿ‡ฌโ€๐Ÿ‡ง", - ":ukraine:": "๐Ÿ‡บโ€๐Ÿ‡ฆ", - ":umbrella:": "โ˜”", - ":unamused:": "๐Ÿ˜’", - ":underage:": "๐Ÿ”ž", - ":unicorn:": "๐Ÿฆ„", - ":united_arab_emirates:": "๐Ÿ‡ฆโ€๐Ÿ‡ช", - ":united_nations:": "๐Ÿ‡บโ€๐Ÿ‡ณ", - ":unlock:": "๐Ÿ”“", - ":up:": "๐Ÿ†™", - ":upside_down_face:": "๐Ÿ™ƒ", - ":uruguay:": "๐Ÿ‡บโ€๐Ÿ‡พ", - ":us:": "๐Ÿ‡บโ€๐Ÿ‡ธ", - ":us_outlying_islands:": "๐Ÿ‡บโ€๐Ÿ‡ฒ", - ":us_virgin_islands:": "๐Ÿ‡ปโ€๐Ÿ‡ฎ", - ":uzbekistan:": "๐Ÿ‡บโ€๐Ÿ‡ฟ", - ":v:": "โœŒ", - ":vampire:": "๐Ÿง›", - ":vampire_man:": "๐Ÿง›โ€โ™‚", - ":vampire_woman:": "๐Ÿง›โ€โ™€", - ":vanuatu:": "๐Ÿ‡ปโ€๐Ÿ‡บ", - ":vatican_city:": "๐Ÿ‡ปโ€๐Ÿ‡ฆ", - ":venezuela:": "๐Ÿ‡ปโ€๐Ÿ‡ช", - ":vertical_traffic_light:": "๐Ÿšฆ", - ":vhs:": "๐Ÿ“ผ", - ":vibration_mode:": "๐Ÿ“ณ", - ":video_camera:": "๐Ÿ“น", - ":video_game:": "๐ŸŽฎ", - ":vietnam:": "๐Ÿ‡ปโ€๐Ÿ‡ณ", - ":violin:": "๐ŸŽป", - ":virgo:": "โ™", - ":volcano:": "๐ŸŒ‹", - ":volleyball:": "๐Ÿ", - ":vomiting_face:": "๐Ÿคฎ", - ":vs:": "๐Ÿ†š", - ":vulcan_salute:": "๐Ÿ––", - ":waffle:": "๐Ÿง‡", - ":wales:": "๐Ÿดโ€๓ งโ€๓ ขโ€๓ ทโ€๓ ฌโ€๓ ณโ€๓ ฟ", - ":walking:": "๐Ÿšถ", - ":walking_man:": "๐Ÿšถโ€โ™‚", - ":walking_woman:": "๐Ÿšถโ€โ™€", - ":wallis_futuna:": "๐Ÿ‡ผโ€๐Ÿ‡ซ", - ":waning_crescent_moon:": "๐ŸŒ˜", - ":waning_gibbous_moon:": "๐ŸŒ–", - ":warning:": "โš ", - ":wastebasket:": "๐Ÿ—‘", - ":watch:": "โŒš", - ":water_buffalo:": "๐Ÿƒ", - ":water_polo:": "๐Ÿคฝ", - ":watermelon:": "๐Ÿ‰", - ":wave:": "๐Ÿ‘‹", - ":wavy_dash:": "ใ€ฐ", - ":waxing_crescent_moon:": "๐ŸŒ’", - ":waxing_gibbous_moon:": "๐ŸŒ”", - ":wc:": "๐Ÿšพ", - ":weary:": "๐Ÿ˜ฉ", - ":wedding:": "๐Ÿ’’", - ":weight_lifting:": "๐Ÿ‹", - ":weight_lifting_man:": "๐Ÿ‹โ€โ™‚", - ":weight_lifting_woman:": "๐Ÿ‹โ€โ™€", - ":western_sahara:": "๐Ÿ‡ชโ€๐Ÿ‡ญ", - ":whale:": "๐Ÿณ", - ":whale2:": "๐Ÿ‹", - ":wheel_of_dharma:": "โ˜ธ", - ":wheelchair:": "โ™ฟ", - ":white_check_mark:": "โœ…", - ":white_circle:": "โšช", - ":white_flag:": "๐Ÿณ", - ":white_flower:": "๐Ÿ’ฎ", - ":white_haired_man:": "๐Ÿ‘จโ€๐Ÿฆณ", - ":white_haired_woman:": "๐Ÿ‘ฉโ€๐Ÿฆณ", - ":white_heart:": "๐Ÿค", - ":white_large_square:": "โฌœ", - ":white_medium_small_square:": "โ—ฝ", - ":white_medium_square:": "โ—ป", - ":white_small_square:": "โ–ซ", - ":white_square_button:": "๐Ÿ”ณ", - ":wilted_flower:": "๐Ÿฅ€", - ":wind_chime:": "๐ŸŽ", - ":wind_face:": "๐ŸŒฌ", - ":window:": "๐ŸชŸ", - ":wine_glass:": "๐Ÿท", - ":wink:": "๐Ÿ˜‰", - ":wolf:": "๐Ÿบ", - ":woman:": "๐Ÿ‘ฉ", - ":woman_artist:": "๐Ÿ‘ฉโ€๐ŸŽจ", - ":woman_astronaut:": "๐Ÿ‘ฉโ€๐Ÿš€", - ":woman_beard:": "๐Ÿง”โ€โ™€", - ":woman_cartwheeling:": "๐Ÿคธโ€โ™€", - ":woman_cook:": "๐Ÿ‘ฉโ€๐Ÿณ", - ":woman_dancing:": "๐Ÿ’ƒ", - ":woman_facepalming:": "๐Ÿคฆโ€โ™€", - ":woman_factory_worker:": "๐Ÿ‘ฉโ€๐Ÿญ", - ":woman_farmer:": "๐Ÿ‘ฉโ€๐ŸŒพ", - ":woman_feeding_baby:": "๐Ÿ‘ฉโ€๐Ÿผ", - ":woman_firefighter:": "๐Ÿ‘ฉโ€๐Ÿš’", - ":woman_health_worker:": "๐Ÿ‘ฉโ€โš•", - ":woman_in_manual_wheelchair:": "๐Ÿ‘ฉโ€๐Ÿฆฝ", - ":woman_in_motorized_wheelchair:": "๐Ÿ‘ฉโ€๐Ÿฆผ", - ":woman_in_tuxedo:": "๐Ÿคตโ€โ™€", - ":woman_judge:": "๐Ÿ‘ฉโ€โš–", - ":woman_juggling:": "๐Ÿคนโ€โ™€", - ":woman_mechanic:": "๐Ÿ‘ฉโ€๐Ÿ”ง", - ":woman_office_worker:": "๐Ÿ‘ฉโ€๐Ÿ’ผ", - ":woman_pilot:": "๐Ÿ‘ฉโ€โœˆ", - ":woman_playing_handball:": "๐Ÿคพโ€โ™€", - ":woman_playing_water_polo:": "๐Ÿคฝโ€โ™€", - ":woman_scientist:": "๐Ÿ‘ฉโ€๐Ÿ”ฌ", - ":woman_shrugging:": "๐Ÿคทโ€โ™€", - ":woman_singer:": "๐Ÿ‘ฉโ€๐ŸŽค", - ":woman_student:": "๐Ÿ‘ฉโ€๐ŸŽ“", - ":woman_teacher:": "๐Ÿ‘ฉโ€๐Ÿซ", - ":woman_technologist:": "๐Ÿ‘ฉโ€๐Ÿ’ป", - ":woman_with_headscarf:": "๐Ÿง•", - ":woman_with_probing_cane:": "๐Ÿ‘ฉโ€๐Ÿฆฏ", - ":woman_with_turban:": "๐Ÿ‘ณโ€โ™€", - ":woman_with_veil:": "๐Ÿ‘ฐโ€โ™€", - ":womans_clothes:": "๐Ÿ‘š", - ":womans_hat:": "๐Ÿ‘’", - ":women_wrestling:": "๐Ÿคผโ€โ™€", - ":womens:": "๐Ÿšบ", - ":wood:": "๐Ÿชต", - ":woozy_face:": "๐Ÿฅด", - ":world_map:": "๐Ÿ—บ", - ":worm:": "๐Ÿชฑ", - ":worried:": "๐Ÿ˜Ÿ", - ":wrench:": "๐Ÿ”ง", - ":wrestling:": "๐Ÿคผ", - ":writing_hand:": "โœ", - ":x:": "โŒ", - ":yarn:": "๐Ÿงถ", - ":yawning_face:": "๐Ÿฅฑ", - ":yellow_circle:": "๐ŸŸก", - ":yellow_heart:": "๐Ÿ’›", - ":yellow_square:": "๐ŸŸจ", - ":yemen:": "๐Ÿ‡พโ€๐Ÿ‡ช", - ":yen:": "๐Ÿ’ด", - ":yin_yang:": "โ˜ฏ", - ":yo_yo:": "๐Ÿช€", - ":yum:": "๐Ÿ˜‹", - ":zambia:": "๐Ÿ‡ฟโ€๐Ÿ‡ฒ", - ":zany_face:": "๐Ÿคช", - ":zap:": "โšก", - ":zebra:": "๐Ÿฆ“", - ":zero:": "0โ€โƒฃ", - ":zimbabwe:": "๐Ÿ‡ฟโ€๐Ÿ‡ผ", - ":zipper_mouth_face:": "๐Ÿค", - ":zombie:": "๐ŸงŸ", - ":zombie_man:": "๐ŸงŸโ€โ™‚", - ":zombie_woman:": "๐ŸงŸโ€โ™€", - ":zzz:": "๐Ÿ’ค" -}`); - -class EmojiMarkdownPostProcessor { - static emojiReplace(shortcode, el) { - var _a; - if ((typeof el.tagName === "string") && (el.tagName.indexOf("CODE") !== -1 || el.tagName.indexOf("MJX") !== -1)) { - return false; - } - if (el.hasChildNodes()) { - el.childNodes.forEach((child) => this.emojiReplace(shortcode, child)); - } - else { - el.textContent = el.textContent.replace(shortcode, (_a = emoji[shortcode]) !== null && _a !== void 0 ? _a : shortcode); - } - } -} -EmojiMarkdownPostProcessor.emojiProcessor = (el) => { - var _a; - (_a = el.innerText.match(/[:][^\s:][^ \n:]*[:]/g)) === null || _a === void 0 ? void 0 : _a.forEach((e) => EmojiMarkdownPostProcessor.emojiReplace(e, el)); -}; - -const DEFAULT_SETTINGS = { - immediateReplace: true, - suggester: true, - historyPriority: true, - historyLimit: 100, - history: [], -}; -class EmojiPluginSettingTab extends obsidian.PluginSettingTab { - constructor(app, plugin) { - super(app, plugin); - this.plugin = plugin; - } - display() { - let { containerEl } = this; - containerEl.empty(); - containerEl.createEl('h2', { text: 'Emoji Shortcodes Plugin' }); - new obsidian.Setting(containerEl) - .setName('Immediate Emoji Replace') - .setDesc('If this is turned on, Emoji shortcodes will be immediately replaced after typing. Otherwise they are still stored as a shortcode and you only see the Emoji in Preview Mode.') - .addToggle(cb => { - cb.setValue(this.plugin.settings.immediateReplace) - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.immediateReplace = value; - yield this.plugin.saveSettings(); - })); - }); - new obsidian.Setting(containerEl) - .setName('Emoji Suggester') - .setDesc('If this is turned on, a Suggester will appear everytime you type : followed by a letter. This will help you insert Emojis. (Doesn\'t work on mobile)') - .addToggle(cb => { - cb.setValue(this.plugin.settings.suggester) - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.suggester = value; - yield this.plugin.saveSettings(); - })); - }); - new obsidian.Setting(containerEl) - .setName('Use History Priority') - .setDesc('Suggester gives priority to recently used emoji.') - .addToggle(cb => { - cb.setValue(this.plugin.settings.historyPriority) - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.historyPriority = value; - yield this.plugin.saveSettings(); - this.display(); - })); - }); - if (this.plugin.settings.historyPriority) { - new obsidian.Setting(containerEl) - .setName('History Limit') - .setClass('ES-sub-setting') - .addText(cb => { - cb.setPlaceholder(String(DEFAULT_SETTINGS.historyLimit)) - .setValue(String(this.plugin.settings.historyLimit)) - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.historyLimit = value !== '' ? Number(value) : DEFAULT_SETTINGS.historyLimit; - yield this.plugin.saveSettings(); - })); - }); - new obsidian.Setting(containerEl) - .setName('Clear History') - .setClass('ES-sub-setting') - .addButton(cb => { - cb.setButtonText("Clear") - .onClick(() => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.history = []; - yield this.plugin.saveSettings(); - })); - }); - } - new obsidian.Setting(containerEl) - .setName('Donate') - .setDesc('If you like this Plugin, consider donating to support continued development:') - .addButton((bt) => { - bt.buttonEl.outerHTML = ``; - }); - } -} - -class EmojiShortcodesPlugin extends obsidian.Plugin { - onload() { - return __awaiter(this, void 0, void 0, function* () { - yield this.loadSettings(); - this.addSettingTab(new EmojiPluginSettingTab(this.app, this)); - this.registerEditorSuggest(new EmojiSuggester(this)); - this.registerMarkdownPostProcessor(EmojiMarkdownPostProcessor.emojiProcessor); - //this.registerMarkdownPostProcessor(DefinitionListPostProcessor.definitionListProcessor); - }); - } - loadSettings() { - return __awaiter(this, void 0, void 0, function* () { - this.settings = Object.assign({}, DEFAULT_SETTINGS, yield this.loadData()); - this.updateEmojiList(); - }); - } - saveSettings() { - return __awaiter(this, void 0, void 0, function* () { - yield this.saveData(this.settings); - this.updateEmojiList(); - }); - } - updateEmojiList() { - const set = new Set(this.settings.history); - this.emojiList = [...this.settings.history, ...Object.keys(emoji).filter(e => !set.has(e))]; - } - updateHistory(suggestion) { - if (!this.settings.historyPriority) - return; - const set = new Set([suggestion, ...this.settings.history]); - const history = [...set].slice(0, this.settings.historyLimit); - this.settings = Object.assign(this.settings, { history }); - this.saveSettings(); - } -} -class EmojiSuggester extends obsidian.EditorSuggest { - constructor(plugin) { - super(plugin.app); - this.plugin = plugin; - } - onTrigger(cursor, editor, _) { - var _a; - if (this.plugin.settings.suggester) { - const sub = editor.getLine(cursor.line).substring(0, cursor.ch); - const match = (_a = sub.match(/:\S+$/)) === null || _a === void 0 ? void 0 : _a.first(); - if (match) { - return { - end: cursor, - start: { - ch: sub.lastIndexOf(match), - line: cursor.line, - }, - query: match, - }; - } - } - return null; - } - getSuggestions(context) { - let emoji_query = context.query.replace(':', '').toLowerCase(); - return this.plugin.emojiList.filter(p => p.includes(emoji_query)); - } - renderSuggestion(suggestion, el) { - const outer = el.createDiv({ cls: "ES-suggester-container" }); - outer.createDiv({ cls: "ES-shortcode" }).setText(suggestion.replace(/:/g, "")); - //@ts-expect-error - outer.createDiv({ cls: "ES-emoji" }).setText(emoji[suggestion]); - } - selectSuggestion(suggestion) { - if (this.context) { - this.context.editor.replaceRange(this.plugin.settings.immediateReplace ? emoji[suggestion] : `${suggestion} `, this.context.start, this.context.end); - this.plugin.updateHistory(suggestion); - } - } -} - -module.exports = EmojiShortcodesPlugin; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsInNyYy9lbW9qaUxpc3QudHMiLCJzcmMvZW1vamlQb3N0UHJvY2Vzc29yLnRzIiwic3JjL3NldHRpbmdzLnRzIiwic3JjL21haW4udHMiXSwic291cmNlc0NvbnRlbnQiOm51bGwsIm5hbWVzIjpbIlBsdWdpblNldHRpbmdUYWIiLCJTZXR0aW5nIiwiUGx1Z2luIiwiRWRpdG9yU3VnZ2VzdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXVEQTtBQUNPLFNBQVMsU0FBUyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRTtBQUM3RCxJQUFJLFNBQVMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sS0FBSyxZQUFZLENBQUMsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsVUFBVSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtBQUNoSCxJQUFJLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQyxFQUFFLFVBQVUsT0FBTyxFQUFFLE1BQU0sRUFBRTtBQUMvRCxRQUFRLFNBQVMsU0FBUyxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7QUFDbkcsUUFBUSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7QUFDdEcsUUFBUSxTQUFTLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUU7QUFDdEgsUUFBUSxJQUFJLENBQUMsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsVUFBVSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDOUUsS0FBSyxDQUFDLENBQUM7QUFDUDs7QUM3RUE7QUFFTyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZzBEOUIsQ0FBQSxDQUFBLENBQUM7O0FDL3pEVyxNQUFPLDBCQUEwQixDQUFBO0FBTTlDLElBQUEsT0FBTyxZQUFZLENBQUMsU0FBNkIsRUFBRSxFQUFlLEVBQUE7O0FBQ2pFLFFBQUEsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sS0FBSSxRQUFRLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUMvRyxZQUFBLE9BQU8sS0FBSyxDQUFDO0FBQ2IsU0FBQTtBQUNELFFBQUEsSUFBSSxFQUFFLENBQUMsYUFBYSxFQUFFLEVBQUM7QUFDdEIsWUFBQSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQWdCLEtBQUssSUFB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 diff --git a/.obsidian/plugins/emoji-shortcodes/manifest.json b/.obsidian/plugins/emoji-shortcodes/manifest.json deleted file mode 100644 index 432f6235..00000000 --- a/.obsidian/plugins/emoji-shortcodes/manifest.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "id": "emoji-shortcodes", - "name": "Emoji Shortcodes", - "version": "2.2.0", - "minAppVersion": "1.0.0", - "description": "This Plugin enables the use of Markdown Emoji Shortcodes :smile:", - "author": "phibr0", - "authorUrl": "https://github.com/phibr0", - "isDesktopOnly": false, - "fundingUrl": "https://ko-fi.com/phibr0" -} diff --git a/.obsidian/plugins/emoji-shortcodes/styles.css b/.obsidian/plugins/emoji-shortcodes/styles.css deleted file mode 100644 index 6791da60..00000000 --- a/.obsidian/plugins/emoji-shortcodes/styles.css +++ /dev/null @@ -1,31 +0,0 @@ -a[href="https://ko-fi.com/phibr0"] > img -{ - height: 3em; -} - -a[href="https://ko-fi.com/phibr0"] -{ - transform: translate(0, 5%); -} - -.ES-suggester-container { - display: flex; - place-content: space-between; -} - -.ES-shortcode { - margin-right: 8px; -} - -.ES-suggestion-item { - border-top: solid var(--background-secondary) 1px; - padding-left: 10px; -} - -.ES-sub-setting { - padding-left: 2em; -} -.ES-sub-setting + .ES-sub-setting { - padding-left: 0; - margin-left: 2em; -} diff --git a/.obsidian/plugins/obsidian-activity-history/data.json b/.obsidian/plugins/obsidian-activity-history/data.json index d6a8a672..2755805e 100644 --- a/.obsidian/plugins/obsidian-activity-history/data.json +++ b/.obsidian/plugins/obsidian-activity-history/data.json @@ -12,8 +12,8 @@ "checkpointList": [ { "path": "/", - "date": "2023-12-22", - "size": 20107849 + "date": "2023-12-27", + "size": 20143867 } ], "activityHistory": [ @@ -2858,7 +2858,27 @@ }, { "date": "2023-12-22", - "value": 1281 + "value": 1366 + }, + { + "date": "2023-12-23", + "value": 6900 + }, + { + "date": "2023-12-24", + "value": 5820 + }, + { + "date": "2023-12-25", + "value": 20135 + }, + { + "date": "2023-12-26", + "value": 12125 + }, + { + "date": "2023-12-27", + "value": 2797 } ] } diff --git a/.obsidian/plugins/obsidian-commits/data.json b/.obsidian/plugins/obsidian-commits/data.json index fd26cabe..a317ca8b 100644 --- a/.obsidian/plugins/obsidian-commits/data.json +++ b/.obsidian/plugins/obsidian-commits/data.json @@ -311,7 +311,7 @@ }, "02.01 London/Bao Bun.md": { "size": 1415, - "tags": 2, + "tags": 3, "links": 1 }, "02.01 London/The Charlotte Street Hotel.md": { @@ -715,7 +715,7 @@ "links": 2 }, "03.03 Food & Wine/!!Coffee.md": { - "size": 2294, + "size": 2618, "tags": 1, "links": 2 }, @@ -1570,7 +1570,7 @@ "links": 1 }, "01.02 Home/Household.md": { - "size": 1901, + "size": 2276, "tags": 2, "links": 2 }, @@ -1650,7 +1650,7 @@ "links": 1 }, "01.02 Home/@Shopping list.md": { - "size": 5226, + "size": 5750, "tags": 1, "links": 1 }, @@ -1995,7 +1995,7 @@ "links": 2 }, "01.02 Home/Fashion.md": { - "size": 1577, + "size": 2270, "tags": 3, "links": 2 }, @@ -4055,7 +4055,7 @@ "links": 2 }, "00.08 Bookmarks/Bookmarks - Media.md": { - "size": 1952, + "size": 1545, "tags": 0, "links": 4 }, @@ -4080,7 +4080,7 @@ "links": 3 }, "00.08 Bookmarks/Bookmarks - Webpages.md": { - "size": 1824, + "size": 2097, "tags": 0, "links": 3 }, @@ -4090,7 +4090,7 @@ "links": 4 }, "00.08 Bookmarks/Bookmarks - Mac applications.md": { - "size": 3168, + "size": 2601, "tags": 1, "links": 4 }, @@ -4120,7 +4120,7 @@ "links": 3 }, "00.08 Bookmarks/Bookmarks - Work.md": { - "size": 1874, + "size": 1289, "tags": 1, "links": 4 }, @@ -8665,7 +8665,7 @@ "links": 2 }, "01.07 Animals/@Sally.md": { - "size": 2828, + "size": 2309, "tags": 2, "links": 4 }, @@ -9492,7 +9492,7 @@ "02.03 Zรผrich/Sonne.md": { "size": 1592, "tags": 4, - "links": 1 + "links": 2 }, "00.01 Admin/Calendars/2023-06-20.md": { "size": 1399, @@ -9885,7 +9885,7 @@ "links": 6 }, "00.08 Bookmarks/Bookmarks - Investments.md": { - "size": 1173, + "size": 1049, "tags": 1, "links": 3 }, @@ -11937,59 +11937,221 @@ "00.01 Admin/Calendars/2023-12-22.md": { "size": 1412, "tags": 0, - "links": 5 + "links": 7 + }, + "00.01 Admin/Calendars/2023-12-23.md": { + "size": 1412, + "tags": 0, + "links": 9 + }, + "03.04 Cinematheque/The Man from Laramie (1955).md": { + "size": 2282, + "tags": 0, + "links": 1 + }, + "03.04 Cinematheque/Dances with Wolves (1990).md": { + "size": 2282, + "tags": 0, + "links": 1 + }, + "00.01 Admin/Calendars/2023-12-24.md": { + "size": 1571, + "tags": 0, + "links": 8 + }, + "03.03 Food & Wine/Sidamo Bio.md": { + "size": 863, + "tags": 3, + "links": 1 + }, + "03.03 Food & Wine/Fazenda Dutra.md": { + "size": 1023, + "tags": 2, + "links": 1 + }, + "03.03 Food & Wine/Finca Racons.md": { + "size": 1285, + "tags": 4, + "links": 2 + }, + "00.01 Admin/Calendars/2023-12-25.md": { + "size": 1412, + "tags": 0, + "links": 6 + }, + "01.02 Home/Seasonal Activities.md": { + "size": 4359, + "tags": 2, + "links": 9 + }, + "03.03 Food & Wine/Mint Sauce.md": { + "size": 2772, + "tags": 1, + "links": 2 + }, + "00.02 Inbox/Yoga.md": { + "size": 1099, + "tags": 4, + "links": 1 + }, + "00.02 Inbox/Gaslight.md": { + "size": 878, + "tags": 3, + "links": 1 + }, + "00.02 Inbox/Bad Kids.md": { + "size": 867, + "tags": 3, + "links": 1 + }, + "00.02 Inbox/Prophet Song.md": { + "size": 881, + "tags": 2, + "links": 1 + }, + "00.02 Inbox/The House of Doors.md": { + "size": 889, + "tags": 3, + "links": 1 + }, + "00.02 Inbox/Soldier Sailor.md": { + "size": 863, + "tags": 2, + "links": 1 + }, + "00.02 Inbox/Water.md": { + "size": 864, + "tags": 2, + "links": 1 + }, + "00.08 Bookmarks/Bookmarks - Art.md": { + "size": 1185, + "tags": 1, + "links": 3 + }, + "00.01 Admin/Calendars/2023-12-26.md": { + "size": 1412, + "tags": 0, + "links": 4 + }, + "01.07 Animals/2023-12-23 Visit.md": { + "size": 707, + "tags": 3, + "links": 3 + }, + "02.03 Zรผrich/Albishaus.md": { + "size": 1574, + "tags": 3, + "links": 2 + }, + "02.03 Zรผrich/Restaurant Boldern.md": { + "size": 1667, + "tags": 3, + "links": 2 + }, + "02.03 Zรผrich/Zur Buech.md": { + "size": 1561, + "tags": 3, + "links": 2 + }, + "02.03 Zรผrich/Jardin Zรผrichberg.md": { + "size": 1674, + "tags": 3, + "links": 2 + }, + "02.03 Zรผrich/Bistro Rigiblick.md": { + "size": 1750, + "tags": 3, + "links": 2 + }, + "00.01 Admin/Calendars/2023-12-27.md": { + "size": 1412, + "tags": 0, + "links": 6 } }, "commitTypes": { "/": { - "Refactor": 6388, - "Create": 2223, - "Link": 8486, - "Expand": 1940 + "Refactor": 6416, + "Create": 2249, + "Link": 8551, + "Expand": 1972 } }, "dailyCommits": { "/": { "0": 186, "1": 39, - "2": 30, + "2": 32, "3": 12, "4": 17, "5": 15, "6": 69, - "7": 828, - "8": 1087, - "9": 1002, - "10": 698, - "11": 515, - "12": 6665, - "13": 577, + "7": 830, + "8": 1090, + "9": 1015, + "10": 707, + "11": 516, + "12": 6667, + "13": 578, "14": 526, - "15": 577, - "16": 654, - "17": 741, - "18": 887, - "19": 643, - "20": 687, + "15": 584, + "16": 677, + "17": 772, + "18": 901, + "19": 675, + "20": 689, "21": 703, - "22": 604, - "23": 1275 + "22": 605, + "23": 1283 } }, "weeklyCommits": { "/": { - "Mon": 2718, - "Tue": 1610, - "Wed": 7741, + "Mon": 2782, + "Tue": 1650, + "Wed": 7744, "Thu": 1134, - "Fri": 1213, + "Fri": 1214, "Sat": 0, - "Sun": 4621 + "Sun": 4664 } }, "recentCommits": { "/": { "Expanded": [ + " Seasonal Activities ", + " Bistro Rigiblick ", + " Jardin Zรผrichberg ", + " Buech ", + " Restaurant Boldern ", + " Restaurant Boldern ", + " Albishaus ", + " 2023-12-23 Visit ", + " Fashion ", + " Bookmarks - Art ", + " Soldier Sailor ", + " Yoga ", + " Yoga ", + " Seasonal Activities ", + " Seasonal Activities ", + " Household ", + " Bookmarks - Webpages ", + " Seasonal Activities ", + " Seasonal Activities ", + " Seasonal Activities ", + " Seasonal Activities ", + " Seasonal activities ", + " Seasonal activities ", + " Seasonal stroll ", + " 2023-12-24 ", + " Finca Racons ", + " Finca Racons ", + " Fazenda Dutra ", + " Fazenda Dutra ", + " !!Coffee ", + " Sidamo Bio ", + " @Shopping list ", " Bookmarks - Mac applications ", " Household ", " 2024-02-14 โšฝ๏ธ PSG - Real Sociefad ", @@ -12008,41 +12170,35 @@ " Stories from Panchatantra ", " Bookmarks - Work ", " 2023-12-02 ", - " Vinyls ", - " 2023-12-13 โšฝ๏ธ Borussia - PSG ", - " Household ", - " @Finances ", - " @@Paris ", - " Atzmรคnnig Goldingen ", - " Atzmรคnnig Goldingen ", - " 2023-12-09 โšฝ๏ธ PSG - FC Nantes ", - " 2023-12-09 โšฝ๏ธ PSG - FC Nantes ", - " 2023-12-09 ", - " Configuring UFW ", - " Bookmarks - Mac applications ", - " Eustache Bรฉdier ", - " Pierre Bรฉdier ", - " Bonnie's ", - " Potluck Club ", - " Wo Hop ", - " Household ", - " Marc de Villeneuve ", - " Martin Eden ", - " Grindelwald ", - " Grindelwald ", - " Household ", - " Bookmarks - Utilities ", - " 2023-11-28 โšฝ๏ธ PSG - Newcastle Utd (1-1) ", - " 2023-11-28 โšฝ๏ธ PSG - Newcastle Utd ", - " Sรฉraphine Priso Le Bastart ", - " 2023-11-24 โšฝ๏ธ PSG - AS Monaco ", - " 2023-11-24 โšฝ๏ธ PSG - AS Monaco ", - " 2023-11-24 โšฝ๏ธ PSG - AS Monaco ", - " Household ", - " Vinyls ", - " La Familia Grande " + " Vinyls " ], "Created": [ + " 2023-12-27 ", + " Untitled ", + " Untitled ", + " Untitled ", + " Untitled ", + " Untitled ", + " Untitled ", + " 2023-12-26 ", + " Untitled ", + " Water ", + " SOLDIER SAILOR ", + " The House of Doors ", + " Prophet Song ", + " Bad Kids ", + " Gaslight ", + " Yoga ", + " Mint Sauce Recipe ", + " Untitled ", + " 2023-12-25 ", + " Untitled ", + " Untitled ", + " Untitled ", + " 2023-12-24 ", + " Dances with Wolves (1990) ", + " The Man from Laramie (1955) ", + " 2023-12-23 ", " 2023-12-22 ", " Secrets of Playboy (2022โ€“2023) ", " 2023-12-21 ", @@ -12067,35 +12223,28 @@ " 2023-12-12 ", " 2023-12-11 ", " The call of Tokitae ", - " In Uvalde, Students Followed Active Shooter Protocol. The Cops Did Not. ", - " Taylor Swift Is TIME's 2023 Person of the Year ", - " Reuters, New York Times Top List of Fossil Fuel Industryโ€™s Favorite Media Partners ", - " This Maine Fish House Is an Icon. But of What, Exactly ", - " Atzmรคnnig Goldingen ", - " 2023-12-10 ", - " 2023-12-09 PSG - FC Nantes ", - " Tschugger (2021โ€“) ", - " The Magnificent Seven (1960) ", - " 2023-12-09 ", - " Barbie (2023) ", - " 2023-12-08 ", - " Serpico (1973) ", - " 2023-12-07 ", - " Untitled ", - " Untitled ", - " Untitled ", - " 2023-12-06 ", - " 2023-12-05 ", - " C.T.E. Study Finds That Young Football Players Are Getting the Disease ", - " Inside Foxconnโ€™s struggle to make iPhones in India ", - " The Plight of the Oldest Sister ", - " Piecing Together My Fatherโ€™s Murder ", - " My Father, My Faith, and Donald Trump ", - " 2023-12-04 ", - " Grindelwald ", - " 2023-12-03 " + " In Uvalde, Students Followed Active Shooter Protocol. The Cops Did Not. " ], "Renamed": [ + " Bistro Rigiblick ", + " Jardin Zรผrichberg ", + " Zur Buech ", + " Buech ", + " Restaurant Boldern ", + " Albishaus ", + " 2023-12-23 Visit ", + " Bookmarks - Art ", + " Soldier Sailor ", + " Mint Sauce ", + " Mint Sauce ", + " Seasonal Activities ", + " Seasonal activities ", + " Seasonal activities ", + " Finca Racons ", + " Fazenda Dutra ", + " Sidamo Bio ", + " Dances with Wolves (1990) ", + " The Man from Laramie (1955) ", " Secrets of Playboy (2022โ€“2023) ", " 2023-12-17 โšฝ๏ธ Lille OSC - PSG (1-1) ", " 2022-03-24 ๐ŸŽก Dรฉpart de Meggi-mo ", @@ -12127,28 +12276,32 @@ " 2022-09-03 โšฝ๏ธ Nantes - Paris SG (0-3) ", " 2022-09-06 โšฝ๏ธ PSG - Juventus (2-1) ", " 2022-09-08 ๐ŸŸ๏ธ Diamond League Final ", - " 2022-09-13 ๐Ÿฝ๏ธ Diner Lorena ", - " 2022-09-14 โšฝ๏ธ Maccabi Haifa - PSG (1-3) ", - " 2022-09-18 โšฝ๏ธ Lyon - Paris SG (0-1) ", - " 2022-10-01 โšฝ๏ธ PSG - 0GC Nice (2-1) ", - " 2022-10-03 ๐Ÿ€ Meggi in Belfast ", - " 2022-10-05 โšฝ๏ธ Benfica - PSG (1-1) ", - " 2022-10-05 ๐Ÿ“ Conference on FinTech ", - " 2022-10-07 ๐Ÿ€ Weekend in Belfast ", - " 2022-10-11 โšฝ๏ธ PSG - Benfica (1-1) ", - " 2022-10-14 ๐Ÿ“ Weekend ร  GVA ", - " 2022-10-15 ๐Ÿฝ๏ธ Lunch w Marguerite & Arnold ", - " 2022-10-16 โšฝ๏ธ PSG - Marseille (1-0) ", - " 2022-10-21 ๐Ÿ—ผ Weekend ร  Paris ", - " 2022-10-22 โ˜•๏ธ Tea Time, fraterie ", - " 2022-10-23 ๐Ÿฝ๏ธ Lunch w Mutti ", - " 2022-10-29 โšฝ๏ธ PSG - Troyes (4-3) ", - " 2022-11-02 โšฝ๏ธ Juventus - PSG (1-2) ", - " 2022-11-13 โšฝ๏ธ PSG - AJ Auxerre (5-0) ", - " 2022-11-19 ๐Ÿ’ Fianรงailles Marguerite & Arnold ", - " 2022-11-20 ๐ŸŽ Mallorca " + " 2022-09-13 ๐Ÿฝ๏ธ Diner Lorena " ], "Tagged": [ + " Bao Bun ", + " Bistro Rigiblick ", + " Jardin Zรผrichberg ", + " Jardin Zรผrichberg ", + " Buech ", + " Restaurant Boldern ", + " Albishaus ", + " 2023-12-23 Visit ", + " Bookmarks - Art ", + " Water ", + " Gaslight ", + " The House of Doors ", + " Soldier Sailor ", + " Bad Kids ", + " Prophet Song ", + " Yoga ", + " Gaslight ", + " Yoga ", + " Mint Sauce ", + " Seasonal stroll ", + " Finca Racons ", + " Fazenda Dutra ", + " Sidamo Bio ", " Inside the Meltdown at CNN ", " Adrift An AP Investigation ", " Inside the Meltdown at CNN ", @@ -12176,32 +12329,15 @@ " The Power And The Glory ", " Babysitter ", " Mรฉmoires de Lรฉonard ", - " Le Temps gagnรฉ ", - " La Prochaine Fois que tu Mordras la Poussiรจre ", - " La Familia Grande ", - " The librarian who couldnโ€™t take it anymore ", - " Chasing Chop Suey Tracing Chinese Immigration Through Food ", - " A Coder Considers the Waning Days of the Craft ", - " Inside an OnlyFans empire Sex, influence and the new American Dream ", - " Sรผrpriz ", - " The Kite Runner ", - " โ€˜The good guys donโ€™t always winโ€™ Salman Rushdie on peace, Barbie and what freedom cost him ", - " They Tried to Expose Louisiana Judges Who Had Systematically Ignored Prisonersโ€™ Petitions. No One Listened. ", - " What Really Happened to JFK ", - " The Tunnels of Gaza ", - " How Does the Worldโ€™s Largest Hedge Fund Really Make Its Money ", - " A School of Their Own ", - " La Troccase ", - " Radix ", - " Vinyl Resistance ", - " Bourrache ", - " The โ€˜Crispy Rโ€™ and Why R Is the Weirdest Letter ", - " The Kite Runner ", - " Mรฉmoires de Lรฉonard ", - " Blanc de Noir - Nadine Saxer ", - " Baillotte " + " Le Temps gagnรฉ " ], "Refactored": [ + " Bookmarks - Investments ", + " Bookmarks - Mac applications ", + " Bookmarks - Work ", + " Bookmarks - Media ", + " Mint Sauce ", + " @Sally ", " Household ", " 2023-12-18 ", " 2023-12-18 ", @@ -12246,13 +12382,7 @@ " 2023-06-10 ", " 2023-06-09 ", " Long-hidden ruins of vast network of Maya cities could recast history ", - " 2023-05-27 ", - " Bookmarks - Selfhosted Apps ", - " 2023-05-21 ", - " 2023-05-10 ", - " 2023-04-24 ", - " 2023-04-22 ", - " Mallorca " + " 2023-05-27 " ], "Deleted": [ " 2023-01-06 Chateauroux - PSG ", @@ -12308,6 +12438,48 @@ " Providores " ], "Linked": [ + " 2023-12-27 ", + " 2023-12-27 ", + " 2023-12-23 Visit ", + " Seasonal Activities ", + " Bistro Rigiblick ", + " Jardin Zรผrichberg ", + " Buech ", + " Restaurant Boldern ", + " Albishaus ", + " 2023-12-23 Visit ", + " 2023-12-26 ", + " 2023-12-25 ", + " Bookmarks - Art ", + " Water ", + " Soldier Sailor ", + " Bad Kids ", + " Prophet Song ", + " The House of Doors ", + " Gaslight ", + " Yoga ", + " Mint Sauce ", + " Mint Sauce ", + " Seasonal stroll ", + " Sonne ", + " 2023-12-25 ", + " 2023-12-24 ", + " 2023-12-24 ", + " Finca Racons ", + " Finca Racons ", + " Fazenda Dutra ", + " Sidamo Bio ", + " 2023-12-24 ", + " 2023-12-24 ", + " 2023-12-22 ", + " 2023-12-23 ", + " 2023-12-23 ", + " Dances with Wolves (1990) ", + " The Man from Laramie (1955) ", + " 2023-12-23 ", + " 2023-12-23 ", + " 2023-12-23 ", + " 2023-12-22 ", " 2023-12-22 ", " 2023-12-22 ", " 2023-12-20 ", @@ -12316,51 +12488,12 @@ " Secrets of Playboy (2022โ€“2023) ", " 2023-12-21 ", " Inside the Meltdown at CNN ", - " Adrift An AP Investigation ", - " Reuters, New York Times Top List of Fossil Fuel Industryโ€™s Favorite Media Partners ", - " The call of Tokitae ", - " Taylor Swift Is TIME's 2023 Person of the Year ", - " They Tried to Expose Louisiana Judges Who Had Systematically Ignored Prisonersโ€™ Petitions. No One Listened. ", - " They Cracked the Code to a Locked USB Drive Worth $235 Million in Bitcoin. Then It Got Weird ", - " 2023-12-20 ", - " 2023-12-19 ", - " 2023-12-19 ", - " 2023-12-18 ", - " 2024-02-14 โšฝ๏ธ PSG - Real Sociefad ", - " 2024-03-05 โšฝ๏ธ Real Sociedad - PSG ", - " 2023-12-18 ", - " 2023-12-18 ", - " 2023-12-18 ", - " 2023-12-21 ๐Ÿ  Arrivรฉe Papa ", - " 2023-12-27 ๐Ÿ—ผ Dรฉpart Papa ", - " 2023-12-16 ", - " 2023-12-16 ๐Ÿ’ Ice Hockey League ", - " 2023-12-17 ", - " 2023-12-17 โšฝ๏ธ Lille OSC - PSG ", - " 2023-12-17 ", - " Adrift An AP Investigation ", - " Inside the Meltdown at CNN ", - " This Maine Fish House Is an Icon. But of What, Exactly ", - " โ€˜The good guys donโ€™t always winโ€™ Salman Rushdie on peace, Barbie and what freedom cost him ", - " Stories from Panchatantra ", - " My Father, My Faith, and Donald Trump ", - " Piecing Together My Fatherโ€™s Murder ", - " In Uvalde, Students Followed Active Shooter Protocol. The Cops Did Not. ", - " 2023-12-17 ", - " 2023-12-16 ", - " 2023-12-15 ", - " 2023-12-16 ", - " Inside Foxconnโ€™s struggle to make iPhones in India ", - " The Plight of the Oldest Sister ", - " 2023-12-16 ", - " 2023-12-15 ", - " 2023-12-15 ", - " 2023-12-14 ", - " 2023-12-13 ", - " 2023-12-13 ", - " 2023-12-13 " + " Adrift An AP Investigation " ], "Removed Tags from": [ + " Finca Racons ", + " Fazenda Dutra ", + " Sidamo Bio ", " Inside the Meltdown at CNN ", " This Maine Fish House Is an Icon. But of What, Exactly ", " Inside Foxconnโ€™s struggle to make iPhones in India ", @@ -12408,10 +12541,7 @@ " Configuring Caddy ", " Server VPN ", " Server Tools ", - " Server Alias ", - " Server Cloud ", - " Configuring Fail2ban ", - " Configuring Telegram bots " + " Server Alias " ], "Removed Links from": [ " @Commerces Paris ", diff --git a/.obsidian/plugins/obsidian-icon-folder/data.json b/.obsidian/plugins/obsidian-icon-folder/data.json new file mode 100644 index 00000000..974a842f --- /dev/null +++ b/.obsidian/plugins/obsidian-icon-folder/data.json @@ -0,0 +1,72 @@ +{ + "settings": { + "migrated": 3, + "iconPacksPath": ".obsidian/icons", + "fontSize": 16, + "emojiStyle": "native", + "iconColor": null, + "recentlyUsedIcons": [ + "TpLebvLogo", + "TpArmesHudelor2(1)", + "TpWappenTessinMatt", + "TpPalermoStemma3", + "TpBlasonVilleFrNiฬ‚mes(Gard)" + ], + "recentlyUsedIconsSize": 5, + "rules": [], + "extraMargin": { + "top": 0, + "right": 4, + "bottom": 0, + "left": 0 + }, + "iconInTabsEnabled": true, + "iconInTitleEnabled": false, + "iconInFrontmatterEnabled": false, + "iconsBackgroundCheckEnabled": false, + "iconsInNotesEnabled": true + }, + "02.03 Zรผrich": "TpZurichCoatOfArms", + "02.01 London": "TpCoatOfArmsOfTheCityOfLondon", + "02.02 Paris": "TpGrandesArmesDeParis", + "02.02 Paris/@@Paris.md": "TpGrandesArmesDeParis", + "02.01 London/@@London.md": "TpCoatOfArmsOfTheCityOfLondon", + "02.03 Zรผrich/@@Zรผrich.md": "TpZurichCoatOfArms", + "02.02 Paris/Paris SG.md": "TpParisSaintGermainLogo", + "02.01 London/Epsom Polo Club.md": "TpRL.D", + "02.03 Zรผrich/Polo Park Zรผrich.md": "TpRL.D", + "03.02 Travels/Son Ginard Polo Club.md": "TpRL.D", + "03.02 Travels/Iridike Polo Club.md": "TpRL.D", + "03.02 Travels/Geneva.md": "TpWappenGenfMatt", + "03.02 Travels/@Dubaรฏ.md": "TpCoatOfArmsOfDubai", + "03.02 Travels/@France.md": "TpCoatOfArmsOfFrance", + "03.02 Travels/@Italy.md": "TpCoatOfArmsOfTheKingdomOfItaly(1890)", + "03.02 Travels/@Morocco.md": "TpCoatOfArmsOfMorocco", + "03.02 Travels/@Spain.md": "TpCoatOfArmsOfSpain", + "03.02 Travels/@Switzerland.md": "TpCoatOfArmsOfSwitzerland", + "03.02 Travels/@Bahrein.md": "TpCoatOfArmsOfTheKingdomOfBahrain", + "03.02 Travels/@United States.md": "TpCoatOfArmsOfTheUnitedStatesOfAmerica", + "03.02 Travels/Jazz Route (US).md": "TpCoatOfArmsOfTheUnitedStatesOfAmerica", + "03.02 Travels/Mountain hikes in Switzerland.md": "TpCoatOfArmsOfSwitzerland", + "03.02 Travels/Skiing in Switzerland.md": "TpCoatOfArmsOfSwitzerland", + "03.02 Travels/RSA - Wine region.md": "TpCoatOfArmsOfSouthAfrica(heraldic)", + "03.02 Travels/Ethiopian holiday.md": "TpEmblemOfEthiopia", + "03.02 Travels/Arles.md": "TpBlasonArles13", + "03.02 Travels/Arosa.md": "TpArosaWappen", + "03.02 Travels/Avignon.md": "TpGrandesArmesD'Avignon", + "03.02 Travels/Bruxelles.md": "TpGreaterCoatOfArmsOfTheCityOfBrussels", + "03.02 Travels/Florence.md": "TpFlorenceCoA", + "03.02 Travels/Flumserberg.md": "TpFlumsBlazon", + "03.02 Travels/Grindelwald.md": "TpGrindelwaldCoatOfArms", + "03.02 Travels/Madrid.md": "TpArmsOfMadridCity", + "03.02 Travels/Mallorca.md": "TpArmoiriesMajorque", + "03.02 Travels/Marseille.md": "TpBlasonMarseille", + "03.02 Travels/Miami.md": "TpSealOfMiami,Florida", + "03.02 Travels/Milan.md": "TpCoACittaฬ€DiMilano", + "03.02 Travels/New York.md": "TpCoatOfArmsOfNewYork", + "03.02 Travels/Nimes.md": "TpBlasonVilleFrNiฬ‚mes(Gard)", + "03.02 Travels/Palermo.md": "TpPalermoStemma3", + "03.02 Travels/Ticino.md": "TpWappenTessinMatt", + "04.01 lebv.org": "TpLebvLogo", + "04.01 lebv.org/@lebv.org.md": "TpLebvLogo" +} \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-icon-folder/main.js b/.obsidian/plugins/obsidian-icon-folder/main.js new file mode 100644 index 00000000..8405c897 --- /dev/null +++ b/.obsidian/plugins/obsidian-icon-folder/main.js @@ -0,0 +1,6135 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY ROLLUP +if you want to view the source visit the plugins github repository +*/ + +'use strict'; + +var obsidian = require('obsidian'); +var view = require('@codemirror/view'); +var language = require('@codemirror/language'); +var state = require('@codemirror/state'); + +/****************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ + +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()); + }); +} + +typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { + var e = new Error(message); + return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; +}; + +// This library file does not include any other dependency and is a standalone file that +// only include utility functions for manipulating or extracting svg information. +/** + * Extracts an SVG string from a given input string and returns a cleaned up and + * formatted SVG string. + * @param svgString SVG string to extract from. + * @returns Cleaned up and formatted SVG string. + */ +const extract = (svgString) => { + var _a, _b; + // Removes unnecessary spaces and newlines. + svgString = svgString.replace(/(\r\n|\n|\r)/gm, ''); + svgString = svgString.replace(/>\s+<'); + // Create a parser for better parsing of HTML. + const parser = new DOMParser(); + const svg = parser + .parseFromString(svgString, 'text/html') + .querySelector('svg'); + // Removes `width` and `height` from the `style` attribute. + if (svg.hasAttribute('style')) { + svg.style.width = ''; + svg.style.height = ''; + } + // Add `viewbox`, if it is not already a attribute. + if (svg.viewBox.baseVal.width === 0 && svg.viewBox.baseVal.height === 0) { + const width = (_a = svg.width.baseVal.value) !== null && _a !== void 0 ? _a : 16; + const height = (_b = svg.height.baseVal.value) !== null && _b !== void 0 ? _b : 16; + svg.viewBox.baseVal.width = width; + svg.viewBox.baseVal.height = height; + } + if (!svg.hasAttribute('fill')) { + svg.setAttribute('fill', 'currentColor'); + } + svg.setAttribute('width', '16px'); + svg.setAttribute('height', '16px'); + return svg.outerHTML; +}; +/** + * Sets the font size of an SVG string by modifying its width and/or height attributes. + * The font size will be always set in pixels. + * @param svgString SVG string to modify. + * @param fontSize Font size in pixels to set. + * @returns Modified SVG string. + */ +const setFontSize = (svgString, fontSize) => { + const widthRe = new RegExp(/width="[\d.]+(px)?"/); + const heightRe = new RegExp(/height="[\d.]+(px)?"/); + if (svgString.match(widthRe)) { + svgString = svgString.replace(widthRe, `width="${fontSize}px"`); + } + if (svgString.match(heightRe)) { + svgString = svgString.replace(heightRe, `height="${fontSize}px"`); + } + return svgString; +}; +/** + * Replaces the fill or stroke color of an SVG string with a given color. + * @param svgString SVG string to modify. + * @param color Color to set. Defaults to 'currentColor'. + * @returns The modified SVG string. + */ +const colorize = (svgString, color) => { + if (!color) { + color = 'currentColor'; + } + const parser = new DOMParser(); + // Tries to parse the string into a HTML node. + const parsedNode = parser.parseFromString(svgString, 'text/html'); + const svg = parsedNode.querySelector('svg'); + if (svg) { + if (svg.hasAttribute('fill') && svg.getAttribute('fill') !== 'none') { + svg.setAttribute('fill', color); + } + else if (svg.hasAttribute('stroke') && + svg.getAttribute('stroke') !== 'none') { + svg.setAttribute('stroke', color); + } + return svg.outerHTML; + } + return svgString; +}; +var svg = { + extract, + colorize, + setFontSize, +}; + +var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function commonjsRequire(path) { + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.'); +} + +var jszip_min = {exports: {}}; + +/*! + +JSZip v3.10.1 - A JavaScript class for generating and reading zip files + + +(c) 2009-2016 Stuart Knightley +Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown. + +JSZip uses the library pako released under the MIT license : +https://github.com/nodeca/pako/blob/main/LICENSE +*/ +jszip_min.exports; + +(function (module, exports) { + !function(e){module.exports=e();}(function(){return function s(a,o,h){function u(r,e){if(!o[r]){if(!a[r]){var t="function"==typeof commonjsRequire&&commonjsRequire;if(!e&&t)return t(r,!0);if(l)return l(r,!0);var n=new Error("Cannot find module '"+r+"'");throw n.code="MODULE_NOT_FOUND",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return u(t||e)},i,i.exports,s,a,o,h);}return o[r].exports}for(var l="function"==typeof commonjsRequire&&commonjsRequire,e=0;e>2,s=(3&t)<<4|r>>4,a=1>6:64,o=2>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),l[h++]=t,64!==s&&(l[h++]=r),64!==a&&(l[h++]=n);return l};},{"./support":30,"./utils":32}],2:[function(e,t,r){var n=e("./external"),i=e("./stream/DataWorker"),s=e("./stream/Crc32Probe"),a=e("./stream/DataLengthProbe");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i;}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a("data_length")),t=this;return e.on("end",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a("uncompressedSize")).pipe(t.compressWorker(r)).pipe(new a("compressedSize")).withStreamInfo("compression",t)},t.exports=o;},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(e,t,r){var n=e("./stream/GenericWorker");r.STORE={magic:"\0\0",compressWorker:function(){return new n("STORE compression")},uncompressWorker:function(){return new n("STORE decompression")}},r.DEFLATE=e("./flate");},{"./flate":7,"./stream/GenericWorker":28}],4:[function(e,t,r){var n=e("./utils");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e;}return t}();t.exports=function(e,t){return void 0!==e&&e.length?"string"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return -1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t.charCodeAt(a))];return -1^e}(0|t,e,e.length,0):0};},{"./utils":32}],5:[function(e,t,r){r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null;},{}],6:[function(e,t,r){var n=null;n="undefined"!=typeof Promise?Promise:e("lie"),t.exports={Promise:n};},{lie:37}],7:[function(e,t,r){var n="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,i=e("pako"),s=e("./utils"),a=e("./stream/GenericWorker"),o=n?"uint8array":"array";function h(e,t){a.call(this,"FlateWorker/"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={};}r.magic="\b\0",s.inherits(h,a),h.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1);},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0);},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null;},h.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta});};},r.compressWorker=function(e){return new h("Deflate",e)},r.uncompressWorker=function(){return new h("Inflate",{})};},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(e,t,r){function A(e,t){var r,n="";for(r=0;r>>=8;return n}function n(e,t,r,n,i,s){var a,o,h=e.file,u=e.compression,l=s!==O.utf8encode,f=I.transformTo("string",s(h.name)),c=I.transformTo("string",O.utf8encode(h.name)),d=h.comment,p=I.transformTo("string",s(d)),m=I.transformTo("string",O.utf8encode(d)),_=c.length!==h.name.length,g=m.length!==d.length,b="",v="",y="",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),"UNIX"===i?(C=798,z|=function(e,t){var r=e;return e||(r=t?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(e){return 63&(e||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+c,b+="up"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+="uc"+A(y.length,2)+y);var E="";return E+="\n\0",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+"\0\0\0\0"+A(z,4)+A(n,4)+f+b+p}}var I=e("../utils"),i=e("../stream/GenericWorker"),O=e("../utf8"),B=e("../crc32"),R=e("../signature");function s(e,t,r,n){i.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[];}I.inherits(s,i),s.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,i.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}));},s.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}});}else this.accumulate=!0;},s.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:function(e){return R.DATA_DESCRIPTOR+A(e.crc32,4)+A(e.compressedSize,4)+A(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null;},s.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo("string",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i;},{"../utils":32}],19:[function(e,t,r){var n=e("./Uint8ArrayReader");function i(e){n.call(this,e);}e("../utils").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i;},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(e,t,r){var n=e("./DataReader");function i(e){n.call(this,e);}e("../utils").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i;},{"../utils":32,"./DataReader":18}],21:[function(e,t,r){var n=e("./ArrayReader");function i(e){n.call(this,e);}e("../utils").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i;},{"../utils":32,"./ArrayReader":17}],22:[function(e,t,r){var n=e("../utils"),i=e("../support"),s=e("./ArrayReader"),a=e("./StringReader"),o=e("./NodeBufferReader"),h=e("./Uint8ArrayReader");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),"string"!==t||i.uint8array?"nodebuffer"===t?new o(e):i.uint8array?new h(n.transformTo("uint8array",e)):new s(n.transformTo("array",e)):new a(e)};},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(e,t,r){r.LOCAL_FILE_HEADER="PK",r.CENTRAL_FILE_HEADER="PK",r.CENTRAL_DIRECTORY_END="PK",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",r.ZIP64_CENTRAL_DIRECTORY_END="PK",r.DATA_DESCRIPTOR="PK\b";},{}],24:[function(e,t,r){var n=e("./GenericWorker"),i=e("../utils");function s(e){n.call(this,"ConvertWorker to "+e),this.destType=e;}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta});},t.exports=s;},{"../utils":32,"./GenericWorker":28}],25:[function(e,t,r){var n=e("./GenericWorker"),i=e("../crc32");function s(){n.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0);}e("../utils").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e);},t.exports=s;},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(e,t,r){var n=e("../utils"),i=e("./GenericWorker");function s(e){i.call(this,"DataLengthProbe for "+e),this.propName=e,this.withStreamInfo(e,0);}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length;}i.prototype.processChunk.call(this,e);},t.exports=s;},{"../utils":32,"./GenericWorker":28}],27:[function(e,t,r){var n=e("../utils"),i=e("./GenericWorker");function s(e){i.call(this,"DataWorker");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat();},function(e){t.error(e);});}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null;},s.prototype.resume=function(){return !!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0));},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return !1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":e=this.data.substring(this.index,t);break;case"uint8array":e=this.data.subarray(this.index,t);break;case"array":case"nodebuffer":e=this.data.slice(this.index,t);}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s;},{"../utils":32,"./GenericWorker":28}],28:[function(e,t,r){function n(e){this.name=e||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null;}n.prototype={push:function(e){this.emit("data",e);},end:function(){if(this.isFinished)return !1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0;}catch(e){this.emit("error",e);}return !0},error:function(e){return !this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit("error",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[];},emit:function(e,t){if(this._listeners[e])for(var r=0;r "+e:e}},t.exports=n;},{}],29:[function(e,t,r){var h=e("../utils"),i=e("./ConvertWorker"),s=e("./GenericWorker"),u=e("../base64"),n=e("../support"),a=e("../external"),o=null;if(n.nodestream)try{o=e("../nodejs/NodejsStreamOutputAdapter");}catch(e){}function l(e,o){return new a.Promise(function(t,r){var n=[],i=e._internalType,s=e._outputType,a=e._mimeType;e.on("data",function(e,t){n.push(e),o&&o(t);}).on("error",function(e){n=[],r(e);}).on("end",function(){try{var e=function(e,t,r){switch(e){case"blob":return h.newBlob(h.transformTo("arraybuffer",t),r);case"base64":return u.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return h.nodebuffer?o.transformTo("nodebuffer",e).toString("utf-8"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t>10&1023,a[r++]=56320|1023&n);}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(h.uint8array?"uint8array":"array",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(h.uint8array?"uint8array":"array",e.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length);}else t=this.leftOver.concat(t);this.leftOver=null;}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}(t),i=t;n!==t.length&&(h.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta});},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null);},s.Utf8DecodeWorker=a,o.inherits(l,n),l.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta});},s.Utf8EncodeWorker=l;},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(e,t,a){var o=e("./support"),h=e("./base64"),r=e("./nodejsUtils"),u=e("./external");function n(e){return e}function l(e,t){for(var r=0;r>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileNameStr.slice(-1)||(this.dir=!0);},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4));}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return l(e,e.length)},r.binstring2buf=function(e){for(var t=new h.Buf8(e.length),r=0,n=t.length;r>10&1023,o[n++]=56320|1023&i);}return l(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t};},{"./common":41}],43:[function(e,t,r){t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3>>1:e>>>1;t[r]=e;}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return -1^e};},{}],46:[function(e,t,r){var h,c=e("../utils/common"),u=e("./trees"),d=e("./adler32"),p=e("./crc32"),n=e("./messages"),l=0,f=4,m=0,_=-2,g=-1,b=4,i=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(e,t){return e.msg=n[t],t}function T(e){return (e<<1)-(4e.avail_out&&(r=e.avail_out),0!==r&&(c.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0));}function N(e,t){u._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,F(e.strm);}function U(e,t){e.pending_buf[e.pending++]=t;}function P(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t;}function L(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,h=e.strstart>e.w_size-z?e.strstart-(e.w_size-z):0,u=e.window,l=e.w_mask,f=e.prev,c=e.strstart+S,d=u[s+a-1],p=u[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(u[(r=t)+a]===p&&u[r+a-1]===d&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&sh&&0!=--i);return a<=e.lookahead?a:e.lookahead}function j(e){var t,r,n,i,s,a,o,h,u,l,f=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-z)){for(c.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=r=e.hash_size;n=e.head[--t],e.head[t]=f<=n?n-f:0,--r;);for(t=r=f;n=e.prev[--t],e.prev[t]=f<=n?n-f:0,--r;);i+=f;}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,h=e.strstart+e.lookahead,u=i,l=void 0,l=a.avail_in,u=x)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x)if(n=u._tr_tally(e,e.strstart-e.match_start,e.match_length-x),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=x){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-x,n=u._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-x),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(j(e),0===e.lookahead&&t===l)return A;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,N(e,!1),0===e.strm.avail_out))return A;if(e.strstart-e.block_start>=e.w_size-z&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):(e.strstart>e.block_start&&(N(e,!1),e.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(e,t){return Y(e,t,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?_:(e.state.gzhead=t,m):_},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=E);else {var a=v+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=E,P(n,a),0!==n.strstart&&(P(n,e.adler>>>16),P(n,65535&e.adler)),e.adler=1;}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73);}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91);}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103);}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&F(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=E)):n.status=E),0!==n.pending){if(F(e),0===e.avail_out)return n.last_flush=-1,m}else if(0===e.avail_in&&T(t)<=T(r)&&t!==f)return R(e,-5);if(666===n.status&&0!==e.avail_in)return R(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==l&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(j(e),0===e.lookahead)){if(t===l)return A;break}if(e.match_length=0,r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=S){if(j(e),e.lookahead<=S&&t===l)return A;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=x&&0e.lookahead&&(e.match_length=e.lookahead);}if(e.match_length>=x?(r=u._tr_tally(e,1,e.match_length-x),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):h[n.level].func(n,t);if(o!==O&&o!==B||(n.status=666),o===A||o===O)return 0===e.avail_out&&(n.last_flush=-1),m;if(o===I&&(1===t?u._tr_align(n):5!==t&&(u._tr_stored_block(n,0,0,!1),3===t&&(D(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),F(e),0===e.avail_out))return n.last_flush=-1,m}return t!==f?m:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),F(e),0=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new c.Buf8(r.w_size),c.arraySet(u,t,l-r.w_size,r.w_size,0),t=u,l=r.w_size),a=e.avail_in,o=e.next_in,h=e.input,e.avail_in=l,e.next_in=0,e.input=t,j(r);r.lookahead>=x;){for(n=r.strstart,i=r.lookahead-(x-1);r.ins_h=(r.ins_h<>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else {if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(d&(1<>>=y,p-=y),p<15&&(d+=z[n++]<>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(d&(1<>>=y,p-=y,(y=s-a)>3,d&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0;}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function h(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg="incorrect header check",r.mode=30;break}if(8!=(15&u)){e.msg="unknown compression method",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg="invalid window size",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>>8&255,r.check=B(r.check,E,2,0)),l=u=0;}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(d=r.length)&&(d=o),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,d,k)),512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,r.length-=d),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&d>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break e;o--,u+=n[s++]<>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;u>>>=2,l-=2;break e;case 2:r.mode=17;break;case 3:e.msg="invalid block type",r.mode=30;}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break e;o--,u+=n[s++]<>>16^65535)){e.msg="invalid stored block lengths",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(d=r.length){if(o>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286>>=3,l-=3;}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg="invalid code lengths set",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=_,l-=_,r.lens[r.have++]=b;else {if(16===b){for(z=_+2;l>>=_,l-=_,0===r.have){e.msg="invalid bit length repeat",r.mode=30;break}k=r.lens[r.have-1],d=3+(3&u),u>>>=2,l-=2;}else if(17===b){for(z=_+3;l>>=_)),u>>>=3,l-=3;}else {for(z=_+7;l>>=_)),u>>>=7,l-=7;}if(r.have+d>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=30;break}for(;d--;)r.lens[r.have++]=k;}}if(30===r.mode)break;if(0===r.lens[256]){e.msg="invalid code -- missing end-of-block",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg="invalid literal/lengths set",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg="invalid distances set",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=h){e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,R(e,c),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v;}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg="invalid literal/length code",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra;}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v;}if(u>>>=_,l-=_,r.back+=_,64&g){e.msg="invalid distance code",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra;}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=30;break}r.mode=25;case 25:if(0===h)break e;if(d=c-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=30;break}p=d>r.wnext?(d-=r.wnext,r.wsize-d):r.wnext-d,d>r.length&&(d=r.length),m=r.window;}else m=i,p=a-r.offset,d=r.length;for(hd?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=t[r+a[v]];}if(k>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255;}function P(e,t,r){e.bi_valid>d-r?(e.bi_buf|=t<>d-e.bi_valid,e.bi_valid+=r-d):(e.bi_buf|=t<>>=1,r<<=1,0<--t;);return r>>>1}function Z(e,t,r){var n,i,s=new Array(g+1),a=0;for(n=1;n<=g;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=j(s[o]++,o));}}function W(e){var t;for(t=0;t>1;1<=r;r--)G(e,s,r);for(i=h;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],G(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,G(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,h=t.dyn_tree,u=t.max_code,l=t.stat_desc.static_tree,f=t.stat_desc.has_stree,c=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=g;s++)e.bl_count[s]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)p<(s=h[2*h[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),h[2*n+1]=s,u>=7;n>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return o;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return h;for(t=32;t>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?J(e,t,r,n):4===e.strategy||s===i?(P(e,2+(n?1:0),3),K(e,z,C)):(P(e,4+(n?1:0),3),function(e,t,r,n){var i;for(P(e,t-257,5),P(e,r-1,5),P(e,n-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(A[r]+u+1)]++,e.dyn_dtree[2*N(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){P(e,2,3),L(e,m,z),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8);}(e);};},{"../utils/common":41}],53:[function(e,t,r){t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0;};},{}],54:[function(e,t,r){(function(e){!function(r,n){if(!r.setImmediate){var i,s,t,a,o=1,h={},u=!1,l=r.document,e=Object.getPrototypeOf&&Object.getPrototypeOf(r);e=e&&e.setTimeout?e:r,i="[object process]"==={}.toString.call(r.process)?function(e){process.nextTick(function(){c(e);});}:function(){if(r.postMessage&&!r.importScripts){var e=!0,t=r.onmessage;return r.onmessage=function(){e=!1;},r.postMessage("","*"),r.onmessage=t,e}}()?(a="setImmediate$"+Math.random()+"$",r.addEventListener?r.addEventListener("message",d,!1):r.attachEvent("onmessage",d),function(e){r.postMessage(a+e,"*");}):r.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){c(e.data);},function(e){t.port2.postMessage(e);}):l&&"onreadystatechange"in l.createElement("script")?(s=l.documentElement,function(e){var t=l.createElement("script");t.onreadystatechange=function(){c(e),t.onreadystatechange=null,s.removeChild(t),t=null;},s.appendChild(t);}):function(e){setTimeout(c,0,e);},e.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),r=0;r __awaiter(void 0, void 0, void 0, function* () { + const fetched = yield obsidian.requestUrl({ url }); + const bytes = fetched.arrayBuffer; + return bytes; +}); +/** + * Transforms a JSZip file into a File object. + * @param file JSZip file to transform. + * @returns File object of the JSZip file. + */ +const getFileFromJSZipFile = (file) => __awaiter(void 0, void 0, void 0, function* () { + const fileData = yield file.async('blob'); + const filename = file.name.split('/').pop(); + return new File([fileData], filename); +}); +/** + * Read a zip file and return the files inside it. + * @param bytes ArrayBuffer of the zip file. + * @param extraPath String path to filter the files inside the zip file. This can be used + * to set an extra path (like a directory inside the zip file) to filter the files. + * @returns Array of loaded files inside the zip file. + */ +const readZipFile = (bytes, extraPath = '') => __awaiter(void 0, void 0, void 0, function* () { + const unzippedFiles = yield jszip_minExports.loadAsync(bytes); + return Promise.resolve(unzippedFiles).then((unzipped) => { + if (!Object.keys(unzipped.files).length) { + return Promise.reject('No file was found'); + } + const files = []; + // Regex for retrieving the files inside the zip file or inside the directory of a + // zip file. + const regex = new RegExp(extraPath + '(.+)\\.svg', 'g'); + Object.entries(unzippedFiles.files).forEach(([_, v]) => { + const matched = v.name.match(regex); + if (!v.dir && matched && matched.length > 0) { + files.push(v); + } + }); + return files; + }); +}); + +const PLUGIN_NAME = 'iconize'; +const TITLE_ICON_CLASS = 'iconize-title-icon'; +/** + * The name of the attribute that is used to store the icon name in the node. + * The value of this attributes contains the prefix and the name of the icon. + */ +const ICON_ATTRIBUTE_NAME = 'data-icon'; +var config = { + PLUGIN_NAME, + TITLE_ICON_CLASS, + ICON_ATTRIBUTE_NAME, +}; + +const iconPacks$1 = { + faBrands: { + name: 'font-awesome-brands', + displayName: 'FontAwesome Brands', + path: 'fontawesome-free-6.4.2-web/svgs/brands/', + downloadLink: 'https://github.com/FortAwesome/Font-Awesome/releases/download/6.4.2/fontawesome-free-6.4.2-web.zip', + }, + faRegular: { + name: 'font-awesome-regular', + displayName: 'FontAwesome Regular', + path: 'fontawesome-free-6.4.2-web/svgs/regular/', + downloadLink: 'https://github.com/FortAwesome/Font-Awesome/releases/download/6.4.2/fontawesome-free-6.4.2-web.zip', + }, + faSolid: { + name: 'font-awesome-solid', + displayName: 'FontAwesome Solid', + path: 'fontawesome-free-6.4.2-web/svgs/solid/', + downloadLink: 'https://github.com/FortAwesome/Font-Awesome/releases/download/6.4.2/fontawesome-free-6.4.2-web.zip', + }, + remixIcons: { + name: 'remix-icons', + displayName: 'Remix Icons', + path: '', + downloadLink: 'https://github.com/Remix-Design/RemixIcon/releases/download/v3.5.0/RemixIcon_Svg_v3.5.0.zip', + }, + iconBrew: { + name: 'icon-brew', + displayName: 'Icon Brew', + path: '', + downloadLink: 'https://github.com/FlorianWoelki/obsidian-iconize/raw/main/iconPacks/icon-brew.zip', + }, + /** @source https://simpleicons.org/ */ + simpleIcons: { + name: 'simple-icons', + displayName: 'Simple Icons', + path: 'simple-icons-9.14.0/icons', + downloadLink: 'https://github.com/simple-icons/simple-icons/archive/refs/tags/9.14.0.zip', + }, + lucide: { + name: 'lucide-icons', + displayName: 'Lucide', + path: '', + downloadLink: 'https://github.com/lucide-icons/lucide/releases/download/0.277.0/lucide-icons-0.277.0.zip', + }, + tablerIcons: { + name: 'tabler-icons', + displayName: 'Tabler Icons', + path: 'svg', + downloadLink: 'https://github.com/tabler/tabler-icons/releases/download/v2.34.0/tabler-icons-2.34.0.zip', + }, + /** @source https://boxicons.com/ */ + boxicons: { + name: 'boxicons', + displayName: 'Boxicons', + path: 'svg', + downloadLink: 'https://github.com/FlorianWoelki/obsidian-iconize/raw/main/iconPacks/boxicons.zip', + }, + /** @source http://nagoshiashumari.github.io/Rpg-Awesome/ */ + rpgAwesome: { + name: 'rpg-awesome', + displayName: 'RPG Awesome', + path: '', + downloadLink: 'https://github.com/FlorianWoelki/obsidian-iconize/raw/main/iconPacks/rpg-awesome.zip', + }, + /** @source https://coolicons.cool/ */ + coolicons: { + name: 'coolicons', + displayName: 'Coolicons', + path: 'cooliocns SVG', + downloadLink: 'https://github.com/krystonschwarze/coolicons/releases/download/v4.1/coolicons.v4.1.zip', + }, +}; +/** + * Returns a possible path to the icon pack. + * @param name String of the icon pack name. + * @returns String of the path to the icon pack or undefined if the icon pack does not + * exist. + */ +const getExtraPath = (iconPackName) => { + var _a; + const path = (_a = Object.values(iconPacks$1).find((iconPack) => iconPack.name === iconPackName)) === null || _a === void 0 ? void 0 : _a.path; + return (path === null || path === void 0 ? void 0 : path.length) === 0 ? undefined : path; +}; + +let path; +const getPath = () => { + return path; +}; +const setPath = (newPath) => { + if (newPath === 'plugins/obsidian-icon-folder/icons') { + newPath = '.obsidian/plugins/obsidian-icon-folder/icons'; + new obsidian.Notice(`[${config.PLUGIN_NAME}] Due to a change in version v1.2.2, the icon pack folder changed. Please change it in the settings to not be directly in /plugins.`, 8000); + } + path = newPath; +}; +let preloadedIcons = []; +const getPreloadedIcons = () => { + return preloadedIcons; +}; +const resetPreloadedIcons = () => { + preloadedIcons = []; +}; +let iconPacks = []; +const moveIconPackDirectories = (plugin, from, to) => __awaiter(void 0, void 0, void 0, function* () { + // Tries to move all icon packs to the new folder. + for (let i = 0; i < iconPacks.length; i++) { + const iconPack = iconPacks[i]; + if (yield plugin.app.vault.adapter.exists(`${from}/${iconPack.name}`)) { + // Tries to create a new directory in the new path. + const doesDirExist = yield createDirectory(plugin, iconPack.name); + if (doesDirExist) { + new obsidian.Notice(`Directory with name ${iconPack.name} already exists.`); + continue; + } + } + new obsidian.Notice(`Moving ${iconPack.name}...`); + // Move the zip file. + if (yield plugin.app.vault.adapter.exists(`${from}/${iconPack.name}.zip`)) { + yield plugin.app.vault.adapter.copy(`${from}/${iconPack.name}.zip`, `${to}/${iconPack.name}.zip`); + } + // Move all other files inside of the iconpack directory. + const filesInDirectory = yield getFilesInDirectory(plugin, `${from}/${iconPack.name}`); + for (const file of filesInDirectory) { + const fileName = file.split('/').pop(); + yield plugin.app.vault.adapter.copy(`${from}/${iconPack.name}/${fileName}`, `${to}/${iconPack.name}/${fileName}`); + } + new obsidian.Notice(`...moved ${iconPack.name}`); + } + // Removes all the existing icon packs in the `from` directory. + for (let i = 0; i < iconPacks.length; i++) { + const iconPack = iconPacks[i]; + if (yield plugin.app.vault.adapter.exists(`${from}/${iconPack.name}`)) { + yield plugin.app.vault.adapter.rmdir(`${from}/${iconPack.name}`, true); + } + } + // Remove root directory that contains all the icon packs. + if (!to.startsWith(from)) { + yield plugin.app.vault.adapter.rmdir(`${from}`, true); + } +}); +const createCustomIconPackDirectory = (plugin, dir) => __awaiter(void 0, void 0, void 0, function* () { + yield createDirectory(plugin, dir); + const prefix = createIconPackPrefix(dir); + iconPacks.push({ name: dir, icons: [], prefix, custom: true }); +}); +const deleteIconPack = (plugin, dir) => __awaiter(void 0, void 0, void 0, function* () { + iconPacks = iconPacks.filter((iconPack) => iconPack.name !== dir); + // Check for the icon pack directory and delete it. + if (yield plugin.app.vault.adapter.exists(`${path}/${dir}`)) { + yield plugin.app.vault.adapter.rmdir(`${path}/${dir}`, true); + } + // Check for the icon pack zip file and delete it. + if (yield plugin.app.vault.adapter.exists(`${path}/${dir}.zip`)) { + yield plugin.app.vault.adapter.remove(`${path}/${dir}.zip`); + } +}); +const doesIconPackExist = (plugin, iconPackName) => { + return plugin.app.vault.adapter.exists(`${path}/${iconPackName}`); +}; +const createDirectory = (plugin, dir) => __awaiter(void 0, void 0, void 0, function* () { + const doesDirExist = yield plugin.app.vault.adapter.exists(`${path}/${dir}`); + if (!doesDirExist) { + yield plugin.app.vault.adapter.mkdir(`${path}/${dir}`); + } + return doesDirExist; +}); +const getNormalizedName = (s) => { + return s + .split(/[ -]|[ _]/g) + .map((part) => part.charAt(0).toUpperCase() + part.slice(1)) + .join(''); +}; +// export const normalizeFileName = async (plugin: Plugin, oldPath: string) => { +// const fileName = oldPath.split('/').pop(); +// const newPath = oldPath.substring(0, oldPath.indexOf(fileName)) + getNormalizedName(fileName); +// await plugin.app.vault.adapter.rename(oldPath, newPath); +// }; +const createZipFile = (plugin, filename, buffer) => __awaiter(void 0, void 0, void 0, function* () { + yield plugin.app.vault.adapter.writeBinary(`${path}/${filename}`, buffer); +}); +const createFile = (plugin, iconPackName, filename, content, absoluteFilename) => __awaiter(void 0, void 0, void 0, function* () { + const normalizedFilename = getNormalizedName(filename); + const exists = yield plugin.app.vault.adapter.exists(`${path}/${iconPackName}/${normalizedFilename}`); + if (exists) { + const folderSplit = absoluteFilename.split('/'); + if (folderSplit.length >= 2) { + const folderName = folderSplit[folderSplit.length - 2]; + const newFilename = folderName + normalizedFilename; + yield plugin.app.vault.adapter.write(`${path}/${iconPackName}/${newFilename}`, content); + console.info(`[${config.PLUGIN_NAME}] Renamed old file ${normalizedFilename} to ${newFilename} because of duplication.`); + new obsidian.Notice(`[${config.PLUGIN_NAME}] Renamed ${normalizedFilename} to ${newFilename} to avoid duplication.`, 8000); + } + else { + console.warn(`[${config.PLUGIN_NAME}] Could not create icons with duplicated file names (${normalizedFilename}).`); + new obsidian.Notice(`[${config.PLUGIN_NAME}] Could not create duplicated icon name (${normalizedFilename})`, 8000); + } + } + else { + yield plugin.app.vault.adapter.write(`${path}/${iconPackName}/${normalizedFilename}`, content); + } +}); +const createDefaultDirectory = (plugin) => __awaiter(void 0, void 0, void 0, function* () { + yield createDirectory(plugin, ''); +}); +const getAllIconPacks = () => { + return iconPacks; +}; +const getFilesInDirectory = (plugin, dir) => __awaiter(void 0, void 0, void 0, function* () { + if (!(yield plugin.app.vault.adapter.exists(dir))) { + return []; + } + return (yield plugin.app.vault.adapter.list(dir)).files; +}); +const validIconName = /^[(A-Z)|(0-9)]/; +const svgViewboxRegex = /viewBox="([^"]*)"/g; +const svgContentRegex = /(.*?)<\/svg>/g; +const generateIcon = (iconPackName, iconName, content) => { + if (content.length === 0) { + return; + } + content = content.replace(/(\r\n|\n|\r)/gm, ''); + content = content.replace(/>\s+<'); + const normalizedName = iconName.charAt(0).toUpperCase() + iconName.substring(1); + if (!validIconName.exec(normalizedName)) { + console.log(`skipping icon with invalid name: ${iconName}`); + return null; + } + const svgViewboxMatch = content.match(svgViewboxRegex); + let svgViewbox = ''; + if (svgViewboxMatch && svgViewboxMatch.length !== 0) { + svgViewbox = svgViewboxMatch[0]; + } + const svgContentMatch = content.match(svgContentRegex); + if (!svgContentMatch) { + console.log(`skipping icon with invalid svg content: ${content}`); + return null; + } + const svgContent = svgContentMatch.map((val) => val.replace(/<\/?svg>/g, '').replace(//g, ''))[0]; + const iconPackPrefix = createIconPackPrefix(iconPackName); + const icon = { + name: normalizedName.split('.svg')[0], + prefix: iconPackPrefix, + iconPackName, + filename: iconName, + svgContent, + svgViewbox, + svgElement: svg.extract(content), + }; + return icon; +}; +const createIconPackPrefix = (iconPackName) => { + if (iconPackName.includes('-')) { + const splitted = iconPackName.split('-'); + let result = splitted[0].charAt(0).toUpperCase(); + for (let i = 1; i < splitted.length; i++) { + result += splitted[i].charAt(0).toLowerCase(); + } + return result; + } + return (iconPackName.charAt(0).toUpperCase() + iconPackName.charAt(1).toLowerCase()); +}; +const loadUsedIcons = (plugin, icons) => __awaiter(void 0, void 0, void 0, function* () { + const iconPacks = (yield listPath(plugin)).folders.map((iconPack) => iconPack.split('/').pop()); + for (let i = 0; i < icons.length; i++) { + const entry = icons[i]; + if (!entry) { + continue; + } + yield loadIcon(plugin, iconPacks, entry); + } +}); +const listPath = (plugin, listPath) => { + return plugin.app.vault.adapter.list(listPath !== null && listPath !== void 0 ? listPath : path); +}; +const getIconPackNameByPrefix = (prefix) => { + var _a; + return (_a = iconPacks.find((iconPack) => iconPack.prefix === prefix)) === null || _a === void 0 ? void 0 : _a.name; +}; +const nextIdentifier = (iconName) => { + return iconName.substring(1).search(/[(A-Z)|(0-9)]/) + 1; +}; +const loadIcon = (plugin, iconPacks, iconName) => __awaiter(void 0, void 0, void 0, function* () { + const nextLetter = nextIdentifier(iconName); + const prefix = iconName.substring(0, nextLetter); + const name = iconName.substring(nextLetter); + const iconPack = iconPacks.find((folder) => { + const folderPrefix = createIconPackPrefix(folder); + return prefix === folderPrefix; + }); + if (!iconPack) { + // Ignore because background check automatically adds the icons and icon pack + // directories. + if (!plugin.getSettings().iconsBackgroundCheckEnabled) { + new obsidian.Notice(`Seems like you do not have an icon pack installed. (${iconName})`, 5000); + } + return; + } + const fullPath = path + '/' + iconPack + '/' + name + '.svg'; + if (!(yield plugin.app.vault.adapter.exists(fullPath))) { + console.warn(`[iconize] icon with name "${name}" was not found (full path: ${fullPath}).`); + return; + } + const content = yield plugin.app.vault.adapter.read(fullPath); + const icon = generateIcon(iconPack, name, content); + preloadedIcons.push(icon); +}); +const initIconPacks = (plugin) => __awaiter(void 0, void 0, void 0, function* () { + // Remove the beginning slash because paths which start with `/` are the same as without + // a slash. + if (path.startsWith('/')) { + path = path.slice(1); + } + const loadedIconPacks = yield plugin.app.vault.adapter.list(path); + // Extract all zip files which will be downloaded icon packs. + const zipFiles = {}; + for (let i = 0; i < loadedIconPacks.files.length; i++) { + const fileName = loadedIconPacks.files[i]; + if (fileName.endsWith('.zip')) { + const arrayBuffer = yield plugin.app.vault.adapter.readBinary(fileName); + const files = yield readZipFile(arrayBuffer); + const iconPackName = fileName.split('/').pop().split('.zip')[0]; + zipFiles[iconPackName] = files; + } + } + // Check for custom-made icon packs. + for (let i = 0; i < loadedIconPacks.folders.length; i++) { + const folderName = loadedIconPacks.folders[i].split('/').pop(); + // Continue if the icon pack does have a zip file. + if (zipFiles[folderName]) { + continue; + } + const files = yield getFilesInDirectory(plugin, `${path}/${folderName}`); + const loadedIcons = []; + // Convert files into loaded svgs. + for (let j = 0; j < files.length; j++) { + const iconNameRegex = files[j].match(new RegExp(path + '/' + folderName + '/(.*)')); + const iconName = getNormalizedName(iconNameRegex[1]); + const iconContent = yield plugin.app.vault.adapter.read(files[j]); + const icon = generateIcon(folderName, iconName, iconContent); + if (icon) { + loadedIcons.push(icon); + } + } + const prefix = createIconPackPrefix(folderName); + iconPacks.push({ + name: folderName, + icons: loadedIcons, + prefix, + custom: true, + }); + console.log(`loaded icon pack ${folderName} (${loadedIcons.length})`); + } + // Extract all files from the zip files. + for (const zipFile in zipFiles) { + const files = zipFiles[zipFile]; + const loadedIcons = yield getLoadedIconsFromZipFile(zipFile, files); + const prefix = createIconPackPrefix(zipFile); + iconPacks.push({ + name: zipFile, + icons: loadedIcons, + prefix, + custom: false, + }); + console.log(`loaded icon pack ${zipFile} (${loadedIcons.length})`); + } +}); +const getLoadedIconsFromZipFile = (iconPackName, files) => __awaiter(void 0, void 0, void 0, function* () { + const loadedIcons = []; + const extraPath = getExtraPath(iconPackName); + for (let j = 0; j < files.length; j++) { + // Checks if the icon pack has an extra path. Also ignores files which do not start + // with the extra path. + if (extraPath && !files[j].name.startsWith(extraPath)) { + continue; + } + const file = yield getFileFromJSZipFile(files[j]); + const iconContent = yield file.text(); + const iconName = getNormalizedName(file.name); + const icon = generateIcon(iconPackName, iconName, iconContent); + if (icon) { + loadedIcons.push(icon); + } + } + return loadedIcons; +}); +const addIconToIconPack = (iconPackName, iconName, iconContent) => { + // Normalize the icon name to remove `-` or `_` in the name. + iconName = getNormalizedName(iconName); + const icon = generateIcon(iconPackName, iconName, iconContent); + if (!icon) { + console.warn(`[iconize] icon could not be generated (icon: ${iconName}, content: ${iconContent}).`); + return undefined; + } + const iconPack = iconPacks.find((iconPack) => iconPack.name === iconPackName); + if (!iconPack) { + console.warn(`[iconize] iconpack with name "${iconPackName}" was not found.`); + return undefined; + } + iconPack.icons.push(icon); + return icon; +}; +const removeIconFromIconPackDirectory = (plugin, iconPackName, iconName) => { + const iconPack = iconPacks.find((iconPack) => iconPack.name === iconPackName); + // Checks if icon pack is custom-made. + if (!iconPack.custom) { + return plugin.app.vault.adapter.rmdir(`${path}/${iconPackName}/${iconName}.svg`, true); + } +}; +const extractIconToIconPack = (plugin, icon, iconContent) => __awaiter(void 0, void 0, void 0, function* () { + const doesIconPackDirExist = yield plugin.app.vault.adapter.exists(`${path}/${icon.iconPackName}`); + if (!doesIconPackDirExist) { + yield plugin.app.vault.adapter.mkdir(`${path}/${icon.iconPackName}`); + } + const doesIconFileExists = yield plugin.app.vault.adapter.exists(`${path}/${icon.iconPackName}/${icon.name}.svg`); + if (!doesIconFileExists) { + yield createFile(plugin, icon.iconPackName, `${icon.name}.svg`, iconContent); + } +}); +const getAllLoadedIconNames = () => { + return iconPacks.reduce((total, iconPack) => { + total.push(...iconPack.icons); + return total; + }, []); +}; +const registerIconPack = (name, arrayBuffer) => __awaiter(void 0, void 0, void 0, function* () { + const files = yield readZipFile(arrayBuffer); + const loadedIcons = yield getLoadedIconsFromZipFile(name, files); + const prefix = createIconPackPrefix(name); + iconPacks.push({ name, icons: loadedIcons, prefix, custom: false }); + console.log(`loaded icon pack ${name} (${loadedIcons.length})`); +}); +const doesIconExists = (iconName) => { + const icons = getAllLoadedIconNames(); + return (icons.find((icon) => icon.name === iconName || icon.prefix + icon.name === iconName) !== undefined); +}; +const getIconFromIconPack = (iconPackName, iconPrefix, iconName) => { + const foundIcon = preloadedIcons.find((icon) => icon.prefix.toLowerCase() === iconPrefix.toLowerCase() && + icon.name.toLowerCase() === iconName.toLowerCase()); + if (foundIcon) { + return foundIcon; + } + const iconPack = iconPacks.find((iconPack) => iconPack.name === iconPackName); + if (!iconPack) { + return undefined; + } + return iconPack.icons.find((icon) => getNormalizedName(icon.name) === iconName); +}; +const getSvgFromLoadedIcon = (iconPrefix, iconName) => { + let icon = ''; + let foundIcon = preloadedIcons.find((icon) => icon.prefix.toLowerCase() === iconPrefix.toLowerCase() && + icon.name.toLowerCase() === iconName.toLowerCase()); + if (!foundIcon) { + iconPacks.forEach((iconPack) => { + const icon = iconPack.icons.find((icon) => { + return (icon.prefix.toLowerCase() === iconPrefix.toLowerCase() && + getNormalizedName(icon.name).toLowerCase() === iconName.toLowerCase()); + }); + if (icon) { + foundIcon = icon; + } + }); + } + if (foundIcon) { + icon = foundIcon.svgElement; + } + return icon; +}; + +/*! Copyright Twitter Inc. and other contributors. Licensed under MIT */ +var twemoji=function(){var twemoji={base:"https://twemoji.maxcdn.com/v/14.0.2/",ext:".png",size:"72x72",className:"emoji",convert:{fromCodePoint:fromCodePoint,toCodePoint:toCodePoint},onerror:function onerror(){if(this.parentNode){this.parentNode.replaceChild(createText(this.alt,false),this);}},parse:parse,replace:replace,test:test},escaper={"&":"&","<":"<",">":">","'":"'",'"':"""},re=/(?:\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83e\udef1\ud83c\udffb\u200d\ud83e\udef2\ud83c[\udffc-\udfff]|\ud83e\udef1\ud83c\udffc\u200d\ud83e\udef2\ud83c[\udffb\udffd-\udfff]|\ud83e\udef1\ud83c\udffd\u200d\ud83e\udef2\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\udef1\ud83c\udffe\u200d\ud83e\udef2\ud83c[\udffb-\udffd\udfff]|\ud83e\udef1\ud83c\udfff\u200d\ud83e\udef2\ud83c[\udffb-\udffe]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1|\ud83d\udc6b\ud83c[\udffb-\udfff]|\ud83d\udc6c\ud83c[\udffb-\udfff]|\ud83d\udc6d\ud83c[\udffb-\udfff]|\ud83d\udc8f\ud83c[\udffb-\udfff]|\ud83d\udc91\ud83c[\udffb-\udfff]|\ud83e\udd1d\ud83c[\udffb-\udfff]|\ud83d[\udc6b-\udc6d\udc8f\udc91]|\ud83e\udd1d)|(?:\ud83d[\udc68\udc69]|\ud83e\uddd1)(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf7c\udf84\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddaf-\uddb3\uddbc\uddbd])|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc70\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddcd-\uddcf\uddd4\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f|(?:\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83d\ude36\u200d\ud83c\udf2b\ufe0f|\u2764\ufe0f\u200d\ud83d\udd25|\u2764\ufe0f\u200d\ud83e\ude79|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc15\u200d\ud83e\uddba|\ud83d\udc3b\u200d\u2744\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83d\ude2e\u200d\ud83d\udca8|\ud83d\ude35\u200d\ud83d\udcab|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f|\ud83d\udc08\u200d\u2b1b)|[#*0-9]\ufe0f?\u20e3|(?:[ยฉยฎ\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\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]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26a7\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0\udecc]|\ud83e[\udd0c\udd0f\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\udd77\uddb5\uddb6\uddb8\uddb9\uddbb\uddcd-\uddcf\uddd1-\udddd\udec3-\udec5\udef0-\udef6]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\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\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udc8e\udc90\udc92-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\uded5-\uded7\udedd-\udedf\udeeb\udeec\udef4-\udefc\udfe0-\udfeb\udff0]|\ud83e[\udd0d\udd0e\udd10-\udd17\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd3f-\udd45\udd47-\udd76\udd78-\uddb4\uddb7\uddba\uddbc-\uddcc\uddd0\uddde-\uddff\ude70-\ude74\ude78-\ude7c\ude80-\ude86\ude90-\udeac\udeb0-\udeba\udec0-\udec2\uded0-\uded9\udee0-\udee7]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g,UFE0Fg=/\uFE0F/g,U200D=String.fromCharCode(8205),rescaper=/[&<>'"]/g,shouldntBeParsed=/^(?:iframe|noframes|noscript|script|select|style|textarea)$/,fromCharCode=String.fromCharCode;return twemoji;function createText(text,clean){return document.createTextNode(clean?text.replace(UFE0Fg,""):text)}function escapeHTML(s){return s.replace(rescaper,replacer)}function defaultImageSrcGenerator(icon,options){return "".concat(options.base,options.size,"/",icon,options.ext)}function grabAllTextNodes(node,allText){var childNodes=node.childNodes,length=childNodes.length,subnode,nodeType;while(length--){subnode=childNodes[length];nodeType=subnode.nodeType;if(nodeType===3){allText.push(subnode);}else if(nodeType===1&&!("ownerSVGElement"in subnode)&&!shouldntBeParsed.test(subnode.nodeName.toLowerCase())){grabAllTextNodes(subnode,allText);}}return allText}function grabTheRightIcon(rawText){return toCodePoint(rawText.indexOf(U200D)<0?rawText.replace(UFE0Fg,""):rawText)}function parseNode(node,options){var allText=grabAllTextNodes(node,[]),length=allText.length,attrib,attrname,modified,fragment,subnode,text,match,i,index,img,rawText,iconId,src;while(length--){modified=false;fragment=document.createDocumentFragment();subnode=allText[length];text=subnode.nodeValue;i=0;while(match=re.exec(text)){index=match.index;if(index!==i){fragment.appendChild(createText(text.slice(i,index),true));}rawText=match[0];iconId=grabTheRightIcon(rawText);i=index+rawText.length;src=options.callback(iconId,options);if(iconId&&src){img=new Image;img.onerror=options.onerror;img.setAttribute("draggable","false");attrib=options.attributes(rawText,iconId);for(attrname in attrib){if(attrib.hasOwnProperty(attrname)&&attrname.indexOf("on")!==0&&!img.hasAttribute(attrname)){img.setAttribute(attrname,attrib[attrname]);}}img.className=options.className;img.alt=rawText;img.src=src;modified=true;fragment.appendChild(img);}if(!img)fragment.appendChild(createText(rawText,false));img=null;}if(modified){if(i");}return ret})}function replacer(m){return escaper[m]}function returnNull(){return null}function toSizeSquaredAsset(value){return typeof value==="number"?value+"x"+value:value}function fromCodePoint(codepoint){var code=typeof codepoint==="string"?parseInt(codepoint,16):codepoint;if(code<65536){return fromCharCode(code)}code-=65536;return fromCharCode(55296+(code>>10),56320+(code&1023))}function parse(what,how){if(!how||typeof how==="function"){how={callback:how};}return (typeof what==="string"?parseString:parseNode)(what,{callback:how.callback||defaultImageSrcGenerator,attributes:typeof how.attributes==="function"?how.attributes:returnNull,base:typeof how.base==="string"?how.base:twemoji.base,ext:how.ext||twemoji.ext,size:how.folder||toSizeSquaredAsset(how.size||twemoji.size),className:how.className||twemoji.className,onerror:how.onerror||twemoji.onerror})}function replace(text,callback){return String(text).replace(re,callback)}function test(text){re.lastIndex=0;var result=re.test(text);re.lastIndex=0;return result}function toCodePoint(unicodeSurrogates,sep){var r=[],c=0,p=0,i=0;while(i { + const emojiRegex = /(\p{Emoji}|\p{Emoji_Presentation}|\p{Emoji_Modifier}|\p{Emoji_Modifier_Base}|\p{Emoji_Component}|\p{Extended_Pictographic})/gu; + const emojiMatches = str.match(emojiRegex); + const emojiString = emojiMatches ? emojiMatches.join('') : ''; + return !/\d/.test(str) && emojiString === str; +}; +/** + * Gets the shortcode for a given emoji by the name of the emoji. This function replaces + * spaces with underscores and removes colons. + * @param key String to replace with shortcode. + * @returns String with shortcode, or `undefined` if no shortcode exists. + */ +const getShortcode = (key) => { + var _a; + // Removable of colons is necessary for the flag shortcodes. + return (_a = shortNames[key]) === null || _a === void 0 ? void 0 : _a.replace(/\s/g, '_').replace(/:/g, '').toLowerCase(); +}; +var emoji = { + shortNames, + isEmoji, + getShortcode, +}; + +// Default obsidian file icon. +const DEFAULT_FILE_ICON = ''; +// Default obsidian folder icon. +const DEFAULT_FOLDER_ICON = ''; +/** + * Tries to read the file synchronously. + * @param file File that will be read. + * @returns A promise that will resolve to a string which is the content of the file. + */ +const readFileSync = (file) => __awaiter(void 0, void 0, void 0, function* () { + const content = yield new Promise((resolve) => { + const reader = new FileReader(); + reader.readAsText(file, 'UTF-8'); + reader.onload = (readerEvent) => resolve(readerEvent.target.result); + }); + return content; +}); +/** + * Gets all the currently opened files by getting the markdown leaves and then checking + * for the `file` property in the view. This also returns the leaf of the file. + * @param plugin Instance of the IconFolderPlugin. + * @returns An array of {@link FileWithLeaf} objects. + */ +const getAllOpenedFiles = (plugin) => { + return plugin.app.workspace + .getLeavesOfType('markdown') + .reduce((prev, curr) => { + const file = curr.view.file; + if (file) { + prev.push(Object.assign(Object.assign({}, file), { leaf: curr })); + } + return prev; + }, []); +}; +/** + * Gets the file item title element by either accessing `titleEl` or `selfEl`. + * @param fileItem FileItem which will be used to retrieve the title element from. + * @returns HTMLElement which is the title element. + */ +const getFileItemTitleEl = (fileItem) => { + var _a; + return (_a = fileItem.titleEl) !== null && _a !== void 0 ? _a : fileItem.selfEl; +}; +/** + * Gets the file item inner title element by either accessing `titleInnerEl` or `innerEl`. + * @param fileItem FileItem which will be used to retrieve the inner title element from. + * @returns HTMLElement which is the inner title element. + */ +const getFileItemInnerTitleEl = (fileItem) => { + var _a; + return (_a = fileItem.titleInnerEl) !== null && _a !== void 0 ? _a : fileItem.innerEl; +}; +/** + * A utility function which will add the icon to the icon pack and then extract the icon + * to the icon pack. + * @param plugin IconFolderPlugin that will be used for extracting the icon. + * @param iconNameWithPrefix String that will be used to add the icon to the icon pack. + */ +const saveIconToIconPack = (plugin, iconNameWithPrefix) => { + const iconNextIdentifier = nextIdentifier(iconNameWithPrefix); + const iconName = iconNameWithPrefix.substring(iconNextIdentifier); + const iconPrefix = iconNameWithPrefix.substring(0, iconNextIdentifier); + const possibleIcon = getSvgFromLoadedIcon(iconPrefix, iconName); + if (!possibleIcon) { + throw new Error(`Icon ${iconNameWithPrefix} could not be found.`); + } + const iconPackName = getIconPackNameByPrefix(iconPrefix); + const icon = getIconFromIconPack(iconPackName, iconPrefix, iconName); + extractIconToIconPack(plugin, icon, possibleIcon); +}; +/** + * A utility function which will remove the icon from the icon pack by removing the icon + * file from the icon pack directory. + * @param plugin IconFolderPlugin that will be used for removing the icon. + * @param iconNameWithPrefix String that will be used to remove the icon from the icon pack. + */ +const removeIconFromIconPack = (plugin, iconNameWithPrefix) => { + const identifier = nextIdentifier(iconNameWithPrefix); + const prefix = iconNameWithPrefix.substring(0, identifier); + const iconName = iconNameWithPrefix.substring(identifier); + const iconPackName = getIconPackNameByPrefix(prefix); + const duplicatedIcon = plugin.getDataPathByValue(iconNameWithPrefix); + if (!duplicatedIcon) { + removeIconFromIconPackDirectory(plugin, iconPackName, iconName); + } +}; + +// This library file does not include any other dependency and is a standalone file that +/** + * Sets the margin for a specific node. + * @param el Node where the margin will be set. + * @param margin Margin that will be applied to the node. + * @returns The modified node with the applied margin. + */ +const setMargin = (el, margin) => { + el.style.margin = `${margin.top}px ${margin.right}px ${margin.bottom}px ${margin.left}px`; + return el; +}; +/** + * Applies all stylings to the specified svg icon string and applies styling to the node + * (container). The styling to the specified element is only modified when it is an emoji + * or extra margin is defined in the settings. + * @param plugin Instance of the IconFolderPlugin. + * @param iconString SVG that will be used to apply the svg styles to. + * @param el Node for manipulating the style. + * @returns Icon svg string with the manipulate style attributes. + */ +const applyAll = (plugin, iconString, container) => { + iconString = svg.setFontSize(iconString, plugin.getSettings().fontSize); + container.style.color = plugin.getSettings().iconColor; + iconString = svg.colorize(iconString, plugin.getSettings().iconColor); + // Sets the margin of an element. + const margin = plugin.getSettings().extraMargin; + const normalizedMargin = { + top: margin.top !== undefined ? margin.top : 4, + right: margin.right !== undefined ? margin.right : 4, + left: margin.left !== undefined ? margin.left : 4, + bottom: margin.bottom !== undefined ? margin.bottom : 4, + }; + if (plugin.getSettings().extraMargin) { + setMargin(container, normalizedMargin); + } + if (emoji.isEmoji(iconString)) { + container.style.fontSize = `${plugin.getSettings().fontSize}px`; + container.style.lineHeight = `${plugin.getSettings().fontSize}px`; + } + return iconString; +}; +/** + * Refreshes all the styles of all the applied icons where a `.iconize-icon` + * class is defined. This function only modifies the styling of the node. + * @param plugin Instance of the IconFolderPlugin. + * @param applyStyles Function that is getting called when the icon node is found and + * typically applies all the styles to the icon. + */ +const refreshIconNodes = (plugin, applyStyles = applyAll) => { + const fileExplorers = plugin.app.workspace.getLeavesOfType('file-explorer'); + for (const fileExplorer of fileExplorers) { + Object.keys(plugin.getData()).forEach((path) => { + const fileItem = fileExplorer.view.fileItems[path]; + if (fileItem) { + const titleEl = getFileItemTitleEl(fileItem); + const iconNode = titleEl.querySelector('.iconize-icon'); + if (iconNode) { + iconNode.innerHTML = applyStyles(plugin, iconNode.innerHTML, iconNode); + } + } + }); + } +}; +var style = { + applyAll, + setMargin, + refreshIconNodes, +}; + +/** + * Removes the `iconize-icon` icon node from the provided HTMLElement. + * @param el HTMLElement from which the icon node will be removed. + */ +const removeIconInNode = (el) => { + const iconNode = el.querySelector('.iconize-icon'); + if (!iconNode) { + return; + } + iconNode.remove(); +}; +/** + * Removes the 'iconize-icon' icon node from the HTMLElement corresponding + * to the specified file path. + * @param path File path for which the icon node will be removed. + */ +const removeIconInPath = (path, options) => { + var _a; + const node = (_a = options === null || options === void 0 ? void 0 : options.container) !== null && _a !== void 0 ? _a : document.querySelector(`[data-path="${path}"]`); + if (!node) { + console.error('element with data path not found', path); + return; + } + removeIconInNode(node); +}; +/** + * Sets an icon or emoji for an HTMLElement based on the specified icon name and color. + * The function manipulates the specified node inline. + * @param plugin Instance of the IconFolderPlugin. + * @param iconName Name of the icon or emoji to add. + * @param node HTMLElement to which the icon or emoji will be added. + * @param color Optional color of the icon to add. + */ +const setIconForNode = (plugin, iconName, node, color) => { + // Gets the possible icon based on the icon name. + const iconNextIdentifier = nextIdentifier(iconName); + const possibleIcon = getSvgFromLoadedIcon(iconName.substring(0, iconNextIdentifier), iconName.substring(iconNextIdentifier)); + if (possibleIcon) { + // The icon is possibly not an emoji. + let iconContent = style.applyAll(plugin, possibleIcon, node); + if (color) { + node.style.color = color; + iconContent = svg.colorize(iconContent, color); + } + node.innerHTML = iconContent; + } + else { + // The icon is an emoji. + let emoji = ''; + switch (plugin.getSettings().emojiStyle) { + case 'twemoji': + emoji = twemoji.parse(iconName, { + base: 'https://cdnjs.cloudflare.com/ajax/libs/twemoji/14.0.2/', + folder: 'svg', + ext: '.svg', + attributes: () => ({ + width: '16px', + height: '16px', + }), + }); + break; + case 'native': + emoji = iconName; + break; + } + node.innerHTML = style.applyAll(plugin, emoji, node); + } +}; +/** + * Creates an icon node for the specified path and inserts it to the DOM. + * @param plugin Instance of the IconFolderPlugin. + * @param path Path for which the icon node will be created. + * @param iconName Name of the icon or emoji to add. + * @param color Optional color of the icon to add. + */ +const createIconNode = (plugin, path, iconName, options) => { + var _a; + // Get the container from the provided options or try to find the node that has the + // path from the document itself. + const node = (_a = options === null || options === void 0 ? void 0 : options.container) !== null && _a !== void 0 ? _a : document.querySelector(`[data-path="${path}"]`); + if (!node) { + console.error('element with data path not found', path); + return; + } + // Get the folder or file title node. + let titleNode = node.querySelector('.nav-folder-title-content'); + if (!titleNode) { + titleNode = node.querySelector('.nav-file-title-content'); + if (!titleNode) { + console.error('element with title not found'); + return; + } + } + let iconNode = node.querySelector('.iconize-icon'); + // If the icon is already set in the path, we do not need to create a new div element. + if (iconNode) { + setIconForNode(plugin, iconName, iconNode, options === null || options === void 0 ? void 0 : options.color); + } + else { + // Creates a new icon node and inserts it to the DOM. + iconNode = document.createElement('div'); + iconNode.setAttribute(config.ICON_ATTRIBUTE_NAME, iconName); + iconNode.classList.add('iconize-icon'); + setIconForNode(plugin, iconName, iconNode, options === null || options === void 0 ? void 0 : options.color); + node.insertBefore(iconNode, titleNode); + } +}; +/** + * Checks if the element has an icon node by checking if the element has a child with the + * class `iconize-icon`. + * @param element HTMLElement which will be checked if it has an icon. + * @returns Boolean whether the element has an icon node or not. + */ +const doesElementHasIconNode = (element) => { + return element.querySelector('.iconize-icon') !== null; +}; +/** + * Gets the icon name of the element if it has an icon node. + * @param element HTMLElement parent which includes a node with the icon. + * @returns String with the icon name if the element has an icon, `undefined` otherwise. + */ +const getIconFromElement = (element) => { + const iconNode = element.querySelector('.iconize-icon'); + const existingIcon = iconNode === null || iconNode === void 0 ? void 0 : iconNode.getAttribute(config.ICON_ATTRIBUTE_NAME); + return existingIcon; +}; +var dom = { + setIconForNode, + createIconNode, + doesElementHasIconNode, + getIconFromElement, + removeIconInNode, + removeIconInPath, +}; + +class IconsPickerModal extends obsidian.FuzzySuggestModal { + constructor(app, plugin, path) { + super(app); + this.renderIndex = 0; + this.plugin = plugin; + this.path = path; + this.limit = 150; + const pluginRecentltyUsedItems = [ + ...plugin.getSettings().recentlyUsedIcons, + ]; + this.recentlyUsedItems = new Set(pluginRecentltyUsedItems.reverse().filter((iconName) => { + return doesIconExists(iconName) || emoji.isEmoji(iconName); + })); + this.resultContainerEl.classList.add('iconize-modal'); + } + onOpen() { + super.onOpen(); + } + onClose() { + const { contentEl } = this; + contentEl.empty(); + } + getItemText(item) { + return `${item.name} (${item.prefix})`; + } + getItems() { + const iconKeys = []; + if (this.inputEl.value.length === 0) { + this.renderIndex = 0; + this.recentlyUsedItems.forEach((iconName) => { + if (this.plugin.isSomeEmojiStyleActive() && emoji.isEmoji(iconName)) { + iconKeys.push({ + name: emoji.shortNames[iconName], + prefix: 'Emoji', + displayName: iconName, + iconPackName: null, + }); + return; + } + const nextLetter = nextIdentifier(iconName); + const iconPrefix = iconName.substring(0, nextLetter); + const iconPackName = getIconPackNameByPrefix(iconPrefix); + iconKeys.push({ + name: iconName.substring(nextLetter), + prefix: iconPrefix, + displayName: iconName, + iconPackName: iconPackName, + }); + }); + } + for (const icon of getAllLoadedIconNames()) { + iconKeys.push({ + name: icon.name, + prefix: icon.prefix, + displayName: icon.prefix + icon.name, + iconPackName: icon.iconPackName, + }); + } + if (this.plugin.isSomeEmojiStyleActive()) { + Object.entries(emoji.shortNames).forEach(([unicode, shortName]) => { + iconKeys.push({ + name: shortName, + prefix: 'Emoji', + displayName: unicode, + iconPackName: null, + }); + iconKeys.push({ + name: unicode, + prefix: 'Emoji', + displayName: unicode, + iconPackName: null, + }); + }); + } + return iconKeys; + } + onChooseItem(item) { + var _a; + const iconNameWithPrefix = typeof item === 'object' ? item.displayName : item; + dom.createIconNode(this.plugin, this.path, iconNameWithPrefix); + (_a = this.onSelect) === null || _a === void 0 ? void 0 : _a.call(this, iconNameWithPrefix); + this.plugin.addFolderIcon(this.path, item); + // Extracts the icon file to the icon pack. + if (typeof item === 'object' && !emoji.isEmoji(iconNameWithPrefix)) { + saveIconToIconPack(this.plugin, iconNameWithPrefix); + } + this.plugin.notifyPlugins(); + } + renderSuggestion(item, el) { + super.renderSuggestion(item, el); + // if (getAllIconPacks().length === 0) { + // this.resultContainerEl.style.display = 'block'; + // this.resultContainerEl.innerHTML = '
You need to create an icon pack.
'; + // return; + // } + // Render subheadlines for modal. + if (this.recentlyUsedItems.size !== 0 && this.inputEl.value.length === 0) { + if (this.renderIndex === 0) { + const subheadline = this.resultContainerEl.createDiv(); + subheadline.classList.add('iconize-subheadline'); + subheadline.innerText = 'Recently used Icons:'; + this.resultContainerEl.prepend(subheadline); + } + else if (this.renderIndex === this.recentlyUsedItems.size - 1) { + const subheadline = this.resultContainerEl.createDiv(); + subheadline.classList.add('iconize-subheadline'); + subheadline.innerText = 'All Icons:'; + this.resultContainerEl.append(subheadline); + } + } + if (item.item.name !== 'default') { + if (item.item.prefix === 'Emoji') { + let displayName = ''; + switch (this.plugin.getSettings().emojiStyle) { + case 'twemoji': + displayName = twemoji.parse(item.item.displayName, { + base: 'https://cdnjs.cloudflare.com/ajax/libs/twemoji/14.0.2/', + }); + break; + case 'native': + displayName = item.item.displayName; + break; + } + el.innerHTML = `
${el.innerHTML}
${displayName}
`; + } + else { + el.innerHTML = `
${el.innerHTML}
${getSvgFromLoadedIcon(item.item.prefix, item.item.name)}
`; + } + } + this.renderIndex++; + } +} + +const DEFAULT_SETTINGS = { + migrated: 2, + iconPacksPath: '.obsidian/icons', + fontSize: 16, + emojiStyle: 'none', + iconColor: null, + recentlyUsedIcons: [], + recentlyUsedIconsSize: 5, + rules: [], + extraMargin: { + top: 0, + right: 4, + bottom: 0, + left: 0, + }, + iconInTabsEnabled: false, + iconInTitleEnabled: false, + iconInFrontmatterEnabled: false, + iconsBackgroundCheckEnabled: false, + iconsInNotesEnabled: true, +}; + +function migrate$2(plugin) { + // Migration for new syncing mechanism. + if (plugin.getSettings().migrated === 1) { + new obsidian.Notice('Please delete your old icon packs and redownload your icon packs to use the new syncing mechanism.', 20000); + plugin.getSettings().migrated++; + } +} + +function migrate$1(plugin) { + // Migration for new order functionality of custom rules. + if (plugin.getSettings().migrated === 2) { + // Sorting alphabetically was the default behavior before. + plugin + .getSettings() + .rules.sort((a, b) => a.rule.localeCompare(b.rule)) + .forEach((rule, i) => { + rule.order = i; + }); + plugin.getSettings().migrated++; + } +} + +const migrate = (plugin) => __awaiter(void 0, void 0, void 0, function* () { + // eslint-disable-next-line + // @ts-ignore - Required because an older version of the plugin saved the `migrated` + // property as a boolean instead of a number. + if (plugin.getSettings().migrated === true) { + plugin.getSettings().migrated = 1; + } + migrate$2(plugin); + migrate$1(plugin); + yield plugin.saveIconFolderData(); +}); + +class IconFolderSetting { + constructor(plugin, containerEl) { + this.plugin = plugin; + this.containerEl = containerEl; + } +} + +class CustomIconPackSetting extends IconFolderSetting { + constructor(plugin, containerEl, refreshDisplay) { + super(plugin, containerEl); + this.refreshDisplay = refreshDisplay; + this.dragOverElement = document.createElement('div'); + this.dragOverElement.addClass('iconize-dragover-el'); + this.dragOverElement.style.display = 'hidden'; + this.dragOverElement.innerHTML = '

Drop to add icon.

'; + } + normalizeIconPackName(value) { + return value.toLowerCase().replace(/\s/g, '-'); + } + preventDefaults(event) { + event.preventDefault(); + event.stopPropagation(); + } + highlight(el) { + clearTimeout(this.closeTimer); + if (!this.dragTargetElement) { + el.appendChild(this.dragOverElement); + el.classList.add('iconize-dragover'); + this.dragTargetElement = el; + } + } + unhighlight(target, el) { + if (this.dragTargetElement && this.dragTargetElement !== target) { + this.dragTargetElement.removeChild(this.dragOverElement); + this.dragTargetElement.classList.remove('iconize-dragover'); + this.dragTargetElement = undefined; + } + clearTimeout(this.closeTimer); + this.closeTimer = setTimeout(() => { + if (this.dragTargetElement) { + el.removeChild(this.dragOverElement); + el.classList.remove('iconize-dragover'); + this.dragTargetElement = undefined; + } + }, 100); + } + display() { + new obsidian.Setting(this.containerEl) + .setName('Add custom icon pack') + .setDesc('Add a custom icon pack') + .addText((text) => { + text.setPlaceholder('Your icon pack name'); + this.textComponent = text; + }) + .addButton((btn) => { + btn.setButtonText('Add icon pack'); + btn.buttonEl.style.marginLeft = '12px'; + btn.onClick(() => __awaiter(this, void 0, void 0, function* () { + const name = this.textComponent.getValue(); + if (name.length === 0) { + return; + } + const normalizedName = this.normalizeIconPackName(this.textComponent.getValue()); + if (yield doesIconPackExist(this.plugin, normalizedName)) { + new obsidian.Notice('Icon pack already exists.'); + return; + } + yield createCustomIconPackDirectory(this.plugin, normalizedName); + this.textComponent.setValue(''); + this.refreshDisplay(); + new obsidian.Notice('Icon pack successfully created.'); + })); + }); + getAllIconPacks().forEach((iconPack) => { + const iconPackSetting = new obsidian.Setting(this.containerEl) + .setName(iconPack.name) + .setDesc(`Total icons: ${iconPack.icons.length}`); + // iconPackSetting.addButton((btn) => { + // btn.setIcon('broken-link'); + // btn.setTooltip('Try to fix icon pack'); + // btn.onClick(async () => { + // new Notice('Try to fix icon pack...'); + // getIconPack(iconPack.name).icons = []; + // const icons = await getFilesInDirectory(this.plugin, `${getPath()}/${iconPack.name}`); + // for (let i = 0; i < icons.length; i++) { + // const filePath = icons[i]; + // const fileName = filePath.split('/').pop(); + // const file = await this.plugin.app.vault.adapter.read(filePath); + // const iconContent = file + // .replace(/stroke="#fff"/g, 'stroke="currentColor"') + // .replace(/fill="#fff"/g, 'fill="currentColor"'); + // await this.plugin.app.vault.adapter.write(filePath, iconContent); + // await normalizeFileName(this.plugin, filePath); + // addIconToIconPack(iconPack.name, fileName, iconContent); + // } + // new Notice('...tried to fix icon pack'); + // // Refreshes the DOM. + // Object.entries(this.plugin.getData()).forEach(async ([k, v]) => { + // const doesPathExist = await this.plugin.app.vault.adapter.exists(k, true); + // if (doesPathExist && typeof v === 'string') { + // // dom.removeIconInPath(k); + // dom.createIconNode(this.plugin, k, v); + // } + // }); + // }); + // }); + iconPackSetting.addButton((btn) => { + btn.setIcon('plus'); + btn.setTooltip('Add an icon'); + btn.onClick(() => __awaiter(this, void 0, void 0, function* () { + const fileSelector = document.createElement('input'); + fileSelector.setAttribute('type', 'file'); + fileSelector.setAttribute('multiple', 'multiple'); + fileSelector.setAttribute('accept', '.svg'); + fileSelector.click(); + fileSelector.onchange = (e) => __awaiter(this, void 0, void 0, function* () { + const target = e.target; + for (let i = 0; i < target.files.length; i++) { + const file = target.files[i]; + const content = yield readFileSync(file); + yield createFile(this.plugin, iconPack.name, file.name, content); + addIconToIconPack(iconPack.name, file.name, content); + iconPackSetting.setDesc(`Total icons: ${iconPack.icons.length} (added: ${file.name})`); + } + new obsidian.Notice('Icons successfully added.'); + }); + })); + }); + iconPackSetting.addButton((btn) => { + btn.setIcon('trash'); + btn.setTooltip('Remove the icon pack'); + btn.onClick(() => __awaiter(this, void 0, void 0, function* () { + yield deleteIconPack(this.plugin, iconPack.name); + this.refreshDisplay(); + new obsidian.Notice('Icon pack successfully deleted.'); + })); + }); + ['dragenter', 'dragover', 'dragleave', 'drop'].forEach((event) => { + iconPackSetting.settingEl.addEventListener(event, this.preventDefaults, false); + }); + ['dragenter', 'dragover'].forEach((event) => { + iconPackSetting.settingEl.addEventListener(event, () => this.highlight(iconPackSetting.settingEl), false); + }); + ['dragleave', 'drop'].forEach((event) => { + iconPackSetting.settingEl.addEventListener(event, (event) => this.unhighlight(event.currentTarget, iconPackSetting.settingEl), false); + }); + iconPackSetting.settingEl.addEventListener('drop', (event) => __awaiter(this, void 0, void 0, function* () { + const files = event.dataTransfer.files; + let successful = false; + for (let i = 0; i < files.length; i++) { + const file = files[i]; + if (file.type !== 'image/svg+xml') { + new obsidian.Notice(`File ${file.name} is not a SVG file.`); + continue; + } + successful = true; + const content = yield readFileSync(file); + yield createFile(this.plugin, iconPack.name, file.name, content); + addIconToIconPack(iconPack.name, file.name, content); + iconPackSetting.setDesc(`Total icons: ${iconPack.icons.length} (added: ${file.name})`); + } + if (successful) { + new obsidian.Notice('Icons successfully added.'); + } + }), false); + }); + } +} + +class IconCache { + constructor() { + this.cache = new Map(); + this.set = (path, result) => { + this.cache.set(path, result); + }; + this.invalidate = (path) => { + this.cache.delete(path); + }; + this.clear = () => { + this.cache.clear(); + }; + this.get = (path) => { + var _a; + return (_a = this.cache.get(path)) !== null && _a !== void 0 ? _a : null; + }; + this.doesRecordExist = (path) => { + return this.get(path) !== null; + }; + if (IconCache.instance) { + throw new Error('Error: Instantiation failed: Use `IconCache.getInstance()` instead of new.'); + } + IconCache.instance = this; + } +} +IconCache.instance = new IconCache(); +IconCache.getInstance = () => { + return IconCache.instance; +}; + +/** + * Checks if the file type is equal to the `for` property of the custom rule. + * @param rule CustomRule that will be checked. + * @param fileType CustomRuleFileType that will be checked. Can be either `file` or `folder`. + * @returns Boolean whether the custom rule `for` matches the file type or not. + */ +const doesMatchFileType = (rule, fileType) => { + return (rule.for === 'everything' || + (rule.for === 'files' && fileType === 'file') || + (rule.for === 'folders' && fileType === 'folder')); +}; +/** + * Determines whether a given file or folder matches a specified custom rule. + * @param plugin Plugin instance. + * @param rule CustomRule to check against the file or folder. + * @param file TAbstractFile to check against the custom rule. + * @returns Promise that resolves to `true` if the file matches the rule, `false` otherwise. + */ +const isApplicable = (plugin, rule, file) => __awaiter(void 0, void 0, void 0, function* () { + const metadata = yield plugin.app.vault.adapter.stat(file.path); + if (!metadata) { + return false; + } + const fileType = metadata.type; + const doesMatch = doesMatchFileType(rule, fileType); + if (!doesMatch) { + return false; + } + return doesMatchPath(rule, file.path); +}); +/** + * Removes the icon from the custom rule from all the files and folders, if applicable. + * @param plugin IconFolderPlugin instance. + * @param rule CustomRule where the icons will be removed based on this rule. + */ +const removeFromAllFiles = (plugin, rule) => __awaiter(void 0, void 0, void 0, function* () { + const nodesWithIcon = document.querySelectorAll(`[${config.ICON_ATTRIBUTE_NAME}="${rule.icon}"]`); + for (let i = 0; i < nodesWithIcon.length; i++) { + const node = nodesWithIcon[i]; + // Parent element is the node which contains the data path. + const parent = node.parentElement; + if (!parent) { + continue; + } + const dataPath = parent.getAttribute('data-path'); + if (!dataPath) { + continue; + } + const fileType = (yield plugin.app.vault.adapter.stat(dataPath)).type; + if (doesMatchPath(rule, dataPath) && doesMatchFileType(rule, fileType)) { + dom.removeIconInNode(parent); + IconCache.getInstance().invalidate(dataPath); + } + } +}); +/** + * Gets all the custom rules sorted by their order property in ascending order. + * @param plugin IconFolderPlugin instance. + * @returns CustomRule array sorted by their order property in ascending order. + */ +const getSortedRules = (plugin) => { + return plugin.getSettings().rules.sort((a, b) => a.order - b.order); +}; +/** + * Tries to add all specific custom rule icons to all registered files and directories. + * It does that by calling the {@link add} function. Custom rules should have the lowest + * priority and will get ignored if an icon already exists in the file or directory. + * @param plugin IconFolderPlugin instance. + * @param rule CustomRule that will be applied, if applicable, to all files and folders. + */ +const addToAllFiles = (plugin, rule) => __awaiter(void 0, void 0, void 0, function* () { + const fileItems = yield getFileItems(plugin, rule); + for (const fileItem of fileItems) { + yield add$3(plugin, rule, fileItem.file, getFileItemTitleEl(fileItem)); + } +}); +/** + * Tries to add the icon of the custom rule to a file or folder. This function also checks + * if the file type matches the `for` property of the custom rule. + * @param plugin IconFolderPlugin instance. + * @param rule CustomRule that will be used to check if the rule is applicable to the file + * or directory. + * @param file TAbstractFile that will be used to possibly create the icon for. + * @param container HTMLElement where the icon will be added if the custom rules matches. + * @returns A promise that resolves to `true` if the icon was added, `false` otherwise. + */ +const add$3 = (plugin, rule, file, container) => __awaiter(void 0, void 0, void 0, function* () { + if (container && dom.doesElementHasIconNode(container)) { + return false; + } + // Checks if the file or directory already has an icon. + const hasIcon = plugin.getIconNameFromPath(file.path); + if (hasIcon) { + return false; + } + const doesMatch = yield isApplicable(plugin, rule, file); + if (doesMatch) { + IconCache.getInstance().set(file.path, { + iconNameWithPrefix: rule.icon, + inCustomRule: true, + }); + dom.createIconNode(plugin, file.path, rule.icon, { + color: rule.color, + container, + }); + return true; + } + return false; +}); +/** + * Determines whether a given rule exists in a given path. + * @param rule Rule to check for. + * @param path Path to check in. + * @returns True if the rule exists in the path, false otherwise. + */ +const doesMatchPath = (rule, path) => { + const toMatch = rule.useFilePath ? path : path.split('/').pop(); + try { + // Rule is in some sort of regex. + const regex = new RegExp(rule.rule); + if (toMatch.match(regex)) { + return true; + } + } + catch (_a) { + // Rule is not in some sort of regex, check for basic string match. + return toMatch.includes(rule.rule); + } + return false; +}; +/** + * Gets all the file items that can be applied to the specific custom rule. + * @param plugin Instance of IconFolderPlugin. + * @param rule Custom rule that will be checked for. + * @returns A promise that resolves to an array of file items that match the custom rule. + */ +const getFileItems = (plugin, rule) => __awaiter(void 0, void 0, void 0, function* () { + const result = []; + for (const fileExplorer of plugin.getRegisteredFileExplorers()) { + const files = Object.values(fileExplorer.fileItems); + for (const fileItem of files) { + if (yield isApplicable(plugin, rule, fileItem.file)) { + result.push(fileItem); + } + } + } + return result; +}); +var customRule = { + getFileItems, + doesMatchPath, + doesMatchFileType, + getSortedRules, + removeFromAllFiles, + add: add$3, + addToAllFiles, + isApplicable, +}; + +/** + * Gets the tab leaves of a specific file path by looping through all opened files and + * checking if the file path matches. + * @param plugin IconFolderPlugin instance. + * @param path String of the file path to get the tab leaf of. + * @returns TabHeaderLeaf array that includes all tab leaves of the file path. + */ +const getTabLeavesOfFilePath = (plugin, path) => { + const openedFiles = getAllOpenedFiles(plugin); + const openedFile = openedFiles.filter((openedFile) => openedFile.path === path); + const leaves = openedFile.map((openedFile) => openedFile.leaf); + return leaves; +}; +/** + * Adds an icon to the tab and its container. This function respects the inheritance, + * custom rules and individually icon set. + * @param plugin IconFolderPlugin instance. + * @param file TFile instance of the file to add the icon to. + * @param iconContainer HTMLElement where the icon will be added to. + * @param options AddOptions for the add function which can optionally be used. + */ +const add$2 = (plugin, file, iconContainer, options) => __awaiter(void 0, void 0, void 0, function* () { + var _a; + const iconColor = (_a = options === null || options === void 0 ? void 0 : options.iconColor) !== null && _a !== void 0 ? _a : plugin.getSettings().iconColor; + const data = Object.entries(plugin.getData()); + // Removes the `display: none` from the obsidian styling. + iconContainer.style.display = 'flex'; + // Only add the icon name manually when it is defined in the options. + if (options === null || options === void 0 ? void 0 : options.iconName) { + dom.setIconForNode(plugin, options.iconName, iconContainer, iconColor); + // TODO: Refactor to include option to `insertIconToNode` function. + iconContainer.style.margin = null; + return; + } + // Files can also have custom icons inside of inheritance folders. + const hasIcon = plugin.getData()[file.path]; + if (!hasIcon) { + // Add icons to tabs if there is some sort of inheritance going on. + const inheritanceData = data.filter(([key, value]) => typeof value === 'object' && key !== 'settings'); + for (const [inheritancePath, inheritance] of inheritanceData) { + if (!inheritance.inheritanceIcon) { + continue; + } + if (!file.path.includes(inheritancePath)) { + continue; + } + dom.setIconForNode(plugin, inheritance.inheritanceIcon, iconContainer, iconColor); + // TODO: Refactor to include option to `insertIconToNode` function. + iconContainer.style.margin = null; + break; + } + } + // Add icons to tabs if a custom rule is applicable. + for (const rule of customRule.getSortedRules(plugin)) { + const isApplicable = yield customRule.isApplicable(plugin, rule, file); + if (isApplicable) { + dom.setIconForNode(plugin, rule.icon, iconContainer, rule.color); + // TODO: Refactor to include option to `insertIconToNode` function. + iconContainer.style.margin = null; + break; + } + } + // Add icons to tabs if there is an icon set. + const iconData = data.find(([dataPath]) => dataPath === file.path); + // Check if data was not found or name of icon is not a string. + if (!iconData || typeof iconData[1] !== 'string') { + return; + } + dom.setIconForNode(plugin, iconData[1], iconContainer, iconColor); + // TODO: Refactor to include option to `insertIconToNode` function. + iconContainer.style.margin = null; +}); +/** + * Updates the icon in the tab and container by setting calling the `setIconForNode` + * function and removing the margin from the icon container. + * @param plugin IconFolderPlugin instance. + * @param iconName String of the icon name to update to. + * @param iconContainer HTMLElement where the icon is located and will be updated. + */ +const update = (plugin, iconName, iconContainer) => { + dom.setIconForNode(plugin, iconName, iconContainer); + // TODO: Refactor to include option to `insertIconToNode` function. + iconContainer.style.margin = null; +}; +/** + * Removes the icon from the tab and container by setting the `display` style property + * to `none`. Optionally, the icon can be replaced with the default obsidian icon. + * @param iconContainer HTMLElement where the icon is located and will be removed from. + * @param options RemoveOptions for the remove function which can optionally be used. + */ +const remove$2 = (iconContainer, options) => { + if (!(options === null || options === void 0 ? void 0 : options.replaceWithDefaultIcon)) { + // Removes the display of the icon container to remove the icons from the tabs. + iconContainer.style.display = 'none'; + } + else { + iconContainer.innerHTML = DEFAULT_FILE_ICON; + } +}; +var iconTabs = { + add: add$2, + update, + remove: remove$2, + getTabLeavesOfFilePath, +}; + +class CustomIconRuleSetting extends IconFolderSetting { + constructor(plugin, containerEl, app, refreshDisplay) { + super(plugin, containerEl); + this.app = app; + this.refreshDisplay = refreshDisplay; + } + /** + * Updates all the open files based on the custom rule that was specified. + * @param rule Rule that will be used to update all the icons for all opened files. + * @param remove Whether to remove the icons that are applicable to the rule or not. + */ + updateIconTabs(rule, remove, cachedPaths = []) { + return __awaiter(this, void 0, void 0, function* () { + if (this.plugin.getSettings().iconInTabsEnabled) { + for (const openedFile of getAllOpenedFiles(this.plugin)) { + if (cachedPaths.includes(openedFile.path)) { + continue; + } + const applicable = yield customRule.isApplicable(this.plugin, rule, openedFile); + if (!applicable) { + continue; + } + const leaf = openedFile.leaf; + if (remove) { + iconTabs.remove(leaf.tabHeaderInnerIconEl, { + replaceWithDefaultIcon: true, + }); + } + else { + iconTabs.add(this.plugin, openedFile, leaf.tabHeaderInnerIconEl, { + iconName: rule.icon, + iconColor: rule.color, + }); + } + } + } + }); + } + createDescriptionEl(container, text) { + const description = container.createEl('p', { + text, + cls: 'setting-item-description', + }); + description.style.marginBottom = 'var(--size-2-2)'; + } + display() { + new obsidian.Setting(this.containerEl) + .setName('Add icon rule') + .setDesc('Will add the icon based on the specific string.') + .addText((text) => { + text.onChange((value) => { + this.chooseIconBtn.setDisabled(value.length === 0); + this.chooseIconBtn.buttonEl.style.cursor = + value.length === 0 ? 'not-allowed' : 'default'; + this.chooseIconBtn.buttonEl.style.opacity = + value.length === 0 ? '50%' : '100%'; + }); + text.setPlaceholder('regex or simple string'); + this.textComponent = text; + }) + .addButton((btn) => { + btn.setDisabled(true); + btn.setButtonText('Choose icon'); + btn.buttonEl.style.marginLeft = '12px'; + btn.buttonEl.style.cursor = 'not-allowed'; + btn.buttonEl.style.opacity = '50%'; + btn.onClick(() => __awaiter(this, void 0, void 0, function* () { + if (this.textComponent.getValue().length === 0) { + return; + } + const modal = new IconsPickerModal(this.app, this.plugin, ''); + modal.onChooseItem = (item) => __awaiter(this, void 0, void 0, function* () { + const icon = getNormalizedName(typeof item === 'object' ? item.displayName : item); + const rule = { + rule: this.textComponent.getValue(), + icon, + for: 'everything', + order: this.plugin.getSettings().rules.length, + }; + this.plugin.getSettings().rules = [ + ...this.plugin.getSettings().rules, + rule, + ]; + yield this.plugin.saveIconFolderData(); + this.refreshDisplay(); + new obsidian.Notice('Icon rule added.'); + this.textComponent.setValue(''); + saveIconToIconPack(this.plugin, rule.icon); + yield customRule.addToAllFiles(this.plugin, rule); + this.updateIconTabs(rule, false); + }); + modal.open(); + })); + this.chooseIconBtn = btn; + }); + this.plugin.getSettings().rules.forEach((rule) => { + // Keeping track of the old rule so that we can get a reference to it for old values. + const oldRule = Object.assign({}, rule); + const settingRuleEl = new obsidian.Setting(this.containerEl) + .setName(rule.rule) + .setDesc(`Icon: ${rule.icon}`); + const currentOrder = rule.order; + /** + * Re-orders the custom rule based on the value that is passed in. + * @param valueForReorder Number that will be used to determine whether to swap the + * custom rule with the next rule or the previous rule. + */ + const orderCustomRules = (valueForReorder) => __awaiter(this, void 0, void 0, function* () { + const otherRule = this.plugin.getSettings().rules[currentOrder + valueForReorder]; + // Swap the current rule with the next rule. + otherRule.order = otherRule.order - valueForReorder; + rule.order = currentOrder + valueForReorder; + // Refreshes the DOM. + yield customRule.removeFromAllFiles(this.plugin, oldRule); + yield this.plugin.saveIconFolderData(); + const addedPaths = []; + for (const fileExplorer of this.plugin.getRegisteredFileExplorers()) { + const files = Object.values(fileExplorer.fileItems); + for (const rule of customRule.getSortedRules(this.plugin)) { + // Removes the icon tabs from all opened files. + this.updateIconTabs(rule, true, addedPaths); + // Adds the icon tabs to all opened files. + this.updateIconTabs(rule, false, addedPaths); + for (const fileItem of files) { + if (addedPaths.includes(fileItem.file.path)) { + continue; + } + const added = yield customRule.add(this.plugin, rule, fileItem.file, getFileItemTitleEl(fileItem)); + if (added) { + addedPaths.push(fileItem.file.path); + } + } + } + } + this.refreshDisplay(); + }); + // Add the move down custom rule button to re-order the custom rule. + settingRuleEl.addExtraButton((btn) => { + const isFirstOrder = currentOrder === 0; + btn.setDisabled(isFirstOrder); + btn.extraSettingsEl.style.cursor = isFirstOrder + ? 'not-allowed' + : 'default'; + btn.extraSettingsEl.style.opacity = isFirstOrder ? '50%' : '100%'; + btn.setIcon('arrow-up'); + btn.setTooltip('Prioritize the custom rule'); + btn.onClick(() => __awaiter(this, void 0, void 0, function* () { + yield orderCustomRules(-1); + })); + }); + // Add the move up custom rule button to re-order the custom rule. + settingRuleEl.addExtraButton((btn) => { + const isLastOrder = currentOrder === this.plugin.getSettings().rules.length - 1; + btn.setDisabled(isLastOrder); + btn.extraSettingsEl.style.cursor = isLastOrder + ? 'not-allowed' + : 'default'; + btn.extraSettingsEl.style.opacity = isLastOrder ? '50%' : '100%'; + btn.setIcon('arrow-down'); + btn.setTooltip('Deprioritize the custom rule'); + btn.onClick(() => __awaiter(this, void 0, void 0, function* () { + yield orderCustomRules(1); + })); + }); + // Add the configuration button for configuring where the custom rule gets applied to. + settingRuleEl.addButton((btn) => { + var _a; + const isFor = (_a = rule.for) !== null && _a !== void 0 ? _a : 'everything'; + if (isFor === 'folders') { + btn.setIcon('folder'); + } + else if (isFor === 'files') { + btn.setIcon('document'); + } + else { + btn.setIcon('documents'); + } + btn.setTooltip(`Icon applicable to: ${isFor}`); + btn.onClick(() => __awaiter(this, void 0, void 0, function* () { + this.updateIconTabs(rule, true); + yield customRule.removeFromAllFiles(this.plugin, Object.assign(Object.assign({}, rule), { for: isFor })); + if (isFor === 'folders') { + rule.for = 'everything'; + } + else if (isFor === 'files') { + rule.for = 'folders'; + } + else { + rule.for = 'files'; + } + yield customRule.addToAllFiles(this.plugin, rule); + this.updateIconTabs(rule, false); + yield this.plugin.saveIconFolderData(); + this.refreshDisplay(); + customRule + .getSortedRules(this.plugin) + .forEach((previousRule) => __awaiter(this, void 0, void 0, function* () { + yield customRule.addToAllFiles(this.plugin, previousRule); + this.updateIconTabs(previousRule, false); + })); + })); + }); + // Add the edit custom rule button. + settingRuleEl.addButton((btn) => { + btn.setIcon('pencil'); + btn.setTooltip('Edit the custom rule'); + btn.onClick(() => { + var _a; + // Create modal and its children elements. + const modal = new obsidian.Modal(this.plugin.app); + modal.contentEl.style.display = 'block'; + modal.modalEl.classList.add('iconize-custom-rule-modal'); + modal.titleEl.createEl('h3', { text: 'Edit custom rule' }); + // Create the input for the rule. + this.createDescriptionEl(modal.contentEl, 'Regex or simple string'); + const input = new obsidian.TextComponent(modal.contentEl); + input.setValue(rule.rule); + input.onChange((value) => __awaiter(this, void 0, void 0, function* () { + rule.rule = value; + })); + const useFilePathContainer = modal.contentEl.createDiv(); + useFilePathContainer.style.display = 'flex'; + useFilePathContainer.style.alignItems = 'center'; + useFilePathContainer.style.justifyContent = 'space-between'; + useFilePathContainer.style.marginTop = 'var(--size-4-5)'; + const useFilePathDescription = useFilePathContainer.createEl('p', { + text: 'Whether to apply the icon to all files/folders that match the file path.', + cls: 'setting-item-description', + }); + useFilePathDescription.style.margin = '0'; + useFilePathDescription.style.marginBottom = 'var(--size-2-2)'; + new obsidian.ToggleComponent(useFilePathContainer) + .setValue(rule.useFilePath === true) + .onChange((value) => { + rule.useFilePath = value; + }); + // Create the change icon button with icon preview. + this.createDescriptionEl(modal.contentEl, 'Custom rule icon'); + const iconContainer = modal.contentEl.createDiv(); + iconContainer.style.display = 'flex'; + iconContainer.style.alignItems = 'center'; + iconContainer.style.justifyContent = 'space-between'; + const iconEl = iconContainer.createDiv(); + const iconPreviewEl = iconEl.createDiv(); + dom.setIconForNode(this.plugin, rule.icon, iconPreviewEl); + iconEl.style.display = 'flex'; + iconEl.style.alignItems = 'center'; + iconEl.style.justifyContent = 'space-between'; + iconEl.style.margin = null; + iconPreviewEl.innerHTML = svg.setFontSize(iconPreviewEl.innerHTML, 20); + const iconNameEl = iconEl.createEl('div', { + cls: 'setting-item-description', + }); + iconNameEl.style.paddingTop = '0'; + iconNameEl.style.marginLeft = 'var(--size-2-2)'; + iconNameEl.innerText = rule.icon; + const changeIconBtn = new obsidian.ButtonComponent(iconContainer); + changeIconBtn.setButtonText('Change icon'); + changeIconBtn.onClick(() => __awaiter(this, void 0, void 0, function* () { + const modal = new IconsPickerModal(this.app, this.plugin, rule.icon); + modal.onChooseItem = (item) => __awaiter(this, void 0, void 0, function* () { + const icon = typeof item === 'object' ? item.displayName : item; + rule.icon = icon; + dom.setIconForNode(this.plugin, rule.icon, iconPreviewEl); + iconPreviewEl.innerHTML = svg.setFontSize(iconPreviewEl.innerHTML, 20); + iconNameEl.innerText = getNormalizedName(rule.icon); + }); + modal.open(); + })); + // Create the color picker for the rule. + this.createDescriptionEl(modal.contentEl, 'Color of the icon'); + const colorContainer = modal.contentEl.createDiv(); + colorContainer.style.display = 'flex'; + colorContainer.style.alignItems = 'center'; + colorContainer.style.justifyContent = 'space-between'; + const colorPicker = new obsidian.ColorComponent(colorContainer) + .setValue((_a = rule.color) !== null && _a !== void 0 ? _a : '#000000') + .onChange((value) => { + rule.color = value; + }); + const defaultColorButton = new obsidian.ButtonComponent(colorContainer); + defaultColorButton.setTooltip('Set color to the default one'); + defaultColorButton.setButtonText('Default'); + defaultColorButton.onClick(() => { + colorPicker.setValue('#000000'); + rule.color = undefined; + }); + // Create the save button. + const button = new obsidian.ButtonComponent(modal.contentEl); + button.buttonEl.style.marginTop = 'var(--size-4-4)'; + button.buttonEl.style.float = 'right'; + button.setButtonText('Save Changes'); + button.onClick(() => __awaiter(this, void 0, void 0, function* () { + if (!emoji.isEmoji(oldRule.icon)) { + // Tries to remove the previously used icon from the icon pack. + removeIconFromIconPack(this.plugin, oldRule.icon); + } + if (!emoji.isEmoji(rule.icon)) { + // Tries to add the newly used icon to the icon pack. + saveIconToIconPack(this.plugin, rule.icon); + rule.icon = getNormalizedName(rule.icon); + } + this.refreshDisplay(); + new obsidian.Notice('Custom rule updated.'); + // Refresh the DOM. + yield customRule.removeFromAllFiles(this.plugin, oldRule); + this.updateIconTabs(rule, true); + this.plugin.getSettings().rules.forEach((rule) => __awaiter(this, void 0, void 0, function* () { + yield customRule.addToAllFiles(this.plugin, rule); + this.updateIconTabs(rule, false); + })); + yield this.plugin.saveIconFolderData(); + modal.close(); + })); + modal.open(); + }); + }); + // Add the delete custom rule button. + settingRuleEl.addButton((btn) => { + btn.setIcon('trash'); + btn.setTooltip('Remove the custom rule'); + btn.onClick(() => __awaiter(this, void 0, void 0, function* () { + const newRules = this.plugin + .getSettings() + .rules.filter((r) => rule.rule !== r.rule || + rule.color !== r.color || + rule.icon !== r.icon || + rule.for !== r.for); + this.plugin.getSettings().rules = newRules; + yield this.plugin.saveIconFolderData(); + this.refreshDisplay(); + new obsidian.Notice('Custom rule deleted.'); + yield customRule.removeFromAllFiles(this.plugin, rule); + removeIconFromIconPack(this.plugin, rule.icon); + this.updateIconTabs(rule, true); + const previousRules = this.plugin + .getSettings() + .rules.filter((r) => rule.for === r.for); + previousRules.forEach((previousRule) => __awaiter(this, void 0, void 0, function* () { + yield customRule.addToAllFiles(this.plugin, previousRule); + this.updateIconTabs(previousRule, false); + })); + })); + }); + }); + } +} + +/** + * Gets all the inheritance folder from the data as an object which consists of the path + * as a key and the value as the object. It does that by including all objects (except + * the settings). + * @param plugin IconFolderPlugin that will be used to get the data from. + * @returns An object where the keys are the paths and the values are the objects. + */ +const getFolders = (plugin) => { + return Object.entries(plugin.getData()) + .filter(([k, v]) => k !== 'settings' && typeof v === 'object') + .reduce((prev, [path, value]) => { + prev[path] = value; + return prev; + }, {}); +}; +/** + * Gets all the files where that file path includes the specified folder path. + * @param plugin Instance of IconFolderPlugin. + * @param folderPath Folder path that will be used to check if the file includes this. + * @returns An array of files that include the folder path. + */ +const getFiles = (plugin, folderPath) => { + return plugin.app.vault + .getAllLoadedFiles() + .filter((file) => file.path.includes(folderPath)); +}; +const add$1 = (plugin, folderPath, iconName, options) => { + var _a; + const folder = plugin.getData()[folderPath]; + // Checks if data exists and if the data is some kind of object type. + if (!folder || typeof folder !== 'object') { + return; + } + // A inner function that helps to add the inheritance icon to the DOM. + const addIcon = (fileItem) => { + var _a; + const titleEl = getFileItemTitleEl(fileItem); + const innerTitleEl = getFileItemInnerTitleEl(fileItem); + const iconNode = document.createElement('div'); + iconNode.setAttribute(config.ICON_ATTRIBUTE_NAME, iconName); + iconNode.classList.add('iconize-icon'); + dom.setIconForNode(plugin, iconName, iconNode); + titleEl.insertBefore(iconNode, innerTitleEl); + (_a = options === null || options === void 0 ? void 0 : options.onAdd) === null || _a === void 0 ? void 0 : _a.call(options, fileItem.file); + }; + for (const fileExplorer of plugin.getRegisteredFileExplorers()) { + if (options === null || options === void 0 ? void 0 : options.file) { + // Handles the addition of the inheritance icon for only one file. + const fileItem = fileExplorer.fileItems[options.file.path]; + const inFolder = options.file.path.includes(folderPath); + const hasIcon = fileItem && plugin.getData()[fileItem.file.path]; + if (!fileItem || !inFolder || hasIcon) { + continue; + } + // Checks if the file item has an already existing icon and removes it. + const container = getFileItemTitleEl(fileItem); + if (dom.doesElementHasIconNode(container)) { + dom.removeIconInNode(container); + } + addIcon(fileItem); + IconCache.getInstance().set(options.file.path, { + iconNameWithPrefix: iconName, + inInheritance: true, + }); + } + else { + // Handles the addition of a completely new inheritance for a folder. + for (const [path, fileItem] of Object.entries(fileExplorer.fileItems)) { + // Checks if the file is in the folder and not a directory. + if (((_a = fileItem.file.parent) === null || _a === void 0 ? void 0 : _a.path) !== folderPath) { + continue; + } + const isFolder = fileItem.file.children !== undefined; + const inFolder = path.includes(folderPath); + const hasIcon = plugin.getData()[fileItem.file.path]; + if (!inFolder || hasIcon || isFolder) { + continue; + } + const container = getFileItemTitleEl(fileItem); + // Checks if the file item has an already existing icon and removes it. + if (dom.doesElementHasIconNode(container)) { + dom.removeIconInNode(container); + } + addIcon(fileItem); + IconCache.getInstance().set(path, { + iconNameWithPrefix: iconName, + inInheritance: true, + }); + } + } + } +}; +const remove$1 = (plugin, folderPath, options) => { + var _a, _b; + const folder = plugin.getData()[folderPath]; + // Checks if data exists and if the data is some kind of object type. + if (!folder || typeof folder !== 'object') { + return; + } + // Gets all files that include the folder path of the currently opened vault. + const files = getFiles(plugin, folderPath); + for (const file of files) { + if (((_a = file.parent) === null || _a === void 0 ? void 0 : _a.path) !== folderPath) { + continue; + } + // When the file path is not registered in the data it should remove the icon. + if (!plugin.getData()[file.path]) { + dom.removeIconInPath(file.path); + IconCache.getInstance().invalidate(file.path); + (_b = options === null || options === void 0 ? void 0 : options.onRemove) === null || _b === void 0 ? void 0 : _b.call(options, file); + } + } +}; +const getByPath$1 = (plugin, path) => { + const folders = getFolders(plugin); + const foundFolderIcon = Object.entries(folders).find(([folderPath]) => path.includes(folderPath)); + return foundFolderIcon === null || foundFolderIcon === void 0 ? void 0 : foundFolderIcon[1]; // Returns the folder icon when defined. +}; +const doesExistInPath = (plugin, path) => { + const folders = getFolders(plugin); + return Object.keys(folders).some((folderPath) => path.includes(folderPath)); +}; +const getFolderPathByFilePath = (plugin, filePath) => { + const folders = getFolders(plugin); + const foundFolderIcon = Object.entries(folders).find(([folderPath]) => filePath.includes(folderPath)); + return foundFolderIcon === null || foundFolderIcon === void 0 ? void 0 : foundFolderIcon[0]; // Returns the folder path when defined. +}; +var inheritance = { + add: add$1, + remove: remove$1, + getFolders, + getFiles, + getByPath: getByPath$1, + getFolderPathByFilePath, + doesExistInPath, +}; + +class EmojiStyleSetting extends IconFolderSetting { + display() { + const emojiStyle = new obsidian.Setting(this.containerEl) + .setName('Emoji Style') + .setDesc('Change the style of your emojis.'); + emojiStyle.addDropdown((dropdown) => { + dropdown.addOption('none', 'None'); + dropdown.addOption('native', 'Native'); + dropdown.addOption('twemoji', 'Twemoji'); + dropdown.setValue(this.plugin.getSettings().emojiStyle); + dropdown.onChange((value) => __awaiter(this, void 0, void 0, function* () { + this.plugin.getSettings().emojiStyle = value; + this.updateDOM(); + yield this.plugin.saveIconFolderData(); + })); + }); + } + updateDOM() { + for (const fileExplorer of this.plugin.getRegisteredFileExplorers()) { + const fileItems = Object.entries(fileExplorer.fileItems); + for (const [path, _] of fileItems) { + let iconName = this.plugin.getData()[path]; + if (!iconName) { + continue; + } + if (typeof this.plugin.getData()[path] === 'object') { + const inheritanceData = this.plugin.getData()[path]; + iconName = inheritanceData.iconName; + // Handle updating the emoji style for the inheritance icon. + if (emoji.isEmoji(inheritanceData.inheritanceIcon)) { + for (const file of inheritance.getFiles(this.plugin, path)) { + dom.createIconNode(this.plugin, file.path, inheritanceData.inheritanceIcon); + const tabLeaves = iconTabs.getTabLeavesOfFilePath(this.plugin, file.path); + for (const tabLeaf of tabLeaves) { + iconTabs.update(this.plugin, inheritanceData.inheritanceIcon, tabLeaf.tabHeaderInnerIconEl); + } + } + } + } + // `iconName` is `null` indicates that for the inheritance object the icon name + // on the node itself does not exist. + if (!iconName) { + continue; + } + if (emoji.isEmoji(iconName)) { + dom.createIconNode(this.plugin, path, iconName); + const tabLeaves = iconTabs.getTabLeavesOfFilePath(this.plugin, path); + for (const tabLeaf of tabLeaves) { + iconTabs.update(this.plugin, iconName, tabLeaf.tabHeaderInnerIconEl); + } + } + } + } + for (const rule of customRule.getSortedRules(this.plugin)) { + customRule.addToAllFiles(this.plugin, rule); + } + } +} + +/** + * Helper function that refreshes the style of all the icons that are defined, in some + * sort of inheritance, or in a custom rule involved. + * @param plugin Instance of the IconFolderPlugin. + */ +const refreshStyleOfIcons = (plugin) => __awaiter(void 0, void 0, void 0, function* () { + // Refreshes the icon style for all normally added icons. + style.refreshIconNodes(plugin); + const fileExplorers = plugin.app.workspace.getLeavesOfType('file-explorer'); + for (const fileExplorer of fileExplorers) { + // Refreshes the icon style for all inheritance folders. + for (const folderPath of Object.keys(inheritance.getFolders(plugin))) { + // Apply style for the icon node itself. + const folderItem = fileExplorer.view.fileItems[folderPath]; + if (folderItem) { + const titleEl = getFileItemTitleEl(folderItem); + const iconNode = titleEl.querySelector('.iconize-icon'); + if (iconNode) { + iconNode.innerHTML = style.applyAll(plugin, iconNode.innerHTML, iconNode); + } + } + // Apply style for all files in this inheritance. + const files = inheritance.getFiles(plugin, folderPath); + for (const file of files) { + const fileItem = fileExplorer.view.fileItems[file.path]; + const titleEl = getFileItemTitleEl(fileItem); + const iconNode = titleEl.querySelector('.iconize-icon'); + if (iconNode) { + iconNode.innerHTML = style.applyAll(plugin, iconNode.innerHTML, iconNode); + } + } + } + // Refreshes the icon style for all custom icon rules, when the color of the rule is + // not defined. + for (const rule of customRule.getSortedRules(plugin)) { + const fileItems = yield customRule.getFileItems(plugin, rule); + for (const fileItem of fileItems) { + const titleEl = getFileItemTitleEl(fileItem); + const iconNode = titleEl.querySelector('.iconize-icon'); + let iconContent = iconNode.innerHTML; + iconContent = style.applyAll(plugin, iconContent, iconNode); + if (rule.color) { + iconContent = svg.colorize(iconContent, rule.color); + iconNode.style.color = rule.color; + } + iconNode.innerHTML = iconContent; + } + } + } +}); +var helper = { + refreshStyleOfIcons, +}; + +class ExtraMarginSetting extends IconFolderSetting { + display() { + var _a, _b; + const extraMarginSetting = new obsidian.Setting(this.containerEl) + .setName('Extra margin (in pixels)') + .setDesc('Change the margin of the icons.') + .setClass('iconize-setting'); + const extraMarginDropdown = new obsidian.DropdownComponent(extraMarginSetting.controlEl).addOptions({ + top: 'Top', + right: 'Right', + bottom: 'Bottom', + left: 'Left', + }); + const extraMarginSlider = new obsidian.SliderComponent(extraMarginSetting.controlEl) + .setLimits(-24, 24, 1) + .setDynamicTooltip() + .setValue((_b = (_a = this.plugin.getSettings().extraMargin) === null || _a === void 0 ? void 0 : _a.top) !== null && _b !== void 0 ? _b : 2) + .onChange((val) => __awaiter(this, void 0, void 0, function* () { + const dropdownValue = extraMarginDropdown.getValue(); + if (this.plugin.getSettings().extraMargin) { + this.plugin.getSettings().extraMargin[dropdownValue] = val; + } + else { + this.plugin.getSettings().extraMargin = { + [dropdownValue]: val, + }; + } + yield this.plugin.saveIconFolderData(); + helper.refreshStyleOfIcons(this.plugin); + })); + extraMarginDropdown.onChange((val) => { + var _a; + if (this.plugin.getSettings().extraMargin) { + extraMarginSlider.setValue((_a = this.plugin.getSettings().extraMargin[val]) !== null && _a !== void 0 ? _a : 2); + } + else { + extraMarginSlider.setValue(2); + } + }); + extraMarginSetting.components.push(extraMarginDropdown, extraMarginSlider); + } +} + +class IconColorSetting extends IconFolderSetting { + display() { + var _a; + const colorCustomization = new obsidian.Setting(this.containerEl) + .setName('Icon color') + .setDesc('Change the color of the displayed icons.'); + const colorPicker = new obsidian.ColorComponent(colorCustomization.controlEl) + .setValue((_a = this.plugin.getSettings().iconColor) !== null && _a !== void 0 ? _a : '#000000') + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + this.plugin.getSettings().iconColor = value; + yield this.plugin.saveIconFolderData(); + helper.refreshStyleOfIcons(this.plugin); + })); + colorCustomization.addButton((button) => { + button + .setButtonText('Default') + .setTooltip('Set color to the default one') + .onClick(() => __awaiter(this, void 0, void 0, function* () { + colorPicker.setValue('#000000'); + this.plugin.getSettings().iconColor = null; + yield this.plugin.saveIconFolderData(); + helper.refreshStyleOfIcons(this.plugin); + })); + }); + colorCustomization.components.push(colorPicker); + } +} + +class IconFontSizeSetting extends IconFolderSetting { + display() { + new obsidian.Setting(this.containerEl) + .setName('Icon font size (in pixels)') + .setDesc('Change the font size of the displayed icons.') + .addSlider((slider) => { + var _a; + slider + .setLimits(10, 24, 1) + .setDynamicTooltip() + .setValue((_a = this.plugin.getSettings().fontSize) !== null && _a !== void 0 ? _a : DEFAULT_SETTINGS.fontSize) + .onChange((val) => __awaiter(this, void 0, void 0, function* () { + this.plugin.getSettings().fontSize = val; + yield this.plugin.saveIconFolderData(); + helper.refreshStyleOfIcons(this.plugin); + })); + }); + } +} + +class IconPacksPathSetting extends IconFolderSetting { + display() { + const iconPacksPathSetting = new obsidian.Setting(this.containerEl) + .setName('Icon Packs folder path') + .setDesc('Change the default icon packs folder path'); + iconPacksPathSetting.addText((text) => { + this.iconPacksSettingTextComp = text; + text.setValue(this.plugin.getSettings().iconPacksPath); + }); + iconPacksPathSetting.addButton((btn) => { + btn.setButtonText('Save'); + btn.buttonEl.style.marginLeft = '12px'; + btn.onClick(() => __awaiter(this, void 0, void 0, function* () { + const newPath = this.iconPacksSettingTextComp.getValue(); + const oldPath = this.plugin.getSettings().iconPacksPath; + if (oldPath === this.iconPacksSettingTextComp.getValue()) { + return; + } + new obsidian.Notice('Saving in progress...'); + setPath(newPath); + yield createDefaultDirectory(this.plugin); + yield moveIconPackDirectories(this.plugin, oldPath, newPath); + this.plugin.getSettings().iconPacksPath = newPath; + yield this.plugin.saveIconFolderData(); + new obsidian.Notice('...saved successfully'); + })); + }); + } +} + +class IconPacksBackgroundChecker extends IconFolderSetting { + display() { + new obsidian.Setting(this.containerEl) + .setName('Icons Background Check') + .setDesc('Check in the background on every load of Obsidian, if icons are missing and it will try to add them to the specific icon pack.') + .addToggle((toggle) => { + toggle + .setValue(this.plugin.getSettings().iconsBackgroundCheckEnabled) + .onChange((enabled) => __awaiter(this, void 0, void 0, function* () { + this.plugin.getSettings().iconsBackgroundCheckEnabled = enabled; + yield this.plugin.saveIconFolderData(); + if (enabled) { + new obsidian.Notice('You need to reload Obsidian for this to take effect.', 10000); + } + })); + }); + } +} + +class IconPackBrowserModal extends obsidian.FuzzySuggestModal { + constructor(app, plugin) { + super(app); + this.plugin = plugin; + this.resultContainerEl.classList.add('iconize-browse-modal'); + this.inputEl.placeholder = 'Select to download icon pack'; + } + // eslint-disable-next-line + onAddedIconPack() { } + onOpen() { + super.onOpen(); + } + onClose() { + this.contentEl.empty(); + } + getItemText(item) { + const prefix = createIconPackPrefix(item.name); + return `${item.displayName} (${prefix})`; + } + getItems() { + const predefinedIconPacks = Object.values(iconPacks$1); + const allIconPacks = getAllIconPacks(); + return predefinedIconPacks.filter((iconPack) => allIconPacks.find((ip) => iconPack.name === ip.name) === undefined); + } + onChooseItem(item, _event) { + return __awaiter(this, void 0, void 0, function* () { + new obsidian.Notice(`Adding ${item.displayName}...`); + const arrayBuffer = yield downloadZipFile(item.downloadLink); + yield createZipFile(this.plugin, `${item.name}.zip`, arrayBuffer); + yield registerIconPack(item.name, arrayBuffer); + new obsidian.Notice(`...${item.displayName} added`); + this.onAddedIconPack(); + }); + } + renderSuggestion(item, el) { + super.renderSuggestion(item, el); + el.innerHTML = `
${el.innerHTML}
`; + } +} + +class PredefinedIconPacksSetting extends IconFolderSetting { + constructor(plugin, containerEl, app, refreshDisplay) { + super(plugin, containerEl); + this.app = app; + this.refreshDisplay = refreshDisplay; + } + display() { + new obsidian.Setting(this.containerEl) + .setName('Add predefined icon pack') + .setDesc('Add an icon pack like FontAwesome or Remixicons') + .addButton((btn) => { + btn.setButtonText('Browse icon packs'); + btn.onClick(() => { + const modal = new IconPackBrowserModal(this.app, this.plugin); + modal.onAddedIconPack = () => { + this.refreshDisplay(); + }; + modal.open(); + }); + }); + } +} + +class RecentlyUsedIconsSetting extends IconFolderSetting { + display() { + new obsidian.Setting(this.containerEl) + .setName('Recently used Icons limit') + .setDesc('Change the limit for the recently used icons displayed in the icon modal.') + .addSlider((slider) => { + var _a; + slider + .setLimits(1, 25, 1) + .setDynamicTooltip() + .setValue((_a = this.plugin.getSettings().recentlyUsedIconsSize) !== null && _a !== void 0 ? _a : DEFAULT_SETTINGS.recentlyUsedIconsSize) + .onChange((val) => __awaiter(this, void 0, void 0, function* () { + this.plugin.getSettings().recentlyUsedIconsSize = val; + yield this.plugin.checkRecentlyUsedIcons(); + yield this.plugin.saveIconFolderData(); + })); + }); + } +} + +class ToggleIconInTabs extends IconFolderSetting { + display() { + new obsidian.Setting(this.containerEl) + .setName('Toggle Icon in Tabs') + .setDesc('Toggles the visibility of an icon for a file in the tab bar.') + .addToggle((toggle) => { + toggle + .setValue(this.plugin.getSettings().iconInTabsEnabled) + .onChange((enabled) => __awaiter(this, void 0, void 0, function* () { + this.plugin.getSettings().iconInTabsEnabled = enabled; + yield this.plugin.saveIconFolderData(); + // Updates the already opened files. + this.plugin.app.workspace + .getLeavesOfType('markdown') + .forEach((leaf) => { + const file = leaf.view.file; + if (file) { + const tabHeaderLeaf = leaf; + if (enabled) { + // Adds the icons to already opened files. + iconTabs.add(this.plugin, file, tabHeaderLeaf.tabHeaderInnerIconEl); + } + else { + // Removes the icons from already opened files. + iconTabs.remove(tabHeaderLeaf.tabHeaderInnerIconEl); + } + } + }); + })); + }); + } +} + +const calculateFontTextSize = () => { + var _a; + let fontSize = parseFloat((_a = getComputedStyle(document.body).getPropertyValue('--font-text-size')) !== null && _a !== void 0 ? _a : '0'); + if (!fontSize) { + fontSize = parseFloat(getComputedStyle(document.documentElement).fontSize); + } + return fontSize; +}; +const calculateInlineTitleSize = () => { + const fontSize = calculateFontTextSize(); + const inlineTitleSize = parseFloat(getComputedStyle(document.body).getPropertyValue('--inline-title-size')); + return fontSize * inlineTitleSize; +}; +const isHeader = (value) => { + return /^h[1-6]$/.test(value); +}; +const calculateHeaderSize = (header) => { + const fontSize = calculateFontTextSize(); + const headerSize = parseFloat(getComputedStyle(document.body).getPropertyValue(`--${header}-size`)); + return fontSize * headerSize; +}; + +const checkMissingIcons = (plugin, data) => __awaiter(void 0, void 0, void 0, function* () { + const missingIcons = new Set(); + const allIcons = new Map(); + const getMissingIcon = (iconNameWithPrefix) => __awaiter(void 0, void 0, void 0, function* () { + const iconNextIdentifier = nextIdentifier(iconNameWithPrefix); + const iconName = iconNameWithPrefix.substring(iconNextIdentifier); + const iconPrefix = iconNameWithPrefix.substring(0, iconNextIdentifier); + const iconPackName = getIconPackNameByPrefix(iconPrefix); + const icon = getIconFromIconPack(iconPackName, iconPrefix, iconName); + if (!icon) { + console.error(`Icon file ${iconNameWithPrefix} could not be found.`); + return null; + } + const doesIconFileExists = yield plugin.app.vault.adapter.exists(`${getPath()}/${iconPackName}/${iconName}.svg`); + if (!doesIconFileExists) { + const possibleIcon = getSvgFromLoadedIcon(iconPrefix, iconName); + if (!possibleIcon) { + console.error(`Icon SVG ${iconNameWithPrefix} could not be found.`); + return null; + } + yield extractIconToIconPack(plugin, icon, possibleIcon); + return icon; + } + return null; + }); + for (const rule of plugin.getSettings().rules) { + if (!emoji.isEmoji(rule.icon)) { + allIcons.set(rule.icon, true); + const icon = yield getMissingIcon(rule.icon); + if (icon) { + missingIcons.add(icon); + } + } + } + for (const [_, value] of data) { + // Check for missing icon names. + let iconNameWithPrefix = value; + if (typeof value === 'object') { + iconNameWithPrefix = value.iconName; + } + if (iconNameWithPrefix && !emoji.isEmoji(iconNameWithPrefix)) { + allIcons.set(iconNameWithPrefix, true); + const icon = yield getMissingIcon(iconNameWithPrefix); + if (icon) { + missingIcons.add(icon); + } + } + // Check for missing inheritance icons. + const hasInheritanceIcon = typeof value === 'object' && value.inheritanceIcon; + if (hasInheritanceIcon && !emoji.isEmoji(value.inheritanceIcon)) { + allIcons.set(value.inheritanceIcon, true); + const icon = yield getMissingIcon(value.inheritanceIcon); + if (icon) { + missingIcons.add(icon); + } + } + } + // Show notice that background check is running. + if (missingIcons.size !== 0) { + new obsidian.Notice(`[${config.PLUGIN_NAME}] Background Check: found missing icons. Adding missing icons...`, 10000); + } + // Iterates over all the missing icons with its path and adds the icon to the node. + for (const icon of missingIcons) { + const normalizedName = getNormalizedName(icon.prefix + icon.name); + const nodesWithIcon = document.querySelectorAll(`[${config.ICON_ATTRIBUTE_NAME}="${normalizedName}"]`); + nodesWithIcon.forEach((node) => { + dom.setIconForNode(plugin, normalizedName, node); + }); + } + // Show notice that background check was finished. + if (missingIcons.size !== 0) { + new obsidian.Notice(`[${config.PLUGIN_NAME}] Background Check: added missing icons`, 10000); + } + // Remove all icon files that can not be found in the data. + for (const iconPack of getAllIconPacks()) { + // Checks if the icon pack exists. + const doesIconPackExist = yield plugin.app.vault.adapter.exists(`${getPath()}/${iconPack.name}`); + if (!doesIconPackExist) { + continue; + } + const iconFiles = yield plugin.app.vault.adapter.list(`${getPath()}/${iconPack.name}`); + for (const iconFilePath of iconFiles.files) { + const iconNameWithExtension = iconFilePath.split('/').pop(); + // Removes the file extension. + const iconName = iconNameWithExtension === null || iconNameWithExtension === void 0 ? void 0 : iconNameWithExtension.substring(0, iconNameWithExtension.length - 4); + const iconNameWithPrefix = iconPack.prefix + iconName; + const doesIconExist = allIcons.get(iconNameWithPrefix); + if (!doesIconExist) { + const path = `${getPath()}/${iconPack.name}/${iconName}.svg`; + const doesPathExist = yield plugin.app.vault.adapter.exists(path); + if (doesPathExist) { + console.info(`[${config.PLUGIN_NAME}] Removing icon ${path} because it is not used anymore.`); + // Removes the icon file. + yield plugin.app.vault.adapter.remove(`${getPath()}/${iconPack.name}/${iconName}.svg`); + } + } + } + } +}); +/** + * This function adds all the possible icons to the corresponding nodes. It adds the icons, + * that are defined in the data as a basic string to the nodes, the inheritance folder + * icons, and also the custom rule icons. + * @param plugin Instance of IconFolderPlugin. + * @param data Data that will be used to add all the icons to the nodes. + * @param registeredFileExplorers A WeakSet of file explorers that are being used as a + * cache for already handled file explorers. + * @param callback Callback is being called whenever the icons are added to one file + * explorer. + */ +const addAll = (plugin, data, registeredFileExplorers, callback) => { + const fileExplorers = plugin.app.workspace.getLeavesOfType('file-explorer'); + for (const fileExplorer of fileExplorers) { + if (registeredFileExplorers.has(fileExplorer.view)) { + continue; + } + registeredFileExplorers.add(fileExplorer.view); + // Adds icons to already open file tabs. + if (plugin.getSettings().iconInTabsEnabled) { + for (const leaf of plugin.app.workspace.getLeavesOfType('markdown')) { + const file = leaf.view.file; + if (file) { + const tabHeaderLeaf = leaf; + iconTabs.add(plugin, file, tabHeaderLeaf.tabHeaderInnerIconEl); + } + } + } + for (const [dataPath, value] of data) { + const fileItem = fileExplorer.view.fileItems[dataPath]; + if (fileItem) { + const titleEl = getFileItemTitleEl(fileItem); + const titleInnerEl = getFileItemInnerTitleEl(fileItem); + // Need to check this because refreshing the plugin will duplicate all the icons. + if (titleEl.children.length === 2 || titleEl.children.length === 1) { + // Gets the icon name directly or from the inheritance folder. + const iconName = typeof value === 'string' ? value : value.iconName; + if (iconName) { + // Removes a possible existing icon. + const existingIcon = titleEl.querySelector('.iconize-icon'); + if (existingIcon) { + existingIcon.remove(); + } + // Creates the new node with the icon inside. + const iconNode = titleEl.createDiv(); + iconNode.setAttribute(config.ICON_ATTRIBUTE_NAME, iconName); + iconNode.classList.add('iconize-icon'); + IconCache.getInstance().set(dataPath, { + iconNameWithPrefix: iconName, + }); + dom.setIconForNode(plugin, iconName, iconNode); + titleEl.insertBefore(iconNode, titleInnerEl); + } + // Handle possible inheritance for the folder. + if (typeof value === 'object' && value.inheritanceIcon) { + inheritance.add(plugin, dataPath, value.inheritanceIcon); + } + } + } + } + // Callback function to register other events to this file explorer. + callback === null || callback === void 0 ? void 0 : callback(); + } + // Handles the custom rules. + for (const rule of customRule.getSortedRules(plugin)) { + customRule.addToAllFiles(plugin, rule); + } +}; +/** + * Gets the icon of a given path. This function returns the first occurrence of an icon. + * @param plugin Instance of the IconFolderPlugin. + * @param path Path to get the icon of. + * @returns The icon of the path if it exists, undefined otherwise. + */ +const getByPath = (plugin, path) => { + if (path === 'settings' || path === 'migrated') { + return undefined; + } + const value = plugin.getData()[path]; + if (typeof value === 'string') { + // If the value is a plain icon name, return it. + return value; + } + else if (typeof value === 'object') { + // Additional checks for inheritance folders. + const v = value; + // If the inheritance folder contains a custom icon for itself, return it. + if (v.iconName !== null) { + return v.iconName; + } + } + // Tries to get the inheritance icon for the path and returns its inheritance icon if + // it exists. + const inheritanceIcon = inheritance.getByPath(plugin, path); + if (inheritanceIcon) { + return inheritanceIcon.inheritanceIcon; + } + // Tries to get the custom rule for the path and returns its icon if it exists. + const rule = customRule.getSortedRules(plugin).find((rule) => { + return customRule.doesMatchPath(rule, path); + }); + if (rule) { + return rule.icon; + } + return undefined; +}; +/** + * Gets all the icons with their paths as an object. + * @param plugin Instance of the IconFolderPlugin. + * @returns An object that consists of the path and the icon name for the data, inheritance, + * or custom rule. + */ +const getAllWithPath = (plugin) => { + const result = []; + Object.keys(plugin.getData()).forEach((path) => { + if (path === 'settings' || path === 'migrated') { + return; + } + const icon = getByPath(plugin, path); + if (icon && !emoji.isEmoji(icon)) { + result.push({ path, icon }); + } + // Check for inheritance folder and insert the inheritance icon. + const inheritanceFolder = inheritance.getByPath(plugin, path); + if (inheritanceFolder && + !emoji.isEmoji(inheritanceFolder.inheritanceIcon)) { + result.push({ path, icon: inheritanceFolder.inheritanceIcon }); + } + }); + // Add all icons for the custom rules with the rule as the path. + for (const rule of plugin.getSettings().rules) { + if (!emoji.isEmoji(rule.icon)) { + result.push({ path: rule.rule, icon: rule.icon }); + } + } + return result; +}; +/** + * Returns the {@link Icon} for the given icon name. It is important, that the icon name + * contains the icon pack prefix. + * @param iconNameWithPrefix String that contains the icon pack prefix combined with the + * icon name. + * @returns Icon if it exists, `null` otherwise. + */ +const getIconByName = (iconNameWithPrefix) => { + const iconNextIdentifier = nextIdentifier(iconNameWithPrefix); + const iconName = iconNameWithPrefix.substring(iconNextIdentifier); + const iconPrefix = iconNameWithPrefix.substring(0, iconNextIdentifier); + const iconPackName = getIconPackNameByPrefix(iconPrefix); + const icon = getIconFromIconPack(iconPackName, iconPrefix, iconName); + if (!icon) { + return null; + } + return icon; +}; +/** + * Returns the {@link Icon} for the given path. + * @param plugin IconFolderPlugin instance. + * @param path String which is the path to get the icon of. + * @returns Icon or Emoji as string if it exists, `null` otherwise. + */ +const getIconByPath = (plugin, path) => { + const iconNameWithPrefix = getByPath(plugin, path); + if (!iconNameWithPrefix) { + return null; + } + if (emoji.isEmoji(iconNameWithPrefix)) { + return iconNameWithPrefix; + } + return getIconByName(iconNameWithPrefix); +}; +var icon = { + addAll, + getByPath, + getAllWithPath, + getIconByPath, + getIconByName, + checkMissingIcons, +}; + +const getTitleIcon = (leaf) => { + return leaf.querySelector(`.${config.TITLE_ICON_CLASS}`); +}; +const add = (inlineTitleEl, svgElement, options) => { + if (!inlineTitleEl.parentElement) { + return; + } + if (options === null || options === void 0 ? void 0 : options.fontSize) { + svgElement = svg.setFontSize(svgElement, options.fontSize); + } + let titleIcon = getTitleIcon(inlineTitleEl.parentElement); + const hadTitleIcon = titleIcon !== null; + if (!titleIcon) { + titleIcon = document.createElement('div'); + } + titleIcon.style.display = 'block'; + titleIcon.classList.add(config.TITLE_ICON_CLASS); + // Checks if the passed element is an emoji. + if (emoji.isEmoji(svgElement) && options.fontSize) { + titleIcon.style.fontSize = `${options.fontSize}px`; + } + titleIcon.innerHTML = svgElement; + if (!hadTitleIcon) { + inlineTitleEl.parentElement.prepend(titleIcon); + } +}; +const updateStyle = (inlineTitleEl, options) => { + if (!inlineTitleEl.parentElement) { + return; + } + const titleIcon = getTitleIcon(inlineTitleEl.parentElement); + if (!titleIcon) { + return; + } + if (options.fontSize) { + if (!emoji.isEmoji(titleIcon.innerHTML)) { + titleIcon.innerHTML = svg.setFontSize(titleIcon.innerHTML, options.fontSize); + } + else { + titleIcon.style.fontSize = `${options.fontSize}px`; + } + } +}; +/** + * Hides the title icon from the provided HTMLElement. + * @param contentEl HTMLElement to hide the title icon from. + */ +const hide = (inlineTitleEl) => { + if (!inlineTitleEl.parentElement) { + return; + } + const titleIconContainer = getTitleIcon(inlineTitleEl.parentElement); + if (!titleIconContainer) { + return; + } + titleIconContainer.style.display = 'none'; +}; +const remove = (inlineTitleEl) => { + if (!inlineTitleEl.parentElement) { + return; + } + const titleIconContainer = getTitleIcon(inlineTitleEl.parentElement); + if (!titleIconContainer) { + return; + } + titleIconContainer.remove(); +}; +var titleIcon = { + add, + updateStyle, + hide, + remove, +}; + +class ToggleIconInTitle extends IconFolderSetting { + display() { + new obsidian.Setting(this.containerEl) + .setName('Toggle Icon in Title') + .setDesc('Toggles the visibility of an icon for a file above the title.') + .addToggle((toggle) => { + toggle + .setValue(this.plugin.getSettings().iconInTitleEnabled) + .onChange((enabled) => __awaiter(this, void 0, void 0, function* () { + this.plugin.getSettings().iconInTitleEnabled = enabled; + yield this.plugin.saveIconFolderData(); + // Updates the already opened files. + this.plugin.app.workspace + .getLeavesOfType('markdown') + .forEach((leaf) => { + const view = leaf.view; + if (view instanceof obsidian.MarkdownView) { + const foundIcon = icon.getIconByPath(this.plugin, view.file.path); + if (foundIcon && enabled) { + const content = typeof foundIcon === 'string' + ? foundIcon + : foundIcon.svgElement; + titleIcon.add(view.inlineTitleEl, content, { + fontSize: calculateInlineTitleSize(), + }); + } + else { + titleIcon.hide(view.contentEl); + } + } + }); + })); + }); + } +} + +class ToggleFrontmatterIcon extends IconFolderSetting { + display() { + new obsidian.Setting(this.containerEl) + .setName('Use icon in frontmatter') + .setDesc('Toggles whether to set the icon based on the frontmatter property `icon`.') + .addToggle((toggle) => { + toggle + .setValue(this.plugin.getSettings().iconInFrontmatterEnabled) + .onChange((enabled) => __awaiter(this, void 0, void 0, function* () { + this.plugin.getSettings().iconInFrontmatterEnabled = enabled; + yield this.plugin.saveIconFolderData(); + })); + }); + } +} + +class ToggleIconsInEditor extends IconFolderSetting { + display() { + new obsidian.Setting(this.containerEl) + .setName('Toggle Icons while editing notes') + .setDesc('Toggles whether you are able to add and see icons in your notes and editor (e.g., ability to have :LiSofa: as an icon in your notes).') + .addToggle((toggle) => { + toggle + .setValue(this.plugin.getSettings().iconsInNotesEnabled) + .onChange((enabled) => __awaiter(this, void 0, void 0, function* () { + this.plugin.getSettings().iconsInNotesEnabled = enabled; + yield this.plugin.saveIconFolderData(); + new obsidian.Notice(`[${config.PLUGIN_NAME}] Obsidian has to be restarted for this change to take effect.`); + })); + }); + } +} + +class IconFolderSettings extends obsidian.PluginSettingTab { + constructor(app, plugin) { + super(app, plugin); + this.plugin = plugin; + } + display() { + const { plugin, containerEl, app } = this; + containerEl.empty(); + containerEl.createEl('h2', { text: 'Icon Folder Settings' }); + new RecentlyUsedIconsSetting(plugin, containerEl).display(); + new IconPacksPathSetting(plugin, containerEl).display(); + new IconPacksBackgroundChecker(plugin, containerEl).display(); + new EmojiStyleSetting(plugin, containerEl).display(); + new ToggleIconInTabs(plugin, containerEl).display(); + new ToggleIconInTitle(plugin, containerEl).display(); + new ToggleFrontmatterIcon(plugin, containerEl).display(); + new ToggleIconsInEditor(plugin, containerEl).display(); + containerEl.createEl('h3', { text: 'Icon Packs' }); + new PredefinedIconPacksSetting(plugin, containerEl, app, () => this.display()).display(); + new CustomIconPackSetting(plugin, containerEl, () => this.display()).display(); + containerEl.createEl('h3', { text: 'Icon Customization' }); + new IconFontSizeSetting(plugin, containerEl).display(); + new IconColorSetting(plugin, containerEl).display(); + new ExtraMarginSetting(plugin, containerEl).display(); + containerEl.createEl('h3', { text: 'Custom Icon Rules' }); + new CustomIconRuleSetting(plugin, containerEl, app, () => this.display()).display(); + } +} + +function around(obj, factories) { + const removers = Object.keys(factories).map(key => around1(obj, key, factories[key])); + return removers.length === 1 ? removers[0] : function () { removers.forEach(r => r()); }; +} +function around1(obj, method, createWrapper) { + const original = obj[method], hadOwn = obj.hasOwnProperty(method); + let current = createWrapper(original); + // Let our wrapper inherit static props from the wrapping method, + // and the wrapping method, props from the original method + if (original) + Object.setPrototypeOf(current, original); + Object.setPrototypeOf(wrapper, current); + obj[method] = wrapper; + // Return a callback to allow safe removal + return remove; + function wrapper(...args) { + // If we have been deactivated and are no longer wrapped, remove ourselves + if (current === original && obj[method] === wrapper) + remove(); + return current.apply(this, args); + } + function remove() { + // If no other patches, just do a direct removal + if (obj[method] === wrapper) { + if (hadOwn) + obj[method] = original; + else + delete obj[method]; + } + if (current === original) + return; + // Else pass future calls through, and remove wrapper from the prototype chain + current = original; + Object.setPrototypeOf(wrapper, original || Function); + } +} + +class InternalPluginInjector { + constructor(plugin) { + this.plugin = plugin; + } + get fileExplorers() { + return this.plugin.app.workspace.getLeavesOfType('file-explorer'); + } + // eslint-disable-next-line + onMount() { } +} + +/** + * @deprecated After obsidian 1.2.6 in favor of the bookmarks plugin. + */ +class StarredInternalPlugin extends InternalPluginInjector { + constructor(plugin) { + super(plugin); + } + get starred() { + return this.plugin.app.internalPlugins.getPluginById('starred'); + } + get enabled() { + return this.plugin.app.internalPlugins.getPluginById('starred').enabled; + } + get leaf() { + const leaf = this.plugin.app.workspace.getLeavesOfType('starred'); + if (!leaf) { + return undefined; + } + if (leaf.length === 1) { + return leaf[0].view; + } + return undefined; + } + setIcon(filePath, node) { + const iconName = icon.getByPath(this.plugin, filePath); + const iconNode = node.querySelector('.nav-file-icon'); + if (!iconNode || !iconName) { + return; + } + dom.setIconForNode(this.plugin, iconName, iconNode); + } + computeNodesWithPath(callback) { + const { itemLookup, containerEl } = this.leaf; + const navFileEls = containerEl.querySelectorAll('.nav-file'); + navFileEls.forEach((navFileEl) => { + const lookupFile = itemLookup.get(navFileEl); + if (!lookupFile) { + return; + } + callback(navFileEl, lookupFile.path); + }); + } + onMount() { + const nodesWithPath = {}; + this.computeNodesWithPath((node, filePath) => { + nodesWithPath[filePath] = node; + }); + Object.entries(nodesWithPath).forEach(([filePath, node]) => this.setIcon(filePath, node)); + } + register() { + if (!this.plugin.app.internalPlugins.getPluginById('file-explorer').enabled) { + console.info(`[${config.PLUGIN_NAME}/Starred] Skipping starred internal plugin registration because file-explorer is not enabled.`); + return; + } + if (!this.enabled) { + console.info(`[${config.PLUGIN_NAME}/Starred] Skipping starred internal plugin registration because it's not enabled.`); + return; + } + // eslint-disable-next-line + const self = this; + this.plugin.register(around(this.starred.instance, { + addItem: function (next) { + return function (file) { + next.call(this, file); + self.onMount(); + }; + }, + removeItem: function (next) { + return function (file) { + next.call(this, file); + self.onMount(); + }; + }, + })); + } +} + +class BookmarkInternalPlugin extends InternalPluginInjector { + constructor(plugin) { + super(plugin); + } + get bookmark() { + return this.plugin.app.internalPlugins.getPluginById('bookmarks'); + } + get enabled() { + return this.plugin.app.internalPlugins.getPluginById('bookmarks').enabled; + } + get leaf() { + const leaf = this.plugin.app.workspace.getLeavesOfType('bookmarks'); + if (!leaf) { + return undefined; + } + if (leaf.length === 1) { + return leaf[0].view; + } + return undefined; + } + setIconOrRemove(filePath, node) { + const iconName = icon.getByPath(this.plugin, filePath); + let iconNode = node.querySelector('.tree-item-icon'); + if (!iconName) { + if (iconNode) { + // Reset the icon to the default obsidian icon. + const items = this.bookmark.instance.items; + const item = items.find((item) => item.path === filePath); + if ((item === null || item === void 0 ? void 0 : item.type) === 'file') { + iconNode.innerHTML = DEFAULT_FILE_ICON; + } + else if ((item === null || item === void 0 ? void 0 : item.type) === 'folder') { + iconNode.innerHTML = DEFAULT_FOLDER_ICON; + } + } + return; + } + // If the icon node is not defined, then we need to recreate it. + if (!iconNode) { + // Get the tree-item-self element where the original icon is set. + const treeItemSelf = node.querySelector('.tree-item-self'); + if (!treeItemSelf) { + return; + } + iconNode = node.createDiv({ cls: 'tree-item-icon' }); + // Prepends the icon to the tree-item-self element as a first child. + treeItemSelf.prepend(iconNode); + } + const defaultMargin = iconNode.style.margin; + dom.setIconForNode(this.plugin, iconName, iconNode); + // Reset the margin to the default value to prevent overlapping with the text. + iconNode.style.margin = defaultMargin; + } + computeNodesWithPath(callback) { + if (!this.leaf) { + return; + } + /** + * Retrieves the lookup item from the bookmark plugin and calls the callback with the + * element and the path of the item. + * @param item BookmarkItem object which can be a folder or a file. + * @param itemDoms WeakMap of the bookmark plugin which contains the lookup item. + */ + const retrieveLookupItem = (item, itemDoms) => { + const lookupItem = itemDoms.get(item); + if (!lookupItem) { + return; + } + if (item.items) { + // If the item is a folder, then we need to retrieve all the items inside it. + for (const subItem of item.items) { + retrieveLookupItem(subItem, itemDoms); + } + } + // If the item is a `file` or a `folder` (not of type `group`), then we can call the callback. + if (item.type === 'file' || item.type === 'folder') { + callback(lookupItem.el, item.path); + } + }; + const { itemDoms } = this.leaf; + // Retrieves all the items of the bookmark plugin which areo objects. + const items = this.bookmark.instance.items; + items.forEach((item) => { + retrieveLookupItem(item, itemDoms); + }); + } + onMount() { + const nodesWithPath = {}; + this.computeNodesWithPath((node, filePath) => { + nodesWithPath[filePath] = node; + }); + Object.entries(nodesWithPath).forEach(([filePath, node]) => this.setIconOrRemove(filePath, node)); + } + register() { + if (!this.plugin.app.internalPlugins.getPluginById('file-explorer').enabled) { + console.info(`[${config.PLUGIN_NAME}/Bookmarks] Skipping bookmark internal plugin registration because file-explorer is not enabled.`); + return; + } + if (!this.enabled) { + console.info(`[${config.PLUGIN_NAME}/Bookmarks] Skipping bookmark internal plugin registration because it's not enabled.`); + return; + } + // eslint-disable-next-line + const self = this; + this.plugin.register(around(this.bookmark.instance, { + addItem: function (next) { + return function (...args) { + next.call(this, ...args); + // TODO: Remove in the future, I could not think of a better way to do this. + setTimeout(() => { + self.onMount(); + }, 1000); + }; + }, + removeItem: function (next) { + return function (...args) { + next.call(this, ...args); + self.onMount(); + }; + }, + })); + } +} + +class SuggestionIcon extends obsidian.EditorSuggest { + constructor(app, plugin) { + super(app); + this.plugin = plugin; + } + onTrigger(cursor, editor) { + // Isolate shortcode starting position closest to the cursor. + const shortcodeStart = editor + .getLine(cursor.line) + .substring(0, cursor.ch) + .lastIndexOf(':'); + // `onTrigger` needs to return `null` as soon as possible to save processing performance. + if (shortcodeStart === -1) { + return null; + } + // Regex for checking if the shortcode is not done yet. + const regexOngoingShortcode = editor + .getLine(cursor.line) + .substring(shortcodeStart, cursor.ch) + .match(/^(:)\w+$/g); + if (regexOngoingShortcode === null) { + return null; + } + const startingIndex = editor + .getLine(cursor.line) + .indexOf(regexOngoingShortcode[0]); + return { + start: { + line: cursor.line, + ch: startingIndex, + }, + end: { + line: cursor.line, + ch: startingIndex + regexOngoingShortcode[0].length, + }, + query: regexOngoingShortcode[0], + }; + } + getSuggestions(context) { + const queryLowerCase = context.query.substring(1).toLowerCase(); + // Store all icons corresponding to the current query. + const iconsNameArray = getAllLoadedIconNames() + .filter((iconObject) => { + const name = iconObject.prefix.toLowerCase() + iconObject.name.toLowerCase(); + return name.toLowerCase().includes(queryLowerCase); + }) + .map((iconObject) => iconObject.prefix + iconObject.name); + // Store all emojis correspoding to the current query - parsing whitespaces and + // colons for shortcodes compatibility. + const emojisNameArray = Object.keys(emoji.shortNames).filter((e) => { var _a; return (_a = emoji.getShortcode(e)) === null || _a === void 0 ? void 0 : _a.includes(queryLowerCase); }); + return [...iconsNameArray, ...emojisNameArray]; + } + renderSuggestion(value, el) { + const iconObject = icon.getIconByName(value); + el.style.display = 'flex'; + el.style.alignItems = 'center'; + el.style.gap = '0.25rem'; + if (iconObject) { + // Suggest an icon. + el.innerHTML = `${iconObject.svgElement} ${value}`; + } + else { + // Suggest an emoji - display its shortcode version. + const shortcode = emoji.getShortcode(value); + if (shortcode) { + el.innerHTML = `${value} ${shortcode}`; + } + } + } + selectSuggestion(value) { + const isEmoji = emoji.isEmoji(value.replace(/_/g, ' ')); + if (!isEmoji) { + saveIconToIconPack(this.plugin, value); + } + // Replace query with iconNameWithPrefix or emoji unicode directly. + const updatedValue = isEmoji ? value : `:${value}:`; + this.context.editor.replaceRange(updatedValue, this.context.start, this.context.end); + } +} + +class IconWidget extends view.WidgetType { + constructor(plugin, id) { + super(); + this.plugin = plugin; + this.id = id; + this.start = -1; + this.end = -1; + } + setPosition(start, end) { + this.start = start; + this.end = end; + } + eq(other) { + return other instanceof IconWidget && other.id === this.id; + } + toDOM(view) { + const wrap = createSpan({ + cls: 'cm-iconize-icon', + attr: { + 'aria-label': this.id, + 'data-icon': this.id, + 'aria-hidden': 'true', + }, + }); + const foundIcon = icon.getIconByName(this.id); + if (foundIcon) { + let fontSize = calculateFontTextSize(); + const line = view.state.doc.lineAt(this.end); + const headerMatch = line.text.match(/^#{1,6}\s/); + if (headerMatch && headerMatch[0].trim()) { + const mapping = { + '#': 'h1', + '##': 'h2', + '###': 'h3', + '####': 'h4', + '#####': 'h5', + '######': 'h6', + }; + const header = mapping[headerMatch[0].trim()]; + fontSize = calculateHeaderSize(header); + } + const svgElement = svg.setFontSize(foundIcon.svgElement, fontSize); + wrap.innerHTML = svgElement; + } + else { + wrap.append(`:${this.id}:`); + } + return wrap; + } + ignoreEvent() { + return false; + } +} + +const buildDecorations = (view$1, plugin) => { + const ranges = []; + const iconInfo = view$1.state.field(plugin.positionField); + for (const { from, to } of view$1.visibleRanges) { + iconInfo.between(from - 1, to + 1, (from, to, { iconId }) => { + ranges.push([iconId, from, to]); + }); + } + return view.Decoration.set(ranges.map(([code, from, to]) => { + const widget = new IconWidget(plugin, code); + widget.setPosition(from, to); + if (view$1.state.field(obsidian.editorLivePreviewField)) { + return view.Decoration.replace({ + widget, + side: -1, + }).range(from, to); + } + return view.Decoration.widget({ + widget, + side: -1, + }).range(to); + }), true); +}; + +const buildIconPlugin = (plugin) => { + return view.ViewPlugin.fromClass(class IconPlugin { + constructor(view) { + this.plugin = plugin; + this.decorations = buildDecorations(view, plugin); + } + update(update) { + this.decorations = buildDecorations(update.view, this.plugin); + } + }, { + decorations: (v) => v.decorations, + provide: (plugin) => view.EditorView.atomicRanges.of((view$1) => { + const value = view$1.plugin(plugin); + return value ? value.decorations : view.Decoration.none; + }), + }); +}; + +class IconPosition extends state.RangeValue { + constructor(text) { + super(); + this.text = text; + } + get iconId() { + return this.text; + } + eq(other) { + return other instanceof IconPosition && other.text === this.text; + } +} +/** + * Builds a position field for the editor state. This field will track the + * positions of the icons in the document. + **/ +const buildPositionField = () => { + /** + * Checks the ranges of the icons in the document. If the range is not + * excluded, the range is added to the range set. If the range is excluded, + * the range is removed from the range set. + * @param state EditorState to get the ranges from. + * @param excludeFrom Number to exclude from the ranges. + * @param excludeTo Number to exclude to the ranges. + * @param updateRange Function callback to update the range. + */ + const checkRanges = (state, excludeFrom, excludeTo, updateRange) => { + const text = state.doc.sliceString(0, state.doc.length); + for (const { 0: rawCode, index: offset } of text.matchAll(/(:)((\w{1,64}:\d{17,18})|(\w{1,64}))(:)/g)) { + const iconName = rawCode.substring(1, rawCode.length - 1); + if (!icon.getIconByName(iconName)) { + continue; + } + const from = offset; + const to = offset + rawCode.length; + if (!isNodeInRangeAccepted(state, from, to)) { + continue; + } + if (offset < excludeFrom || offset > excludeTo) { + updateRange(from, to, new IconPosition(iconName), false); + continue; + } + updateRange(from, to, new IconPosition(iconName), true); + } + }; + const isNodeInRangeAccepted = (state, from, to) => { + let isRangeAccepted = true; + language.syntaxTree(state).iterate({ + from, + to, + enter: ({ type }) => { + var _a; + if (type.name === 'Document') { + return; + } + const allowedNodeTypes = [ + 'header', + 'strong', + 'em', + 'quote', + 'link', + 'list-1', + 'list-2', + 'list-3', + 'highlight', + 'footref', + 'comment', + 'link-alias', + ]; + const excludedNodeTypes = [ + 'formatting', + 'hmd-codeblock', + 'inline-code', + 'hr', + ]; + const nodeProps = (_a = type.prop(language.tokenClassNodeProp)) !== null && _a !== void 0 ? _a : ''; + const s = new Set(nodeProps.split(' ')); + if (excludedNodeTypes.some((t) => s.has(t)) && + allowedNodeTypes.every((t) => !s.has(t))) { + isRangeAccepted = false; + } + }, + }); + return isRangeAccepted; + }; + return state.StateField.define({ + create: (state$1) => { + const rangeSet = new state.RangeSetBuilder(); + // Check all the ranges of the icons in the entire document. There is no + // exclusion going on here. + checkRanges(state$1, -1, -1, rangeSet.add.bind(rangeSet)); + return rangeSet.finish(); + }, + update: (rangeSet, transaction) => { + const newRanges = []; + if (!transaction.docChanged) { + if (transaction.selection) { + const from = transaction.selection.ranges[0].from; + const to = transaction.selection.ranges[0].to; + const lineEnd = transaction.state.doc.lineAt(to).length; + const lineStart = transaction.state.doc.lineAt(from).from; + // Checks the ranges of the icons in the document except for the + // excluded line start and end. + checkRanges(transaction.state, lineStart, lineStart + lineEnd, (from, to, value, removed) => { + rangeSet = rangeSet.update({ + filterFrom: from, + filterTo: to, + filter: () => false, + }); + if (!removed) { + newRanges.push(value.range(from, to)); + } + }); + } + rangeSet = rangeSet.update({ add: newRanges }); + return rangeSet; + } + rangeSet = rangeSet.map(transaction.changes); + const changedLines = []; + transaction.changes.iterChangedRanges((_f, _t, from, to) => { + changedLines.push([ + transaction.state.doc.lineAt(from).number, + transaction.state.doc.lineAt(to).number, + ]); + }); + for (const [_, end] of changedLines) { + const lineEnd = transaction.state.doc.line(end).length; + const lineStart = transaction.state.doc.line(end).from; + // Checks the ranges of the icons in the document except for the excluded + // line start and end. + checkRanges(transaction.state, lineStart, lineStart + lineEnd, (from, to, value, removed) => { + rangeSet = rangeSet.update({ + filterFrom: from, + filterTo: to, + filter: () => false, + }); + if (!removed) { + newRanges.push(value.range(from, to)); + } + }); + } + rangeSet = rangeSet.update({ add: newRanges }); + return rangeSet; + }, + }); +}; + +const processMarkdown = (element) => { + // Ignore if codeblock + const codeElement = element.querySelector('pre > code'); + if (codeElement) { + return; + } + const iconShortcodes = Array.from(element.innerHTML.matchAll(/(:)((\w{1,64}:\d{17,18})|(\w{1,64}))(:)/g)); + for (let index = 0; index < iconShortcodes.length; index++) { + const shortcode = iconShortcodes[index][0]; + const iconName = shortcode.slice(1, shortcode.length - 1); + // Find icon and process it if exists + const iconObject = icon.getIconByName(iconName); + if (iconObject) { + const tagName = element.firstElementChild.tagName.toLowerCase(); + let fontSize = calculateFontTextSize(); + if (isHeader(tagName)) { + fontSize = calculateHeaderSize(tagName); + const svgElement = svg.setFontSize(iconObject.svgElement, fontSize); + // Replace first element (DIV html content) with svg element + element.firstElementChild.innerHTML = + element.firstElementChild.innerHTML.replace(shortcode, svgElement); + } + else { + const svgElement = svg.setFontSize(iconObject.svgElement, fontSize); + // Replace shortcode by svg element + element.innerHTML = element.innerHTML.replace(shortcode, svgElement); + } + } + } +}; + +class IconFolderPlugin extends obsidian.Plugin { + constructor() { + super(...arguments); + this.registeredFileExplorers = new Set(); + this.modifiedInternalPlugins = []; + this.positionField = buildPositionField(); + } + onload() { + return __awaiter(this, void 0, void 0, function* () { + console.log(`loading ${config.PLUGIN_NAME}`); + // Registers all modified internal plugins. + // Only adds star plugin for obsidian under v0.12.6. + if (!obsidian.requireApiVersion('0.12.6')) { + this.modifiedInternalPlugins.push(new StarredInternalPlugin(this)); + } + else if (obsidian.requireApiVersion('1.2.0')) { + this.modifiedInternalPlugins.push(new BookmarkInternalPlugin(this)); + } + yield this.loadIconFolderData(); + setPath(this.getSettings().iconPacksPath); + yield createDefaultDirectory(this); + yield this.checkRecentlyUsedIcons(); + yield migrate(this); + const usedIconNames = icon.getAllWithPath(this).map((value) => value.icon); + yield loadUsedIcons(this, usedIconNames); + this.app.workspace.onLayoutReady(() => this.handleChangeLayout()); + this.registerEvent(this.app.workspace.on('layout-change', () => this.handleChangeLayout())); + this.registerEvent(this.app.workspace.on('file-menu', (menu, file) => { + const addIconMenuItem = (item) => { + item.setTitle('Change icon'); + item.setIcon('hashtag'); + item.onClick(() => { + const modal = new IconsPickerModal(this.app, this, file.path); + modal.open(); + modal.onSelect = (iconName) => { + IconCache.getInstance().set(file.path, { + iconNameWithPrefix: iconName, + }); + // Update icon in tab when setting is enabled. + if (this.getSettings().iconInTabsEnabled) { + const tabLeaves = iconTabs.getTabLeavesOfFilePath(this, file.path); + for (const tabLeaf of tabLeaves) { + iconTabs.update(this, iconName, tabLeaf.tabHeaderInnerIconEl); + } + } + // Update icon in title when setting is enabled. + if (this.getSettings().iconInTitleEnabled) { + this.addIconInTitle(iconName); + } + }; + }); + }; + const removeIconMenuItem = (item) => { + item.setTitle('Remove icon'); + item.setIcon('trash'); + item.onClick(() => __awaiter(this, void 0, void 0, function* () { + yield this.removeSingleIcon(file); + })); + }; + menu.addItem(addIconMenuItem); + const filePathData = this.getData()[file.path]; + const inheritanceFolderHasIcon = typeof filePathData === 'object' && + filePathData.iconName !== null; + // Only add remove icon menu item when the file path exists in the data. + // We do not want to show this menu item for e.g. inheritance or custom rules. + if (filePathData && + (typeof filePathData === 'string' || inheritanceFolderHasIcon)) { + menu.addItem(removeIconMenuItem); + } + const inheritIcon = (item) => { + const iconData = this.data[file.path]; + if (typeof iconData === 'object') { + item.setTitle('Remove inherit icon'); + item.onClick(() => { + inheritance.remove(this, file.path, { + onRemove: (file) => { + // Removes the icons from the file tabs inside of the inheritance. + if (this.getSettings().iconInTabsEnabled) { + const tabLeaves = iconTabs.getTabLeavesOfFilePath(this, file.path); + for (const tabLeaf of tabLeaves) { + iconTabs.remove(tabLeaf.tabHeaderInnerIconEl, { + replaceWithDefaultIcon: true, + }); + } + } + }, + }); + this.saveInheritanceData(file.path, null); + if (!emoji.isEmoji(iconData.inheritanceIcon)) { + removeIconFromIconPack(this, iconData.inheritanceIcon); + } + }); + } + else { + item.setTitle('Inherit icon'); + item.onClick(() => { + const modal = new IconsPickerModal(this.app, this, file.path); + modal.open(); + // manipulate `onChooseItem` method to get custom functionality for inheriting icons + modal.onChooseItem = (icon) => { + this.saveInheritanceData(file.path, icon); + const iconName = typeof icon === 'string' ? icon : icon.displayName; + if (!emoji.isEmoji(iconName)) { + saveIconToIconPack(this, iconName); + } + inheritance.add(this, file.path, iconName, { + onAdd: (file) => { + if (this.getSettings().iconInTabsEnabled) { + const tabLeaves = iconTabs.getTabLeavesOfFilePath(this, file.path); + for (const tabLeaf of tabLeaves) { + iconTabs.add(this, file, tabLeaf.tabHeaderInnerIconEl, { + iconName, + }); + } + } + }, + }); + }; + }); + } + item.setIcon('vertical-three-dots'); + }; + menu.addItem(inheritIcon); + })); + // deleting event + this.registerEvent(this.app.vault.on('delete', (file) => { + const path = file.path; + this.removeFolderIcon(path); + })); + // renaming event + this.registerEvent(this.app.vault.on('rename', (file, oldPath) => { + // Check if the file was moved and had an icon before. + const dataPoint = this.data[oldPath]; + if (dataPoint && oldPath !== 'settings') { + const iconNameWithPrefix = typeof dataPoint === 'object' + ? dataPoint.iconName + : dataPoint; + dom.createIconNode(this, file.path, iconNameWithPrefix); + } + this.renameFolder(file.path, oldPath); + })); + if (this.getSettings().iconsInNotesEnabled) { + this.registerMarkdownPostProcessor(processMarkdown); + this.registerEditorSuggest(new SuggestionIcon(this.app, this)); + this.registerEditorExtension([this.positionField, buildIconPlugin(this)]); + } + this.addSettingTab(new IconFolderSettings(this.app, this)); + }); + } + isSomeEmojiStyleActive() { + return this.getSettings().emojiStyle !== 'none'; + } + notifyPlugins() { + this.modifiedInternalPlugins.forEach((internalPlugin) => { + if (internalPlugin.enabled) { + internalPlugin.onMount(); + } + }); + } + removeSingleIcon(file) { + return __awaiter(this, void 0, void 0, function* () { + this.removeFolderIcon(file.path); + dom.removeIconInPath(file.path); + IconCache.getInstance().invalidate(file.path); + this.notifyPlugins(); + let didUpdate = false; + // Check for possible inheritance and add the icon if an inheritance exists. + if (inheritance.doesExistInPath(this, file.path)) { + const folderPath = inheritance.getFolderPathByFilePath(this, file.path); + const folderInheritance = inheritance.getByPath(this, file.path); + const iconName = folderInheritance.inheritanceIcon; + didUpdate = true; + inheritance.add(this, folderPath, iconName, { + file, + onAdd: (file) => { + // Update icon in tab when setting is enabled. + if (this.getSettings().iconInTabsEnabled) { + const tabLeaves = iconTabs.getTabLeavesOfFilePath(this, file.path); + for (const tabLeaf of tabLeaves) { + iconTabs.add(this, file, tabLeaf.tabHeaderInnerIconEl, { + iconName, + }); + } + } + // Update icon in title when setting is enabled. + if (this.getSettings().iconInTitleEnabled) { + this.addIconInTitle(iconName); + } + }, + }); + } + // Refreshes the icon tab and title icon for custom rules. + for (const rule of customRule.getSortedRules(this)) { + const applicable = yield customRule.isApplicable(this, rule, file); + if (applicable) { + customRule.add(this, rule, file); + this.addIconInTitle(rule.icon); + const tabLeaves = iconTabs.getTabLeavesOfFilePath(this, file.path); + for (const tabLeaf of tabLeaves) { + iconTabs.add(this, file, tabLeaf.tabHeaderInnerIconEl, { + iconName: rule.icon, + }); + } + didUpdate = true; + break; + } + } + // Only remove icon above titles and icon in tabs if no inheritance or custom rule was found. + if (!didUpdate) { + // Refreshes icons above title and icons in tabs. + for (const openedFile of getAllOpenedFiles(this)) { + if (this.getSettings().iconInTitleEnabled) { + titleIcon.remove(openedFile.leaf.view.inlineTitleEl); + } + if (this.getSettings().iconInTabsEnabled) { + const leaf = openedFile.leaf; + iconTabs.remove(leaf.tabHeaderInnerIconEl, { + replaceWithDefaultIcon: true, + }); + } + } + } + }); + } + handleChangeLayout() { + // Transform data that are objects to single strings. + const data = Object.entries(this.data); + this.modifiedInternalPlugins.forEach((internalPlugin) => { + if (internalPlugin.enabled) { + internalPlugin.onMount(); + internalPlugin.register(); + } + }); + icon.addAll(this, data, this.registeredFileExplorers, () => { + // After initialization of the icon packs, checks the vault for missing icons and + // adds them. + initIconPacks(this).then(() => __awaiter(this, void 0, void 0, function* () { + if (this.getSettings().iconsBackgroundCheckEnabled) { + const data = Object.entries(this.data); + yield icon.checkMissingIcons(this, data); + resetPreloadedIcons(); + } + })); + // Adds the title icon to the active leaf view. + if (this.getSettings().iconInTitleEnabled) { + for (const openedFile of getAllOpenedFiles(this)) { + const iconName = icon.getByPath(this, openedFile.path); + const activeView = openedFile.leaf.view; + if (activeView instanceof obsidian.MarkdownView && iconName) { + let possibleIcon = iconName; + if (!emoji.isEmoji(iconName)) { + const iconNextIdentifier = nextIdentifier(iconName); + possibleIcon = getSvgFromLoadedIcon(iconName.substring(0, iconNextIdentifier), iconName.substring(iconNextIdentifier)); + } + if (possibleIcon) { + titleIcon.add(activeView.inlineTitleEl, possibleIcon, { + fontSize: calculateInlineTitleSize(), + }); + } + } + } + } + // Register rename event for adding icons with custom rules to the DOM and updating + // inheritance when file was moved to another directory. + this.registerEvent(this.app.vault.on('rename', (file, oldPath) => __awaiter(this, void 0, void 0, function* () { + const inheritanceExists = inheritance.doesExistInPath(this, oldPath); + if (inheritanceExists) { + // Apply inheritance to the renamed file. + const isFolder = file.children !== undefined; + if (!isFolder) { + const folderPath = inheritance.getFolderPathByFilePath(this, file.path); + const folderInheritance = inheritance.getByPath(this, file.path); + const iconName = folderInheritance.inheritanceIcon; + dom.removeIconInPath(file.path); + inheritance.add(this, folderPath, iconName, { + file, + onAdd: (file) => { + if (this.getSettings().iconInTabsEnabled) { + const tabLeaves = iconTabs.getTabLeavesOfFilePath(this, file.path); + for (const tabLeaf of tabLeaves) { + iconTabs.add(this, file, tabLeaf.tabHeaderInnerIconEl, { + iconName, + }); + } + } + }, + }); + } + } + else { + const sortedRules = customRule.getSortedRules(this); + // Removes possible icons from the renamed file. + sortedRules.forEach((rule) => { + if (customRule.doesMatchPath(rule, oldPath)) { + dom.removeIconInPath(file.path); + } + }); + // Adds possible icons to the renamed file. + sortedRules.forEach((rule) => { + if (customRule.doesMatchPath(rule, oldPath)) { + return; + } + customRule.add(this, rule, file, undefined); + }); + // Updates icon tabs for the renamed file. + for (const rule of customRule.getSortedRules(this)) { + const applicable = yield customRule.isApplicable(this, rule, file); + if (!applicable) { + continue; + } + const openedFiles = getAllOpenedFiles(this); + const openedFile = openedFiles.find((openedFile) => openedFile.path === file.path); + if (openedFile) { + const leaf = openedFile.leaf; + iconTabs.update(this, rule.icon, leaf.tabHeaderInnerIconEl); + } + break; + } + } + }))); + // Register create event for checking inheritance functionality. + this.registerEvent(this.app.vault.on('create', (file) => { + const inheritanceFolders = Object.entries(this.data).filter(([k, v]) => k !== 'settings' && typeof v === 'object'); + const isFolder = file.children !== undefined; + if (!file.parent || file.parent.path === '/' || isFolder) + return; + inheritanceFolders.forEach(([path, obj]) => { + inheritance.add(this, path, obj.inheritanceIcon, { + file, + onAdd: (file) => { + if (this.getSettings().iconInTabsEnabled) { + const tabLeaves = iconTabs.getTabLeavesOfFilePath(this, file.path); + for (const tabLeaf of tabLeaves) { + iconTabs.add(this, file, tabLeaf.tabHeaderInnerIconEl, { + iconName: obj.inheritanceIcon, + }); + } + } + }, + }); + }); + })); + // Register `layout-change` event for adding icons to tabs when moving a pane or + // enabling reading mode. + this.registerEvent(this.app.workspace.on('layout-change', () => { + var _a, _b; + if (this.getSettings().iconInTitleEnabled) { + const activeView = this.app.workspace.getActiveViewOfType(obsidian.MarkdownView); + if (activeView) { + const file = activeView.file; + const view = activeView.leaf.view.currentMode + .view; + const iconNameWithPrefix = icon.getByPath(this, file.path); + if (!iconNameWithPrefix) { + titleIcon.hide(view.inlineTitleEl); + return; + } + let foundIcon = iconNameWithPrefix; + if (!emoji.isEmoji(foundIcon)) { + foundIcon = (_a = icon.getIconByName(iconNameWithPrefix)) === null || _a === void 0 ? void 0 : _a.svgElement; + // Check for preloaded icons if no icon was found when the start up was faster + // than the loading of the icons. + if (!foundIcon && getPreloadedIcons().length > 0) { + foundIcon = (_b = getPreloadedIcons().find((icon) => icon.prefix + icon.name === iconNameWithPrefix)) === null || _b === void 0 ? void 0 : _b.svgElement; + } + } + if (foundIcon) { + // Removes the node because the editor markdown content is being rerendered + // when the content mode changes back to editing. + titleIcon.remove(view.inlineTitleEl); + titleIcon.add(view.inlineTitleEl, foundIcon, { + fontSize: calculateInlineTitleSize(), + }); + } + } + } + if (!this.getSettings().iconInTabsEnabled) { + return; + } + for (const openedFile of getAllOpenedFiles(this)) { + const leaf = openedFile.leaf; + iconTabs.add(this, openedFile, leaf.tabHeaderInnerIconEl); + } + })); + // Register `file-open` event for adding icon to title. + this.registerEvent(this.app.workspace.on('file-open', (file) => { + var _a, _b; + if (!this.getSettings().iconInTitleEnabled) { + return; + } + for (const openedFile of getAllOpenedFiles(this)) { + if (openedFile.path !== file.path) { + continue; + } + const leaf = openedFile.leaf.view; + const iconNameWithPrefix = icon.getByPath(this, file.path); + if (!iconNameWithPrefix) { + titleIcon.hide(leaf.inlineTitleEl); + return; + } + let foundIcon = iconNameWithPrefix; + if (!emoji.isEmoji(foundIcon)) { + foundIcon = (_a = icon.getIconByName(iconNameWithPrefix)) === null || _a === void 0 ? void 0 : _a.svgElement; + // Check for preloaded icons if no icon was found when the start up was faster + // than the loading of the icons. + if (!foundIcon && getPreloadedIcons().length > 0) { + foundIcon = (_b = getPreloadedIcons().find((icon) => icon.prefix + icon.name === iconNameWithPrefix)) === null || _b === void 0 ? void 0 : _b.svgElement; + } + } + if (foundIcon) { + titleIcon.add(leaf.inlineTitleEl, foundIcon, { + fontSize: calculateInlineTitleSize(), + }); + } + else { + titleIcon.hide(leaf.inlineTitleEl); + } + } + })); + // Register event for frontmatter icon registration. + this.registerEvent(this.app.metadataCache.on('resolve', (file) => __awaiter(this, void 0, void 0, function* () { + if (!this.getSettings().iconInFrontmatterEnabled) { + return; + } + const fileCache = this.app.metadataCache.getFileCache(file); + if (fileCache === null || fileCache === void 0 ? void 0 : fileCache.frontmatter) { + const { icon: newIconName } = fileCache.frontmatter; + // If `icon` property is empty, we will remove it from the data and remove the icon. + if (!newIconName) { + yield this.removeSingleIcon(file); + return; + } + if (typeof newIconName !== 'string') { + new obsidian.Notice(`[${config.PLUGIN_NAME}] Frontmatter property type \`icon\` has to be of type \`text\`.`); + return; + } + const cachedIcon = IconCache.getInstance().get(file.path); + if (newIconName === (cachedIcon === null || cachedIcon === void 0 ? void 0 : cachedIcon.iconNameWithPrefix)) { + return; + } + try { + if (!emoji.isEmoji(newIconName)) { + saveIconToIconPack(this, newIconName); + } + } + catch (e) { + console.error(e); + new obsidian.Notice(e.message); + return; + } + dom.createIconNode(this, file.path, newIconName); + this.addFolderIcon(file.path, newIconName); + IconCache.getInstance().set(file.path, { + iconNameWithPrefix: newIconName, + }); + // Update icon in tab when setting is enabled. + if (this.getSettings().iconInTabsEnabled) { + const tabLeaves = iconTabs.getTabLeavesOfFilePath(this, file.path); + for (const tabLeaf of tabLeaves) { + iconTabs.update(this, newIconName, tabLeaf.tabHeaderInnerIconEl); + } + } + // Update icon in title when setting is enabled. + if (this.getSettings().iconInTitleEnabled) { + this.addIconInTitle(newIconName); + } + } + }))); + // Register active leaf change event for adding icon of file to tab. + this.registerEvent(this.app.workspace.on('active-leaf-change', (leaf) => { + if (!this.getSettings().iconInTabsEnabled) { + return; + } + // TODO: Maybe change in the future to a more optimal solution. + // Fixes a problem when the file was clicked twice in the same tab. + // See https://github.com/FlorianWoelki/obsidian-iconize/issues/208. + if (leaf.view.getViewType() === 'file-explorer') { + for (const openedFile of getAllOpenedFiles(this)) { + const leaf = openedFile.leaf; + iconTabs.add(this, openedFile, leaf.tabHeaderInnerIconEl); + } + return; + } + if (leaf.view.getViewType() !== 'markdown') { + return; + } + const tabHeaderLeaf = leaf; + if (tabHeaderLeaf.view.file) { + iconTabs.add(this, tabHeaderLeaf.view.file, tabHeaderLeaf.tabHeaderInnerIconEl); + } + })); + this.registerEvent(this.app.workspace.on('css-change', () => { + for (const openedFile of getAllOpenedFiles(this)) { + const activeView = openedFile.leaf.view; + if (activeView instanceof obsidian.MarkdownView) { + titleIcon.updateStyle(activeView.inlineTitleEl, { + fontSize: calculateInlineTitleSize(), + }); + } + } + })); + }); + } + addIconInTitle(iconName) { + var _a; + for (const openedFile of getAllOpenedFiles(this)) { + const activeView = openedFile.leaf.view; + if (activeView instanceof obsidian.MarkdownView) { + let possibleIcon = iconName; + if (!emoji.isEmoji(iconName)) { + possibleIcon = (_a = icon.getIconByName(iconName)) === null || _a === void 0 ? void 0 : _a.svgElement; + } + if (possibleIcon) { + titleIcon.add(activeView.inlineTitleEl, possibleIcon, { + fontSize: calculateInlineTitleSize(), + }); + } + } + } + } + saveInheritanceData(folderPath, icon) { + const currentValue = this.data[folderPath]; + // if icon is null, it will remove the inheritance icon from the data + if (icon === null && currentValue && typeof currentValue === 'object') { + const folderObject = currentValue; + if (folderObject.iconName) { + this.data[folderPath] = getNormalizedName(folderObject.iconName); + } + else { + delete this.data[folderPath]; + } + } + // icon is not null, so it will add inheritance data + else { + // check if data already exists + if (currentValue) { + // check if current value is already an icon name + if (typeof currentValue === 'string') { + this.data[folderPath] = { + iconName: currentValue, + inheritanceIcon: getNormalizedName(typeof icon === 'object' ? icon.displayName : icon), + }; + } + // check if it has already a inheritance icon + else if (folderPath !== 'settings') { + this.data[folderPath] = Object.assign(Object.assign({}, currentValue), { inheritanceIcon: getNormalizedName(typeof icon === 'object' ? icon.displayName : icon) }); + } + } + else { + this.data[folderPath] = { + iconName: null, + inheritanceIcon: getNormalizedName(typeof icon === 'object' ? icon.displayName : icon), + }; + } + } + this.saveIconFolderData(); + } + onunload() { + console.log('unloading obsidian-icon-folder'); + } + renameFolder(newPath, oldPath) { + if (!this.data[oldPath] || newPath === oldPath) { + return; + } + Object.defineProperty(this.data, newPath, Object.getOwnPropertyDescriptor(this.data, oldPath)); + delete this.data[oldPath]; + this.saveIconFolderData(); + } + removeFolderIcon(path) { + if (!this.data[path]) { + return; + } + // Saves the icon name with prefix to remove it from the icon pack directory later. + const iconData = this.data[path]; + if (typeof this.data[path] === 'object') { + const currentValue = this.data[path]; + this.data[path] = Object.assign(Object.assign({}, currentValue), { iconName: null }); + } + else { + delete this.data[path]; + } + // Removes the icon from the icon pack directory if it is not used as an icon somewhere + // else. + if (iconData) { + let iconNameWithPrefix = iconData; + if (typeof iconData === 'object') { + iconNameWithPrefix = iconData.iconName; + } + else { + iconNameWithPrefix = iconData; + } + if (!emoji.isEmoji(iconNameWithPrefix)) { + removeIconFromIconPack(this, iconNameWithPrefix); + } + } + //this.addIconsToSearch(); + this.saveIconFolderData(); + } + addFolderIcon(path, icon) { + const iconName = getNormalizedName(typeof icon === 'object' ? icon.displayName : icon); + // Check if inheritance is active for this path. + if (typeof this.data[path] === 'object') { + const currentValue = this.data[path]; + this.data[path] = Object.assign(Object.assign({}, currentValue), { iconName }); + } + else { + this.data[path] = iconName; + } + // Update recently used icons. + if (!this.getSettings().recentlyUsedIcons.includes(iconName)) { + if (this.getSettings().recentlyUsedIcons.length >= + this.getSettings().recentlyUsedIconsSize) { + this.getSettings().recentlyUsedIcons = + this.getSettings().recentlyUsedIcons.slice(0, this.getSettings().recentlyUsedIconsSize - 1); + } + this.getSettings().recentlyUsedIcons.unshift(iconName); + this.checkRecentlyUsedIcons(); + } + //this.addIconsToSearch(); + this.saveIconFolderData(); + } + getSettings() { + return this.data.settings; + } + loadIconFolderData() { + return __awaiter(this, void 0, void 0, function* () { + const data = yield this.loadData(); + if (data) { + Object.entries(DEFAULT_SETTINGS).forEach(([k, v]) => { + if (data.settings[k] === undefined) { + data.settings[k] = v; + } + }); + } + this.data = Object.assign({ settings: Object.assign({}, DEFAULT_SETTINGS) }, {}, data); + }); + } + saveIconFolderData() { + return __awaiter(this, void 0, void 0, function* () { + yield this.saveData(this.data); + }); + } + checkRecentlyUsedIcons() { + return __awaiter(this, void 0, void 0, function* () { + if (this.getSettings().recentlyUsedIcons.length > + this.getSettings().recentlyUsedIconsSize) { + this.getSettings().recentlyUsedIcons = + this.getSettings().recentlyUsedIcons.slice(0, this.getSettings().recentlyUsedIconsSize); + yield this.saveIconFolderData(); + } + }); + } + getData() { + return this.data; + } + getIconNameFromPath(path) { + if (typeof this.getData()[path] === 'object') { + return this.getData()[path].iconName; + } + return this.getData()[path]; + } + getRegisteredFileExplorers() { + return this.registeredFileExplorers; + } + /** + * Returns a possible data path by the given value. This function checks for direct icon, + * inheritance icon and custom rules. + * @param value String that will be used to find the data path. + * @returns String that is the data path or `undefined` if no data path was found. + */ + getDataPathByValue(value) { + return Object.entries(this.data).find(([k, v]) => { + if (typeof v === 'string') { + if (value === v) { + return k; + } + } + else if (typeof v === 'object') { + // Check for custom rules. + if (k === 'settings') { + // `rules` are defined in the settings object. + const rules = v.rules; + return rules.find((rule) => rule.icon === value); + } + // Check for inheritance icons. + v = v; + if (value === v.iconName || value === v.inheritanceIcon) { + return k; + } + } + }); + } +} + +module.exports = IconFolderPlugin; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzLy5wbnBtL0Byb2xsdXArcGx1Z2luLXR5cGVzY3JpcHRAMTEuMS41X3JvbGx1cEAyLjc5LjFfdHNsaWJAMi42LjJfdHlwZXNjcmlwdEA1LjIuMi9ub2RlX21vZHVsZXMvdHNsaWIvdHNsaWIuZXM2LmpzIiwic3JjL2xpYi91dGlsL3N2Zy50cyIsIm5vZGVfbW9kdWxlcy8ucG5wbS9qc3ppcEAzLjEwLjEvbm9kZV9tb2R1bGVzL2pzemlwL2Rpc3QvanN6aXAubWluLmpzIiwic3JjL3ppcC11dGlsLnRzIiwic3JjL2NvbmZpZy9pbmRleC50cyIsInNyYy9pY29uLXBhY2tzLnRzIiwic3JjL2ljb24tcGFjay1tYW5hZ2VyLnRzIiwibm9kZV9tb2R1bGVzLy5wbnBtL3R3ZW1vamlAMTQuMC4yL25vZGVfbW9kdWxlcy90d2Vtb2ppL2Rpc3QvdHdlbW9qaS5lc20uanMiLCJzcmMvZW1vamkudHMiLCJzcmMvdXRpbC50cyIsInNyYy9saWIvdXRpbC9zdHlsZS50cyIsInNyYy9saWIvdXRpbC9kb20udHMiLCJzcmMvdWkvaWNvbnMtcGlja2VyLW1vZGFsLnRzIiwic3JjL3NldHRpbmdzL2RhdGEudHMiLCJzcmMvbWlncmF0aW9ucy8wMDAxLWNoYW5nZS1taWdyYXRlZC10cnVlLXRvLTEudHMiLCJzcmMvbWlncmF0aW9ucy8wMDAyLW9yZGVyLWN1c3RvbS1ydWxlcy50cyIsInNyYy9taWdyYXRpb25zL2luZGV4LnRzIiwic3JjL3NldHRpbmdzL3VpL2ljb25Gb2xkZXJTZXR0aW5nLnRzIiwic3JjL3NldHRpbmdzL3VpL2N1c3RvbUljb25QYWNrLnRzIiwic3JjL2xpYi9pY29uLWNhY2hlLnRzIiwic3JjL2xpYi9jdXN0b20tcnVsZS50cyIsInNyYy9saWIvaWNvbi10YWJzLnRzIiwic3JjL3NldHRpbmdzL3VpL2N1c3RvbUljb25SdWxlLnRzIiwic3JjL2xpYi9pbmhlcml0YW5jZS50cyIsInNyYy9zZXR0aW5ncy91aS9lbW9qaVN0eWxlLnRzIiwic3JjL3NldHRpbmdzL2hlbHBlci50cyIsInNyYy9zZXR0aW5ncy91aS9leHRyYU1hcmdpbi50cyIsInNyYy9zZXR0aW5ncy91aS9pY29uQ29sb3IudHMiLCJzcmMvc2V0dGluZ3MvdWkvaWNvbkZvbnRTaXplLnRzIiwic3JjL3NldHRpbmdzL3VpL2ljb25QYWNrc1BhdGgudHMiLCJzcmMvc2V0dGluZ3MvdWkvaWNvblBhY2tzQmFja2dyb3VuZENoZWNrZXIudHMiLCJzcmMvdWkvaWNvbi1wYWNrLWJyb3dzZXItbW9kYWwudHMiLCJzcmMvc2V0dGluZ3MvdWkvcHJlZGVmaW5lZEljb25QYWNrcy50cyIsInNyYy9zZXR0aW5ncy91aS9yZWNlbnRseVVzZWRJY29ucy50cyIsInNyYy9zZXR0aW5ncy91aS90b2dnbGVJY29uSW5UYWJzLnRzIiwic3JjL2xpYi91dGlsL3RleHQudHMiLCJzcmMvbGliL2ljb24udHMiLCJzcmMvbGliL2ljb24tdGl0bGUudHMiLCJzcmMvc2V0dGluZ3MvdWkvdG9nZ2xlSWNvbkluVGl0bGUudHMiLCJzcmMvc2V0dGluZ3MvdWkvdG9nZ2xlRnJvbnRtYXR0ZXJJY29uLnRzIiwic3JjL3NldHRpbmdzL3VpL3RvZ2dsZUljb25zSW5Ob3Rlcy50cyIsInNyYy9zZXR0aW5ncy91aS9pbmRleC50cyIsIm5vZGVfbW9kdWxlcy8ucG5wbS9tb25rZXktYXJvdW5kQDIuMy4wL25vZGVfbW9kdWxlcy9tb25rZXktYXJvdW5kL21qcy9pbmRleC5qcyIsInNyYy9AdHlwZXMvaW50ZXJuYWwtcGx1Z2luLWluamVjdG9yLnRzIiwic3JjL2ludGVybmFsLXBsdWdpbnMvc3RhcnJlZC50cyIsInNyYy9pbnRlcm5hbC1wbHVnaW5zL2Jvb2ttYXJrLnRzIiwic3JjL2VkaXRvci9pY29ucy1zdWdnZXN0aW9uLnRzIiwic3JjL2VkaXRvci9saXZlLXByZXZpZXcvd2lkZ2V0LnRzIiwic3JjL2VkaXRvci9saXZlLXByZXZpZXcvZGVjb3JhdGlvbnMudHMiLCJzcmMvZWRpdG9yL2xpdmUtcHJldmlldy9pbmRleC50cyIsInNyYy9lZGl0b3IvbGl2ZS1wcmV2aWV3L3N0YXRlLnRzIiwic3JjL2VkaXRvci9tYXJrZG93bi1wcm9jZXNzb3IudHMiLCJzcmMvbWFpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6bnVsbCwibmFtZXMiOlsicmVxdWlyZSIsImdsb2JhbCIsInJlcXVlc3RVcmwiLCJsb2FkQXN5bmMiLCJpY29uUGFja3MiLCJOb3RpY2UiLCJGdXp6eVN1Z2dlc3RNb2RhbCIsIm1pZ3JhdGUiLCJtaWdyYXRlMDAwMSIsIm1pZ3JhdGUwMDAyIiwiU2V0dGluZyIsImFkZCIsInJlbW92ZSIsIk1vZGFsIiwiVGV4dENvbXBvbmVudCIsIlRvZ2dsZUNvbXBvbmVudCIsIkJ1dHRvbkNvbXBvbmVudCIsIkNvbG9yQ29tcG9uZW50IiwiZ2V0QnlQYXRoIiwiRHJvcGRvd25Db21wb25lbnQiLCJTbGlkZXJDb21wb25lbnQiLCJNYXJrZG93blZpZXciLCJQbHVnaW5TZXR0aW5nVGFiIiwiVG9nZ2xlSWNvbnNJbk5vdGVzIiwiRWRpdG9yU3VnZ2VzdCIsIldpZGdldFR5cGUiLCJ2aWV3IiwiRGVjb3JhdGlvbiIsImVkaXRvckxpdmVQcmV2aWV3RmllbGQiLCJWaWV3UGx1Z2luIiwiRWRpdG9yVmlldyIsIlJhbmdlVmFsdWUiLCJzeW50YXhUcmVlIiwidG9rZW5DbGFzc05vZGVQcm9wIiwiU3RhdGVGaWVsZCIsInN0YXRlIiwiUmFuZ2VTZXRCdWlsZGVyIiwiUGx1Z2luIiwicmVxdWlyZUFwaVZlcnNpb24iLCJJY29uRm9sZGVyU2V0dGluZ3NVSSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQW9HQTtBQUNPLFNBQVMsU0FBUyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRTtBQUM3RCxJQUFJLFNBQVMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sS0FBSyxZQUFZLENBQUMsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsVUFBVSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtBQUNoSCxJQUFJLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQyxFQUFFLFVBQVUsT0FBTyxFQUFFLE1BQU0sRUFBRTtBQUMvRCxRQUFRLFNBQVMsU0FBUyxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7QUFDbkcsUUFBUSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7QUFDdEcsUUFBUSxTQUFTLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUU7QUFDdEgsUUFBUSxJQUFJLENBQUMsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsVUFBVSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDOUUsS0FBSyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBZ01EO0FBQ3VCLE9BQU8sZUFBZSxLQUFLLFVBQVUsR0FBRyxlQUFl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Q0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU9BLGVBQU8sRUFBRUEsZUFBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLG1FQUFtRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsS0FBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLFVBQVUsRUFBRSxXQUFXLEVBQUUsT0FBTyxXQUFXLEVBQUUsV0FBVyxFQUFFLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMseUJBQXlCLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLHNDQUFzQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUMsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0dBQWdHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLGdCQUFnQixFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0NBQWtDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMseUJBQXlCLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxPQUFPLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLENBQUMsQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG1DQUFtQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsNEVBQTRFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyw0RUFBNEUsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxHQUFHLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLG1DQUFtQyxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLHdCQUF3QixDQUFDLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUMsb0JBQW9CLENBQUMsVUFBVSxFQUFFLENBQUMscUJBQXFCLENBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQywrQkFBK0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLDJCQUEyQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLFFBQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsY0FBYyxHQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQ0FBcUMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxZQUFZLENBQUMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsa0NBQWtDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLHFDQUFxQyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsT0FBTyxXQUFXLEVBQUUsV0FBVyxFQUFFLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLE9BQU8sVUFBVSxDQUFDLFdBQVcsRUFBRSxPQUFPLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUMsS0FBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFNBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sR0FBRyxDQUFDLEVBQUUsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLFlBQVksR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFNLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxZQUFZLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLFlBQVksV0FBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLG9DQUFvQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLDRFQUE0RSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQywwQkFBMEIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsaUNBQWlDLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixHQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElB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MkIsQ0FBQyxDQUFDLElBQUksQ0FBQywwQkFBMEIsR0FBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxvSUFBb0ksQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsS0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsNEJBQTRCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLEVBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLGNBQWMsR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxZQUFZLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxPQUFPLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyw0RUFBNEUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLENBQUMsdUJBQXVCLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxFQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxvQkFBb0IsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFDLEVBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRSxFQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPQyxjQUFNLENBQUNBLGNBQU0sQ0FBQyxXQUFXLEVBQUUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsRUFBRSxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxZQUFZLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUcsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsR0FBRyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sVUFBVSxFQUFFLFdBQVcsRUFBRSxPQUFPLFdBQVcsRUFBRSxXQUFXLEVBQUUsT0FBTyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxNQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsWUFBWSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxxQ0FBb0MsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxFQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsK0JBQStCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLCtCQUErQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsS0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQyxFQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLHFDQUFxQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsS0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsc0NBQXNDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLCtCQUErQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsR0FBRyxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLHFDQUFvQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUMsRUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksY0FBYyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxvQkFBb0IsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFD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Q0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFDLENBQUMsS0FBSyxHQUFHLFFBQVEsR0FBRyxDQUFDLEVBQUUsRUFBRSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFDLENBQUMsQ0FBQyxPQUFPLE9BQU8sQ0FBQyxTQUFTLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sV0FBVyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLFFBQVEsSUFBSSxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsU0FBUyxXQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLE9BQU8sQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksUUFBUSxJQUFJLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxVQUFVLEVBQUUsQ0FBQyxPQUFPLElBQUksQ0FBQyxTQUFTLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sT0FBTyxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLFNBQVMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxPQUFPLFlBQVksQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxPQUFPLEdBQUcsR0FBRyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFDLENBQUMsT0FBTSxDQUFDLE9BQU8sSUFBSSxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLHdCQUF3QixDQUFDLFVBQVUsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxTQUFTLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsaUJBQWlCLENB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 diff --git a/.obsidian/plugins/obsidian-icon-folder/manifest.json b/.obsidian/plugins/obsidian-icon-folder/manifest.json new file mode 100644 index 00000000..49b4ab20 --- /dev/null +++ b/.obsidian/plugins/obsidian-icon-folder/manifest.json @@ -0,0 +1,10 @@ +{ + "id": "obsidian-icon-folder", + "name": "Iconize", + "version": "2.8.1", + "minAppVersion": "0.9.12", + "description": "Add icons to anything you desire in Obsidian, including files, folders, and text.", + "author": "Florian Woelki", + "authorUrl": "https://florianwoelki.com/", + "isDesktopOnly": false +} diff --git a/.obsidian/plugins/obsidian-icon-folder/styles.css b/.obsidian/plugins/obsidian-icon-folder/styles.css new file mode 100644 index 00000000..5c38c51a --- /dev/null +++ b/.obsidian/plugins/obsidian-icon-folder/styles.css @@ -0,0 +1,118 @@ +.iconize-title-icon { + max-width: var(--max-width); + width: var(--line-width); + margin-inline: var(--content-margin) !important; +} + +.iconize-icon { + border: 1px solid transparent; + margin: 0px 4px 0px 0px; + display: flex; + align-self: center; + margin: auto 0; +} + +.nav-folder-title, +.nav-file-title { + align-items: center; +} + +.iconize-setting .setting-item-control .dropdown { + margin-right: 12px; +} + +.iconize-setting input[type='color'] { + margin: 0 6px; +} + +.iconize-modal.prompt-results { + margin: 0; + overflow-y: auto; + display: grid; + grid-template-columns: repeat(5, minmax(0, 1fr)); +} + +.prompt .iconize-subheadline { + margin-top: 12px; + font-size: 12px; + color: gray; + grid-column-start: 1; + grid-column-end: 6; +} + +@media (max-width: 640px) { + .iconize-modal.prompt-results { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + .prompt .iconize-subheadline { + grid-column-end: 4; + } +} + +.iconize-modal.prompt-results .suggestion-item { + cursor: pointer; + white-space: pre-wrap; + display: flex; + justify-content: flex-end; + align-items: center; + flex-direction: column-reverse; + text-align: center; + font-size: 13px; + color: var(--text-muted); + padding: 16px 8px; + line-break: auto; + word-break: break-word; + line-height: 1.3; +} + +.iconize-modal.prompt-results + .suggestion-item.suggestion-item__center { + justify-content: center; +} + +.iconize-icon-preview { + font-size: 22px; +} + +.iconize-icon-preview img { + width: 16px; + height: 16px; +} + +.iconize-icon-preview svg { + width: 24px; + height: 24px; + color: currentColor; + margin-bottom: 4px; +} + +.iconize-dragover { + position: relative; +} + +.iconize-dragover-el { + position: absolute; + width: 100%; + height: 100%; + color: var(--text-normal); + background-color: var(--background-secondary-alt); + display: flex; + align-items: center; + justify-content: center; +} + +/* Custom rule modal. */ +.iconize-custom-rule-modal .modal-title h3 { + margin: 0; +} + +.iconize-custom-rule-modal .modal-content { + display: flex; + align-items: center; + justify-content: center; +} + +.iconize-custom-rule-modal .modal-content input { + width: 100%; + margin-right: 0.5rem; +} diff --git a/.obsidian/plugins/obsidian-icon-shortcodes/main.js b/.obsidian/plugins/obsidian-icon-shortcodes/main.js new file mode 100644 index 00000000..bff8b51e --- /dev/null +++ b/.obsidian/plugins/obsidian-icon-shortcodes/main.js @@ -0,0 +1,168 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source visit the plugins github repository +*/ + +var rp=Object.create;var zt=Object.defineProperty,op=Object.defineProperties,sp=Object.getOwnPropertyDescriptor,cp=Object.getOwnPropertyDescriptors,lp=Object.getOwnPropertyNames,sn=Object.getOwnPropertySymbols,pp=Object.getPrototypeOf,ea=Object.prototype.hasOwnProperty,Yi=Object.prototype.propertyIsEnumerable;var Ki=(e,t,n)=>t in e?zt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Me=(e,t)=>{for(var n in t||(t={}))ea.call(t,n)&&Ki(e,n,t[n]);if(sn)for(var n of sn(t))Yi.call(t,n)&&Ki(e,n,t[n]);return e},et=(e,t)=>op(e,cp(t));var cn=(e,t)=>{var n={};for(var a in e)ea.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(e!=null&&sn)for(var a of sn(e))t.indexOf(a)<0&&Yi.call(e,a)&&(n[a]=e[a]);return n};var K=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Xi=(e,t)=>{for(var n in t)zt(e,n,{get:t[n],enumerable:!0})},Ji=(e,t,n,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of lp(t))!ea.call(e,i)&&i!==n&&zt(e,i,{get:()=>t[i],enumerable:!(a=sp(t,i))||a.enumerable});return e};var be=(e,t,n)=>(n=e!=null?rp(pp(e)):{},Ji(t||!e||!e.__esModule?zt(n,"default",{value:e,enumerable:!0}):n,e)),up=e=>Ji(zt({},"__esModule",{value:!0}),e);var $=(e,t,n)=>new Promise((a,i)=>{var r=p=>{try{s(n.next(p))}catch(l){i(l)}},o=p=>{try{s(n.throw(p))}catch(l){i(l)}},s=p=>p.done?a(p.value):Promise.resolve(p.value).then(r,o);s((n=n.apply(e,t)).next())});var or=K((h1,gp)=>{gp.exports={"application/1d-interleaved-parityfec":{source:"iana"},"application/3gpdash-qoe-report+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/3gpp-ims+xml":{source:"iana",compressible:!0},"application/3gpphal+json":{source:"iana",compressible:!0},"application/3gpphalforms+json":{source:"iana",compressible:!0},"application/a2l":{source:"iana"},"application/ace+cbor":{source:"iana"},"application/activemessage":{source:"iana"},"application/activity+json":{source:"iana",compressible:!0},"application/alto-costmap+json":{source:"iana",compressible:!0},"application/alto-costmapfilter+json":{source:"iana",compressible:!0},"application/alto-directory+json":{source:"iana",compressible:!0},"application/alto-endpointcost+json":{source:"iana",compressible:!0},"application/alto-endpointcostparams+json":{source:"iana",compressible:!0},"application/alto-endpointprop+json":{source:"iana",compressible:!0},"application/alto-endpointpropparams+json":{source:"iana",compressible:!0},"application/alto-error+json":{source:"iana",compressible:!0},"application/alto-networkmap+json":{source:"iana",compressible:!0},"application/alto-networkmapfilter+json":{source:"iana",compressible:!0},"application/alto-updatestreamcontrol+json":{source:"iana",compressible:!0},"application/alto-updatestreamparams+json":{source:"iana",compressible:!0},"application/aml":{source:"iana"},"application/andrew-inset":{source:"iana",extensions:["ez"]},"application/applefile":{source:"iana"},"application/applixware":{source:"apache",extensions:["aw"]},"application/at+jwt":{source:"iana"},"application/atf":{source:"iana"},"application/atfx":{source:"iana"},"application/atom+xml":{source:"iana",compressible:!0,extensions:["atom"]},"application/atomcat+xml":{source:"iana",compressible:!0,extensions:["atomcat"]},"application/atomdeleted+xml":{source:"iana",compressible:!0,extensions:["atomdeleted"]},"application/atomicmail":{source:"iana"},"application/atomsvc+xml":{source:"iana",compressible:!0,extensions:["atomsvc"]},"application/atsc-dwd+xml":{source:"iana",compressible:!0,extensions:["dwd"]},"application/atsc-dynamic-event-message":{source:"iana"},"application/atsc-held+xml":{source:"iana",compressible:!0,extensions:["held"]},"application/atsc-rdt+json":{source:"iana",compressible:!0},"application/atsc-rsat+xml":{source:"iana",compressible:!0,extensions:["rsat"]},"application/atxml":{source:"iana"},"application/auth-policy+xml":{source:"iana",compressible:!0},"application/bacnet-xdd+zip":{source:"iana",compressible:!1},"application/batch-smtp":{source:"iana"},"application/bdoc":{compressible:!1,extensions:["bdoc"]},"application/beep+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/calendar+json":{source:"iana",compressible:!0},"application/calendar+xml":{source:"iana",compressible:!0,extensions:["xcs"]},"application/call-completion":{source:"iana"},"application/cals-1840":{source:"iana"},"application/captive+json":{source:"iana",compressible:!0},"application/cbor":{source:"iana"},"application/cbor-seq":{source:"iana"},"application/cccex":{source:"iana"},"application/ccmp+xml":{source:"iana",compressible:!0},"application/ccxml+xml":{source:"iana",compressible:!0,extensions:["ccxml"]},"application/cdfx+xml":{source:"iana",compressible:!0,extensions:["cdfx"]},"application/cdmi-capability":{source:"iana",extensions:["cdmia"]},"application/cdmi-container":{source:"iana",extensions:["cdmic"]},"application/cdmi-domain":{source:"iana",extensions:["cdmid"]},"application/cdmi-object":{source:"iana",extensions:["cdmio"]},"application/cdmi-queue":{source:"iana",extensions:["cdmiq"]},"application/cdni":{source:"iana"},"application/cea":{source:"iana"},"application/cea-2018+xml":{source:"iana",compressible:!0},"application/cellml+xml":{source:"iana",compressible:!0},"application/cfw":{source:"iana"},"application/city+json":{source:"iana",compressible:!0},"application/clr":{source:"iana"},"application/clue+xml":{source:"iana",compressible:!0},"application/clue_info+xml":{source:"iana",compressible:!0},"application/cms":{source:"iana"},"application/cnrp+xml":{source:"iana",compressible:!0},"application/coap-group+json":{source:"iana",compressible:!0},"application/coap-payload":{source:"iana"},"application/commonground":{source:"iana"},"application/conference-info+xml":{source:"iana",compressible:!0},"application/cose":{source:"iana"},"application/cose-key":{source:"iana"},"application/cose-key-set":{source:"iana"},"application/cpl+xml":{source:"iana",compressible:!0,extensions:["cpl"]},"application/csrattrs":{source:"iana"},"application/csta+xml":{source:"iana",compressible:!0},"application/cstadata+xml":{source:"iana",compressible:!0},"application/csvm+json":{source:"iana",compressible:!0},"application/cu-seeme":{source:"apache",extensions:["cu"]},"application/cwt":{source:"iana"},"application/cybercash":{source:"iana"},"application/dart":{compressible:!0},"application/dash+xml":{source:"iana",compressible:!0,extensions:["mpd"]},"application/dash-patch+xml":{source:"iana",compressible:!0,extensions:["mpp"]},"application/dashdelta":{source:"iana"},"application/davmount+xml":{source:"iana",compressible:!0,extensions:["davmount"]},"application/dca-rft":{source:"iana"},"application/dcd":{source:"iana"},"application/dec-dx":{source:"iana"},"application/dialog-info+xml":{source:"iana",compressible:!0},"application/dicom":{source:"iana"},"application/dicom+json":{source:"iana",compressible:!0},"application/dicom+xml":{source:"iana",compressible:!0},"application/dii":{source:"iana"},"application/dit":{source:"iana"},"application/dns":{source:"iana"},"application/dns+json":{source:"iana",compressible:!0},"application/dns-message":{source:"iana"},"application/docbook+xml":{source:"apache",compressible:!0,extensions:["dbk"]},"application/dots+cbor":{source:"iana"},"application/dskpp+xml":{source:"iana",compressible:!0},"application/dssc+der":{source:"iana",extensions:["dssc"]},"application/dssc+xml":{source:"iana",compressible:!0,extensions:["xdssc"]},"application/dvcs":{source:"iana"},"application/ecmascript":{source:"iana",compressible:!0,extensions:["es","ecma"]},"application/edi-consent":{source:"iana"},"application/edi-x12":{source:"iana",compressible:!1},"application/edifact":{source:"iana",compressible:!1},"application/efi":{source:"iana"},"application/elm+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/elm+xml":{source:"iana",compressible:!0},"application/emergencycalldata.cap+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/emergencycalldata.comment+xml":{source:"iana",compressible:!0},"application/emergencycalldata.control+xml":{source:"iana",compressible:!0},"application/emergencycalldata.deviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.ecall.msd":{source:"iana"},"application/emergencycalldata.providerinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.serviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.subscriberinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.veds+xml":{source:"iana",compressible:!0},"application/emma+xml":{source:"iana",compressible:!0,extensions:["emma"]},"application/emotionml+xml":{source:"iana",compressible:!0,extensions:["emotionml"]},"application/encaprtp":{source:"iana"},"application/epp+xml":{source:"iana",compressible:!0},"application/epub+zip":{source:"iana",compressible:!1,extensions:["epub"]},"application/eshop":{source:"iana"},"application/exi":{source:"iana",extensions:["exi"]},"application/expect-ct-report+json":{source:"iana",compressible:!0},"application/express":{source:"iana",extensions:["exp"]},"application/fastinfoset":{source:"iana"},"application/fastsoap":{source:"iana"},"application/fdt+xml":{source:"iana",compressible:!0,extensions:["fdt"]},"application/fhir+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/fhir+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/fido.trusted-apps+json":{compressible:!0},"application/fits":{source:"iana"},"application/flexfec":{source:"iana"},"application/font-sfnt":{source:"iana"},"application/font-tdpfr":{source:"iana",extensions:["pfr"]},"application/font-woff":{source:"iana",compressible:!1},"application/framework-attributes+xml":{source:"iana",compressible:!0},"application/geo+json":{source:"iana",compressible:!0,extensions:["geojson"]},"application/geo+json-seq":{source:"iana"},"application/geopackage+sqlite3":{source:"iana"},"application/geoxacml+xml":{source:"iana",compressible:!0},"application/gltf-buffer":{source:"iana"},"application/gml+xml":{source:"iana",compressible:!0,extensions:["gml"]},"application/gpx+xml":{source:"apache",compressible:!0,extensions:["gpx"]},"application/gxf":{source:"apache",extensions:["gxf"]},"application/gzip":{source:"iana",compressible:!1,extensions:["gz"]},"application/h224":{source:"iana"},"application/held+xml":{source:"iana",compressible:!0},"application/hjson":{extensions:["hjson"]},"application/http":{source:"iana"},"application/hyperstudio":{source:"iana",extensions:["stk"]},"application/ibe-key-request+xml":{source:"iana",compressible:!0},"application/ibe-pkg-reply+xml":{source:"iana",compressible:!0},"application/ibe-pp-data":{source:"iana"},"application/iges":{source:"iana"},"application/im-iscomposing+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/index":{source:"iana"},"application/index.cmd":{source:"iana"},"application/index.obj":{source:"iana"},"application/index.response":{source:"iana"},"application/index.vnd":{source:"iana"},"application/inkml+xml":{source:"iana",compressible:!0,extensions:["ink","inkml"]},"application/iotp":{source:"iana"},"application/ipfix":{source:"iana",extensions:["ipfix"]},"application/ipp":{source:"iana"},"application/isup":{source:"iana"},"application/its+xml":{source:"iana",compressible:!0,extensions:["its"]},"application/java-archive":{source:"apache",compressible:!1,extensions:["jar","war","ear"]},"application/java-serialized-object":{source:"apache",compressible:!1,extensions:["ser"]},"application/java-vm":{source:"apache",compressible:!1,extensions:["class"]},"application/javascript":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["js","mjs"]},"application/jf2feed+json":{source:"iana",compressible:!0},"application/jose":{source:"iana"},"application/jose+json":{source:"iana",compressible:!0},"application/jrd+json":{source:"iana",compressible:!0},"application/jscalendar+json":{source:"iana",compressible:!0},"application/json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["json","map"]},"application/json-patch+json":{source:"iana",compressible:!0},"application/json-seq":{source:"iana"},"application/json5":{extensions:["json5"]},"application/jsonml+json":{source:"apache",compressible:!0,extensions:["jsonml"]},"application/jwk+json":{source:"iana",compressible:!0},"application/jwk-set+json":{source:"iana",compressible:!0},"application/jwt":{source:"iana"},"application/kpml-request+xml":{source:"iana",compressible:!0},"application/kpml-response+xml":{source:"iana",compressible:!0},"application/ld+json":{source:"iana",compressible:!0,extensions:["jsonld"]},"application/lgr+xml":{source:"iana",compressible:!0,extensions:["lgr"]},"application/link-format":{source:"iana"},"application/load-control+xml":{source:"iana",compressible:!0},"application/lost+xml":{source:"iana",compressible:!0,extensions:["lostxml"]},"application/lostsync+xml":{source:"iana",compressible:!0},"application/lpf+zip":{source:"iana",compressible:!1},"application/lxf":{source:"iana"},"application/mac-binhex40":{source:"iana",extensions:["hqx"]},"application/mac-compactpro":{source:"apache",extensions:["cpt"]},"application/macwriteii":{source:"iana"},"application/mads+xml":{source:"iana",compressible:!0,extensions:["mads"]},"application/manifest+json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["webmanifest"]},"application/marc":{source:"iana",extensions:["mrc"]},"application/marcxml+xml":{source:"iana",compressible:!0,extensions:["mrcx"]},"application/mathematica":{source:"iana",extensions:["ma","nb","mb"]},"application/mathml+xml":{source:"iana",compressible:!0,extensions:["mathml"]},"application/mathml-content+xml":{source:"iana",compressible:!0},"application/mathml-presentation+xml":{source:"iana",compressible:!0},"application/mbms-associated-procedure-description+xml":{source:"iana",compressible:!0},"application/mbms-deregister+xml":{source:"iana",compressible:!0},"application/mbms-envelope+xml":{source:"iana",compressible:!0},"application/mbms-msk+xml":{source:"iana",compressible:!0},"application/mbms-msk-response+xml":{source:"iana",compressible:!0},"application/mbms-protection-description+xml":{source:"iana",compressible:!0},"application/mbms-reception-report+xml":{source:"iana",compressible:!0},"application/mbms-register+xml":{source:"iana",compressible:!0},"application/mbms-register-response+xml":{source:"iana",compressible:!0},"application/mbms-schedule+xml":{source:"iana",compressible:!0},"application/mbms-user-service-description+xml":{source:"iana",compressible:!0},"application/mbox":{source:"iana",extensions:["mbox"]},"application/media-policy-dataset+xml":{source:"iana",compressible:!0,extensions:["mpf"]},"application/media_control+xml":{source:"iana",compressible:!0},"application/mediaservercontrol+xml":{source:"iana",compressible:!0,extensions:["mscml"]},"application/merge-patch+json":{source:"iana",compressible:!0},"application/metalink+xml":{source:"apache",compressible:!0,extensions:["metalink"]},"application/metalink4+xml":{source:"iana",compressible:!0,extensions:["meta4"]},"application/mets+xml":{source:"iana",compressible:!0,extensions:["mets"]},"application/mf4":{source:"iana"},"application/mikey":{source:"iana"},"application/mipc":{source:"iana"},"application/missing-blocks+cbor-seq":{source:"iana"},"application/mmt-aei+xml":{source:"iana",compressible:!0,extensions:["maei"]},"application/mmt-usd+xml":{source:"iana",compressible:!0,extensions:["musd"]},"application/mods+xml":{source:"iana",compressible:!0,extensions:["mods"]},"application/moss-keys":{source:"iana"},"application/moss-signature":{source:"iana"},"application/mosskey-data":{source:"iana"},"application/mosskey-request":{source:"iana"},"application/mp21":{source:"iana",extensions:["m21","mp21"]},"application/mp4":{source:"iana",extensions:["mp4s","m4p"]},"application/mpeg4-generic":{source:"iana"},"application/mpeg4-iod":{source:"iana"},"application/mpeg4-iod-xmt":{source:"iana"},"application/mrb-consumer+xml":{source:"iana",compressible:!0},"application/mrb-publish+xml":{source:"iana",compressible:!0},"application/msc-ivr+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msc-mixer+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msword":{source:"iana",compressible:!1,extensions:["doc","dot"]},"application/mud+json":{source:"iana",compressible:!0},"application/multipart-core":{source:"iana"},"application/mxf":{source:"iana",extensions:["mxf"]},"application/n-quads":{source:"iana",extensions:["nq"]},"application/n-triples":{source:"iana",extensions:["nt"]},"application/nasdata":{source:"iana"},"application/news-checkgroups":{source:"iana",charset:"US-ASCII"},"application/news-groupinfo":{source:"iana",charset:"US-ASCII"},"application/news-transmission":{source:"iana"},"application/nlsml+xml":{source:"iana",compressible:!0},"application/node":{source:"iana",extensions:["cjs"]},"application/nss":{source:"iana"},"application/oauth-authz-req+jwt":{source:"iana"},"application/oblivious-dns-message":{source:"iana"},"application/ocsp-request":{source:"iana"},"application/ocsp-response":{source:"iana"},"application/octet-stream":{source:"iana",compressible:!1,extensions:["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{source:"iana",extensions:["oda"]},"application/odm+xml":{source:"iana",compressible:!0},"application/odx":{source:"iana"},"application/oebps-package+xml":{source:"iana",compressible:!0,extensions:["opf"]},"application/ogg":{source:"iana",compressible:!1,extensions:["ogx"]},"application/omdoc+xml":{source:"apache",compressible:!0,extensions:["omdoc"]},"application/onenote":{source:"apache",extensions:["onetoc","onetoc2","onetmp","onepkg"]},"application/opc-nodeset+xml":{source:"iana",compressible:!0},"application/oscore":{source:"iana"},"application/oxps":{source:"iana",extensions:["oxps"]},"application/p21":{source:"iana"},"application/p21+zip":{source:"iana",compressible:!1},"application/p2p-overlay+xml":{source:"iana",compressible:!0,extensions:["relo"]},"application/parityfec":{source:"iana"},"application/passport":{source:"iana"},"application/patch-ops-error+xml":{source:"iana",compressible:!0,extensions:["xer"]},"application/pdf":{source:"iana",compressible:!1,extensions:["pdf"]},"application/pdx":{source:"iana"},"application/pem-certificate-chain":{source:"iana"},"application/pgp-encrypted":{source:"iana",compressible:!1,extensions:["pgp"]},"application/pgp-keys":{source:"iana",extensions:["asc"]},"application/pgp-signature":{source:"iana",extensions:["asc","sig"]},"application/pics-rules":{source:"apache",extensions:["prf"]},"application/pidf+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pidf-diff+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pkcs10":{source:"iana",extensions:["p10"]},"application/pkcs12":{source:"iana"},"application/pkcs7-mime":{source:"iana",extensions:["p7m","p7c"]},"application/pkcs7-signature":{source:"iana",extensions:["p7s"]},"application/pkcs8":{source:"iana",extensions:["p8"]},"application/pkcs8-encrypted":{source:"iana"},"application/pkix-attr-cert":{source:"iana",extensions:["ac"]},"application/pkix-cert":{source:"iana",extensions:["cer"]},"application/pkix-crl":{source:"iana",extensions:["crl"]},"application/pkix-pkipath":{source:"iana",extensions:["pkipath"]},"application/pkixcmp":{source:"iana",extensions:["pki"]},"application/pls+xml":{source:"iana",compressible:!0,extensions:["pls"]},"application/poc-settings+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/postscript":{source:"iana",compressible:!0,extensions:["ai","eps","ps"]},"application/ppsp-tracker+json":{source:"iana",compressible:!0},"application/problem+json":{source:"iana",compressible:!0},"application/problem+xml":{source:"iana",compressible:!0},"application/provenance+xml":{source:"iana",compressible:!0,extensions:["provx"]},"application/prs.alvestrand.titrax-sheet":{source:"iana"},"application/prs.cww":{source:"iana",extensions:["cww"]},"application/prs.cyn":{source:"iana",charset:"7-BIT"},"application/prs.hpub+zip":{source:"iana",compressible:!1},"application/prs.nprend":{source:"iana"},"application/prs.plucker":{source:"iana"},"application/prs.rdf-xml-crypt":{source:"iana"},"application/prs.xsf+xml":{source:"iana",compressible:!0},"application/pskc+xml":{source:"iana",compressible:!0,extensions:["pskcxml"]},"application/pvd+json":{source:"iana",compressible:!0},"application/qsig":{source:"iana"},"application/raml+yaml":{compressible:!0,extensions:["raml"]},"application/raptorfec":{source:"iana"},"application/rdap+json":{source:"iana",compressible:!0},"application/rdf+xml":{source:"iana",compressible:!0,extensions:["rdf","owl"]},"application/reginfo+xml":{source:"iana",compressible:!0,extensions:["rif"]},"application/relax-ng-compact-syntax":{source:"iana",extensions:["rnc"]},"application/remote-printing":{source:"iana"},"application/reputon+json":{source:"iana",compressible:!0},"application/resource-lists+xml":{source:"iana",compressible:!0,extensions:["rl"]},"application/resource-lists-diff+xml":{source:"iana",compressible:!0,extensions:["rld"]},"application/rfc+xml":{source:"iana",compressible:!0},"application/riscos":{source:"iana"},"application/rlmi+xml":{source:"iana",compressible:!0},"application/rls-services+xml":{source:"iana",compressible:!0,extensions:["rs"]},"application/route-apd+xml":{source:"iana",compressible:!0,extensions:["rapd"]},"application/route-s-tsid+xml":{source:"iana",compressible:!0,extensions:["sls"]},"application/route-usd+xml":{source:"iana",compressible:!0,extensions:["rusd"]},"application/rpki-ghostbusters":{source:"iana",extensions:["gbr"]},"application/rpki-manifest":{source:"iana",extensions:["mft"]},"application/rpki-publication":{source:"iana"},"application/rpki-roa":{source:"iana",extensions:["roa"]},"application/rpki-updown":{source:"iana"},"application/rsd+xml":{source:"apache",compressible:!0,extensions:["rsd"]},"application/rss+xml":{source:"apache",compressible:!0,extensions:["rss"]},"application/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"application/rtploopback":{source:"iana"},"application/rtx":{source:"iana"},"application/samlassertion+xml":{source:"iana",compressible:!0},"application/samlmetadata+xml":{source:"iana",compressible:!0},"application/sarif+json":{source:"iana",compressible:!0},"application/sarif-external-properties+json":{source:"iana",compressible:!0},"application/sbe":{source:"iana"},"application/sbml+xml":{source:"iana",compressible:!0,extensions:["sbml"]},"application/scaip+xml":{source:"iana",compressible:!0},"application/scim+json":{source:"iana",compressible:!0},"application/scvp-cv-request":{source:"iana",extensions:["scq"]},"application/scvp-cv-response":{source:"iana",extensions:["scs"]},"application/scvp-vp-request":{source:"iana",extensions:["spq"]},"application/scvp-vp-response":{source:"iana",extensions:["spp"]},"application/sdp":{source:"iana",extensions:["sdp"]},"application/secevent+jwt":{source:"iana"},"application/senml+cbor":{source:"iana"},"application/senml+json":{source:"iana",compressible:!0},"application/senml+xml":{source:"iana",compressible:!0,extensions:["senmlx"]},"application/senml-etch+cbor":{source:"iana"},"application/senml-etch+json":{source:"iana",compressible:!0},"application/senml-exi":{source:"iana"},"application/sensml+cbor":{source:"iana"},"application/sensml+json":{source:"iana",compressible:!0},"application/sensml+xml":{source:"iana",compressible:!0,extensions:["sensmlx"]},"application/sensml-exi":{source:"iana"},"application/sep+xml":{source:"iana",compressible:!0},"application/sep-exi":{source:"iana"},"application/session-info":{source:"iana"},"application/set-payment":{source:"iana"},"application/set-payment-initiation":{source:"iana",extensions:["setpay"]},"application/set-registration":{source:"iana"},"application/set-registration-initiation":{source:"iana",extensions:["setreg"]},"application/sgml":{source:"iana"},"application/sgml-open-catalog":{source:"iana"},"application/shf+xml":{source:"iana",compressible:!0,extensions:["shf"]},"application/sieve":{source:"iana",extensions:["siv","sieve"]},"application/simple-filter+xml":{source:"iana",compressible:!0},"application/simple-message-summary":{source:"iana"},"application/simplesymbolcontainer":{source:"iana"},"application/sipc":{source:"iana"},"application/slate":{source:"iana"},"application/smil":{source:"iana"},"application/smil+xml":{source:"iana",compressible:!0,extensions:["smi","smil"]},"application/smpte336m":{source:"iana"},"application/soap+fastinfoset":{source:"iana"},"application/soap+xml":{source:"iana",compressible:!0},"application/sparql-query":{source:"iana",extensions:["rq"]},"application/sparql-results+xml":{source:"iana",compressible:!0,extensions:["srx"]},"application/spdx+json":{source:"iana",compressible:!0},"application/spirits-event+xml":{source:"iana",compressible:!0},"application/sql":{source:"iana"},"application/srgs":{source:"iana",extensions:["gram"]},"application/srgs+xml":{source:"iana",compressible:!0,extensions:["grxml"]},"application/sru+xml":{source:"iana",compressible:!0,extensions:["sru"]},"application/ssdl+xml":{source:"apache",compressible:!0,extensions:["ssdl"]},"application/ssml+xml":{source:"iana",compressible:!0,extensions:["ssml"]},"application/stix+json":{source:"iana",compressible:!0},"application/swid+xml":{source:"iana",compressible:!0,extensions:["swidtag"]},"application/tamp-apex-update":{source:"iana"},"application/tamp-apex-update-confirm":{source:"iana"},"application/tamp-community-update":{source:"iana"},"application/tamp-community-update-confirm":{source:"iana"},"application/tamp-error":{source:"iana"},"application/tamp-sequence-adjust":{source:"iana"},"application/tamp-sequence-adjust-confirm":{source:"iana"},"application/tamp-status-query":{source:"iana"},"application/tamp-status-response":{source:"iana"},"application/tamp-update":{source:"iana"},"application/tamp-update-confirm":{source:"iana"},"application/tar":{compressible:!0},"application/taxii+json":{source:"iana",compressible:!0},"application/td+json":{source:"iana",compressible:!0},"application/tei+xml":{source:"iana",compressible:!0,extensions:["tei","teicorpus"]},"application/tetra_isi":{source:"iana"},"application/thraud+xml":{source:"iana",compressible:!0,extensions:["tfi"]},"application/timestamp-query":{source:"iana"},"application/timestamp-reply":{source:"iana"},"application/timestamped-data":{source:"iana",extensions:["tsd"]},"application/tlsrpt+gzip":{source:"iana"},"application/tlsrpt+json":{source:"iana",compressible:!0},"application/tnauthlist":{source:"iana"},"application/token-introspection+jwt":{source:"iana"},"application/toml":{compressible:!0,extensions:["toml"]},"application/trickle-ice-sdpfrag":{source:"iana"},"application/trig":{source:"iana",extensions:["trig"]},"application/ttml+xml":{source:"iana",compressible:!0,extensions:["ttml"]},"application/tve-trigger":{source:"iana"},"application/tzif":{source:"iana"},"application/tzif-leap":{source:"iana"},"application/ubjson":{compressible:!1,extensions:["ubj"]},"application/ulpfec":{source:"iana"},"application/urc-grpsheet+xml":{source:"iana",compressible:!0},"application/urc-ressheet+xml":{source:"iana",compressible:!0,extensions:["rsheet"]},"application/urc-targetdesc+xml":{source:"iana",compressible:!0,extensions:["td"]},"application/urc-uisocketdesc+xml":{source:"iana",compressible:!0},"application/vcard+json":{source:"iana",compressible:!0},"application/vcard+xml":{source:"iana",compressible:!0},"application/vemmi":{source:"iana"},"application/vividence.scriptfile":{source:"apache"},"application/vnd.1000minds.decision-model+xml":{source:"iana",compressible:!0,extensions:["1km"]},"application/vnd.3gpp-prose+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc3ch+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-v2x-local-service-information":{source:"iana"},"application/vnd.3gpp.5gnas":{source:"iana"},"application/vnd.3gpp.access-transfer-events+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.bsf+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gmop+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gtpc":{source:"iana"},"application/vnd.3gpp.interworking-data":{source:"iana"},"application/vnd.3gpp.lpp":{source:"iana"},"application/vnd.3gpp.mc-signalling-ear":{source:"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-payload":{source:"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-signalling":{source:"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-floor-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-signed+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-init-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-transmission-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mid-call+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ngap":{source:"iana"},"application/vnd.3gpp.pfcp":{source:"iana"},"application/vnd.3gpp.pic-bw-large":{source:"iana",extensions:["plb"]},"application/vnd.3gpp.pic-bw-small":{source:"iana",extensions:["psb"]},"application/vnd.3gpp.pic-bw-var":{source:"iana",extensions:["pvb"]},"application/vnd.3gpp.s1ap":{source:"iana"},"application/vnd.3gpp.sms":{source:"iana"},"application/vnd.3gpp.sms+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-ext+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.state-and-event-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ussd+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.bcmcsinfo+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.sms":{source:"iana"},"application/vnd.3gpp2.tcap":{source:"iana",extensions:["tcap"]},"application/vnd.3lightssoftware.imagescal":{source:"iana"},"application/vnd.3m.post-it-notes":{source:"iana",extensions:["pwn"]},"application/vnd.accpac.simply.aso":{source:"iana",extensions:["aso"]},"application/vnd.accpac.simply.imp":{source:"iana",extensions:["imp"]},"application/vnd.acucobol":{source:"iana",extensions:["acu"]},"application/vnd.acucorp":{source:"iana",extensions:["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{source:"apache",compressible:!1,extensions:["air"]},"application/vnd.adobe.flash.movie":{source:"iana"},"application/vnd.adobe.formscentral.fcdt":{source:"iana",extensions:["fcdt"]},"application/vnd.adobe.fxp":{source:"iana",extensions:["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{source:"iana"},"application/vnd.adobe.xdp+xml":{source:"iana",compressible:!0,extensions:["xdp"]},"application/vnd.adobe.xfdf":{source:"iana",extensions:["xfdf"]},"application/vnd.aether.imp":{source:"iana"},"application/vnd.afpc.afplinedata":{source:"iana"},"application/vnd.afpc.afplinedata-pagedef":{source:"iana"},"application/vnd.afpc.cmoca-cmresource":{source:"iana"},"application/vnd.afpc.foca-charset":{source:"iana"},"application/vnd.afpc.foca-codedfont":{source:"iana"},"application/vnd.afpc.foca-codepage":{source:"iana"},"application/vnd.afpc.modca":{source:"iana"},"application/vnd.afpc.modca-cmtable":{source:"iana"},"application/vnd.afpc.modca-formdef":{source:"iana"},"application/vnd.afpc.modca-mediummap":{source:"iana"},"application/vnd.afpc.modca-objectcontainer":{source:"iana"},"application/vnd.afpc.modca-overlay":{source:"iana"},"application/vnd.afpc.modca-pagesegment":{source:"iana"},"application/vnd.age":{source:"iana",extensions:["age"]},"application/vnd.ah-barcode":{source:"iana"},"application/vnd.ahead.space":{source:"iana",extensions:["ahead"]},"application/vnd.airzip.filesecure.azf":{source:"iana",extensions:["azf"]},"application/vnd.airzip.filesecure.azs":{source:"iana",extensions:["azs"]},"application/vnd.amadeus+json":{source:"iana",compressible:!0},"application/vnd.amazon.ebook":{source:"apache",extensions:["azw"]},"application/vnd.amazon.mobi8-ebook":{source:"iana"},"application/vnd.americandynamics.acc":{source:"iana",extensions:["acc"]},"application/vnd.amiga.ami":{source:"iana",extensions:["ami"]},"application/vnd.amundsen.maze+xml":{source:"iana",compressible:!0},"application/vnd.android.ota":{source:"iana"},"application/vnd.android.package-archive":{source:"apache",compressible:!1,extensions:["apk"]},"application/vnd.anki":{source:"iana"},"application/vnd.anser-web-certificate-issue-initiation":{source:"iana",extensions:["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{source:"apache",extensions:["fti"]},"application/vnd.antix.game-component":{source:"iana",extensions:["atx"]},"application/vnd.apache.arrow.file":{source:"iana"},"application/vnd.apache.arrow.stream":{source:"iana"},"application/vnd.apache.thrift.binary":{source:"iana"},"application/vnd.apache.thrift.compact":{source:"iana"},"application/vnd.apache.thrift.json":{source:"iana"},"application/vnd.api+json":{source:"iana",compressible:!0},"application/vnd.aplextor.warrp+json":{source:"iana",compressible:!0},"application/vnd.apothekende.reservation+json":{source:"iana",compressible:!0},"application/vnd.apple.installer+xml":{source:"iana",compressible:!0,extensions:["mpkg"]},"application/vnd.apple.keynote":{source:"iana",extensions:["key"]},"application/vnd.apple.mpegurl":{source:"iana",extensions:["m3u8"]},"application/vnd.apple.numbers":{source:"iana",extensions:["numbers"]},"application/vnd.apple.pages":{source:"iana",extensions:["pages"]},"application/vnd.apple.pkpass":{compressible:!1,extensions:["pkpass"]},"application/vnd.arastra.swi":{source:"iana"},"application/vnd.aristanetworks.swi":{source:"iana",extensions:["swi"]},"application/vnd.artisan+json":{source:"iana",compressible:!0},"application/vnd.artsquare":{source:"iana"},"application/vnd.astraea-software.iota":{source:"iana",extensions:["iota"]},"application/vnd.audiograph":{source:"iana",extensions:["aep"]},"application/vnd.autopackage":{source:"iana"},"application/vnd.avalon+json":{source:"iana",compressible:!0},"application/vnd.avistar+xml":{source:"iana",compressible:!0},"application/vnd.balsamiq.bmml+xml":{source:"iana",compressible:!0,extensions:["bmml"]},"application/vnd.balsamiq.bmpr":{source:"iana"},"application/vnd.banana-accounting":{source:"iana"},"application/vnd.bbf.usp.error":{source:"iana"},"application/vnd.bbf.usp.msg":{source:"iana"},"application/vnd.bbf.usp.msg+json":{source:"iana",compressible:!0},"application/vnd.bekitzur-stech+json":{source:"iana",compressible:!0},"application/vnd.bint.med-content":{source:"iana"},"application/vnd.biopax.rdf+xml":{source:"iana",compressible:!0},"application/vnd.blink-idb-value-wrapper":{source:"iana"},"application/vnd.blueice.multipass":{source:"iana",extensions:["mpm"]},"application/vnd.bluetooth.ep.oob":{source:"iana"},"application/vnd.bluetooth.le.oob":{source:"iana"},"application/vnd.bmi":{source:"iana",extensions:["bmi"]},"application/vnd.bpf":{source:"iana"},"application/vnd.bpf3":{source:"iana"},"application/vnd.businessobjects":{source:"iana",extensions:["rep"]},"application/vnd.byu.uapi+json":{source:"iana",compressible:!0},"application/vnd.cab-jscript":{source:"iana"},"application/vnd.canon-cpdl":{source:"iana"},"application/vnd.canon-lips":{source:"iana"},"application/vnd.capasystems-pg+json":{source:"iana",compressible:!0},"application/vnd.cendio.thinlinc.clientconf":{source:"iana"},"application/vnd.century-systems.tcp_stream":{source:"iana"},"application/vnd.chemdraw+xml":{source:"iana",compressible:!0,extensions:["cdxml"]},"application/vnd.chess-pgn":{source:"iana"},"application/vnd.chipnuts.karaoke-mmd":{source:"iana",extensions:["mmd"]},"application/vnd.ciedi":{source:"iana"},"application/vnd.cinderella":{source:"iana",extensions:["cdy"]},"application/vnd.cirpack.isdn-ext":{source:"iana"},"application/vnd.citationstyles.style+xml":{source:"iana",compressible:!0,extensions:["csl"]},"application/vnd.claymore":{source:"iana",extensions:["cla"]},"application/vnd.cloanto.rp9":{source:"iana",extensions:["rp9"]},"application/vnd.clonk.c4group":{source:"iana",extensions:["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{source:"iana",extensions:["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{source:"iana",extensions:["c11amz"]},"application/vnd.coffeescript":{source:"iana"},"application/vnd.collabio.xodocuments.document":{source:"iana"},"application/vnd.collabio.xodocuments.document-template":{source:"iana"},"application/vnd.collabio.xodocuments.presentation":{source:"iana"},"application/vnd.collabio.xodocuments.presentation-template":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{source:"iana"},"application/vnd.collection+json":{source:"iana",compressible:!0},"application/vnd.collection.doc+json":{source:"iana",compressible:!0},"application/vnd.collection.next+json":{source:"iana",compressible:!0},"application/vnd.comicbook+zip":{source:"iana",compressible:!1},"application/vnd.comicbook-rar":{source:"iana"},"application/vnd.commerce-battelle":{source:"iana"},"application/vnd.commonspace":{source:"iana",extensions:["csp"]},"application/vnd.contact.cmsg":{source:"iana",extensions:["cdbcmsg"]},"application/vnd.coreos.ignition+json":{source:"iana",compressible:!0},"application/vnd.cosmocaller":{source:"iana",extensions:["cmc"]},"application/vnd.crick.clicker":{source:"iana",extensions:["clkx"]},"application/vnd.crick.clicker.keyboard":{source:"iana",extensions:["clkk"]},"application/vnd.crick.clicker.palette":{source:"iana",extensions:["clkp"]},"application/vnd.crick.clicker.template":{source:"iana",extensions:["clkt"]},"application/vnd.crick.clicker.wordbank":{source:"iana",extensions:["clkw"]},"application/vnd.criticaltools.wbs+xml":{source:"iana",compressible:!0,extensions:["wbs"]},"application/vnd.cryptii.pipe+json":{source:"iana",compressible:!0},"application/vnd.crypto-shade-file":{source:"iana"},"application/vnd.cryptomator.encrypted":{source:"iana"},"application/vnd.cryptomator.vault":{source:"iana"},"application/vnd.ctc-posml":{source:"iana",extensions:["pml"]},"application/vnd.ctct.ws+xml":{source:"iana",compressible:!0},"application/vnd.cups-pdf":{source:"iana"},"application/vnd.cups-postscript":{source:"iana"},"application/vnd.cups-ppd":{source:"iana",extensions:["ppd"]},"application/vnd.cups-raster":{source:"iana"},"application/vnd.cups-raw":{source:"iana"},"application/vnd.curl":{source:"iana"},"application/vnd.curl.car":{source:"apache",extensions:["car"]},"application/vnd.curl.pcurl":{source:"apache",extensions:["pcurl"]},"application/vnd.cyan.dean.root+xml":{source:"iana",compressible:!0},"application/vnd.cybank":{source:"iana"},"application/vnd.cyclonedx+json":{source:"iana",compressible:!0},"application/vnd.cyclonedx+xml":{source:"iana",compressible:!0},"application/vnd.d2l.coursepackage1p0+zip":{source:"iana",compressible:!1},"application/vnd.d3m-dataset":{source:"iana"},"application/vnd.d3m-problem":{source:"iana"},"application/vnd.dart":{source:"iana",compressible:!0,extensions:["dart"]},"application/vnd.data-vision.rdz":{source:"iana",extensions:["rdz"]},"application/vnd.datapackage+json":{source:"iana",compressible:!0},"application/vnd.dataresource+json":{source:"iana",compressible:!0},"application/vnd.dbf":{source:"iana",extensions:["dbf"]},"application/vnd.debian.binary-package":{source:"iana"},"application/vnd.dece.data":{source:"iana",extensions:["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{source:"iana",compressible:!0,extensions:["uvt","uvvt"]},"application/vnd.dece.unspecified":{source:"iana",extensions:["uvx","uvvx"]},"application/vnd.dece.zip":{source:"iana",extensions:["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{source:"iana",extensions:["fe_launch"]},"application/vnd.desmume.movie":{source:"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{source:"iana"},"application/vnd.dm.delegation+xml":{source:"iana",compressible:!0},"application/vnd.dna":{source:"iana",extensions:["dna"]},"application/vnd.document+json":{source:"iana",compressible:!0},"application/vnd.dolby.mlp":{source:"apache",extensions:["mlp"]},"application/vnd.dolby.mobile.1":{source:"iana"},"application/vnd.dolby.mobile.2":{source:"iana"},"application/vnd.doremir.scorecloud-binary-document":{source:"iana"},"application/vnd.dpgraph":{source:"iana",extensions:["dpg"]},"application/vnd.dreamfactory":{source:"iana",extensions:["dfac"]},"application/vnd.drive+json":{source:"iana",compressible:!0},"application/vnd.ds-keypoint":{source:"apache",extensions:["kpxx"]},"application/vnd.dtg.local":{source:"iana"},"application/vnd.dtg.local.flash":{source:"iana"},"application/vnd.dtg.local.html":{source:"iana"},"application/vnd.dvb.ait":{source:"iana",extensions:["ait"]},"application/vnd.dvb.dvbisl+xml":{source:"iana",compressible:!0},"application/vnd.dvb.dvbj":{source:"iana"},"application/vnd.dvb.esgcontainer":{source:"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess2":{source:"iana"},"application/vnd.dvb.ipdcesgpdd":{source:"iana"},"application/vnd.dvb.ipdcroaming":{source:"iana"},"application/vnd.dvb.iptv.alfec-base":{source:"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{source:"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-container+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-generic+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-msglist+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-request+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-response+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-init+xml":{source:"iana",compressible:!0},"application/vnd.dvb.pfr":{source:"iana"},"application/vnd.dvb.service":{source:"iana",extensions:["svc"]},"application/vnd.dxr":{source:"iana"},"application/vnd.dynageo":{source:"iana",extensions:["geo"]},"application/vnd.dzr":{source:"iana"},"application/vnd.easykaraoke.cdgdownload":{source:"iana"},"application/vnd.ecdis-update":{source:"iana"},"application/vnd.ecip.rlp":{source:"iana"},"application/vnd.eclipse.ditto+json":{source:"iana",compressible:!0},"application/vnd.ecowin.chart":{source:"iana",extensions:["mag"]},"application/vnd.ecowin.filerequest":{source:"iana"},"application/vnd.ecowin.fileupdate":{source:"iana"},"application/vnd.ecowin.series":{source:"iana"},"application/vnd.ecowin.seriesrequest":{source:"iana"},"application/vnd.ecowin.seriesupdate":{source:"iana"},"application/vnd.efi.img":{source:"iana"},"application/vnd.efi.iso":{source:"iana"},"application/vnd.emclient.accessrequest+xml":{source:"iana",compressible:!0},"application/vnd.enliven":{source:"iana",extensions:["nml"]},"application/vnd.enphase.envoy":{source:"iana"},"application/vnd.eprints.data+xml":{source:"iana",compressible:!0},"application/vnd.epson.esf":{source:"iana",extensions:["esf"]},"application/vnd.epson.msf":{source:"iana",extensions:["msf"]},"application/vnd.epson.quickanime":{source:"iana",extensions:["qam"]},"application/vnd.epson.salt":{source:"iana",extensions:["slt"]},"application/vnd.epson.ssf":{source:"iana",extensions:["ssf"]},"application/vnd.ericsson.quickcall":{source:"iana"},"application/vnd.espass-espass+zip":{source:"iana",compressible:!1},"application/vnd.eszigno3+xml":{source:"iana",compressible:!0,extensions:["es3","et3"]},"application/vnd.etsi.aoc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.asic-e+zip":{source:"iana",compressible:!1},"application/vnd.etsi.asic-s+zip":{source:"iana",compressible:!1},"application/vnd.etsi.cug+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvcommand+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-bc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-cod+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-npvr+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvservice+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsync+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvueprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mcid+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mheg5":{source:"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{source:"iana",compressible:!0},"application/vnd.etsi.pstn+xml":{source:"iana",compressible:!0},"application/vnd.etsi.sci+xml":{source:"iana",compressible:!0},"application/vnd.etsi.simservs+xml":{source:"iana",compressible:!0},"application/vnd.etsi.timestamp-token":{source:"iana"},"application/vnd.etsi.tsl+xml":{source:"iana",compressible:!0},"application/vnd.etsi.tsl.der":{source:"iana"},"application/vnd.eu.kasparian.car+json":{source:"iana",compressible:!0},"application/vnd.eudora.data":{source:"iana"},"application/vnd.evolv.ecig.profile":{source:"iana"},"application/vnd.evolv.ecig.settings":{source:"iana"},"application/vnd.evolv.ecig.theme":{source:"iana"},"application/vnd.exstream-empower+zip":{source:"iana",compressible:!1},"application/vnd.exstream-package":{source:"iana"},"application/vnd.ezpix-album":{source:"iana",extensions:["ez2"]},"application/vnd.ezpix-package":{source:"iana",extensions:["ez3"]},"application/vnd.f-secure.mobile":{source:"iana"},"application/vnd.familysearch.gedcom+zip":{source:"iana",compressible:!1},"application/vnd.fastcopy-disk-image":{source:"iana"},"application/vnd.fdf":{source:"iana",extensions:["fdf"]},"application/vnd.fdsn.mseed":{source:"iana",extensions:["mseed"]},"application/vnd.fdsn.seed":{source:"iana",extensions:["seed","dataless"]},"application/vnd.ffsns":{source:"iana"},"application/vnd.ficlab.flb+zip":{source:"iana",compressible:!1},"application/vnd.filmit.zfc":{source:"iana"},"application/vnd.fints":{source:"iana"},"application/vnd.firemonkeys.cloudcell":{source:"iana"},"application/vnd.flographit":{source:"iana",extensions:["gph"]},"application/vnd.fluxtime.clip":{source:"iana",extensions:["ftc"]},"application/vnd.font-fontforge-sfd":{source:"iana"},"application/vnd.framemaker":{source:"iana",extensions:["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{source:"iana",extensions:["fnc"]},"application/vnd.frogans.ltf":{source:"iana",extensions:["ltf"]},"application/vnd.fsc.weblaunch":{source:"iana",extensions:["fsc"]},"application/vnd.fujifilm.fb.docuworks":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.container":{source:"iana"},"application/vnd.fujifilm.fb.jfi+xml":{source:"iana",compressible:!0},"application/vnd.fujitsu.oasys":{source:"iana",extensions:["oas"]},"application/vnd.fujitsu.oasys2":{source:"iana",extensions:["oa2"]},"application/vnd.fujitsu.oasys3":{source:"iana",extensions:["oa3"]},"application/vnd.fujitsu.oasysgp":{source:"iana",extensions:["fg5"]},"application/vnd.fujitsu.oasysprs":{source:"iana",extensions:["bh2"]},"application/vnd.fujixerox.art-ex":{source:"iana"},"application/vnd.fujixerox.art4":{source:"iana"},"application/vnd.fujixerox.ddd":{source:"iana",extensions:["ddd"]},"application/vnd.fujixerox.docuworks":{source:"iana",extensions:["xdw"]},"application/vnd.fujixerox.docuworks.binder":{source:"iana",extensions:["xbd"]},"application/vnd.fujixerox.docuworks.container":{source:"iana"},"application/vnd.fujixerox.hbpl":{source:"iana"},"application/vnd.fut-misnet":{source:"iana"},"application/vnd.futoin+cbor":{source:"iana"},"application/vnd.futoin+json":{source:"iana",compressible:!0},"application/vnd.fuzzysheet":{source:"iana",extensions:["fzs"]},"application/vnd.genomatix.tuxedo":{source:"iana",extensions:["txd"]},"application/vnd.gentics.grd+json":{source:"iana",compressible:!0},"application/vnd.geo+json":{source:"iana",compressible:!0},"application/vnd.geocube+xml":{source:"iana",compressible:!0},"application/vnd.geogebra.file":{source:"iana",extensions:["ggb"]},"application/vnd.geogebra.slides":{source:"iana"},"application/vnd.geogebra.tool":{source:"iana",extensions:["ggt"]},"application/vnd.geometry-explorer":{source:"iana",extensions:["gex","gre"]},"application/vnd.geonext":{source:"iana",extensions:["gxt"]},"application/vnd.geoplan":{source:"iana",extensions:["g2w"]},"application/vnd.geospace":{source:"iana",extensions:["g3w"]},"application/vnd.gerber":{source:"iana"},"application/vnd.globalplatform.card-content-mgt":{source:"iana"},"application/vnd.globalplatform.card-content-mgt-response":{source:"iana"},"application/vnd.gmx":{source:"iana",extensions:["gmx"]},"application/vnd.google-apps.document":{compressible:!1,extensions:["gdoc"]},"application/vnd.google-apps.presentation":{compressible:!1,extensions:["gslides"]},"application/vnd.google-apps.spreadsheet":{compressible:!1,extensions:["gsheet"]},"application/vnd.google-earth.kml+xml":{source:"iana",compressible:!0,extensions:["kml"]},"application/vnd.google-earth.kmz":{source:"iana",compressible:!1,extensions:["kmz"]},"application/vnd.gov.sk.e-form+xml":{source:"iana",compressible:!0},"application/vnd.gov.sk.e-form+zip":{source:"iana",compressible:!1},"application/vnd.gov.sk.xmldatacontainer+xml":{source:"iana",compressible:!0},"application/vnd.grafeq":{source:"iana",extensions:["gqf","gqs"]},"application/vnd.gridmp":{source:"iana"},"application/vnd.groove-account":{source:"iana",extensions:["gac"]},"application/vnd.groove-help":{source:"iana",extensions:["ghf"]},"application/vnd.groove-identity-message":{source:"iana",extensions:["gim"]},"application/vnd.groove-injector":{source:"iana",extensions:["grv"]},"application/vnd.groove-tool-message":{source:"iana",extensions:["gtm"]},"application/vnd.groove-tool-template":{source:"iana",extensions:["tpl"]},"application/vnd.groove-vcard":{source:"iana",extensions:["vcg"]},"application/vnd.hal+json":{source:"iana",compressible:!0},"application/vnd.hal+xml":{source:"iana",compressible:!0,extensions:["hal"]},"application/vnd.handheld-entertainment+xml":{source:"iana",compressible:!0,extensions:["zmm"]},"application/vnd.hbci":{source:"iana",extensions:["hbci"]},"application/vnd.hc+json":{source:"iana",compressible:!0},"application/vnd.hcl-bireports":{source:"iana"},"application/vnd.hdt":{source:"iana"},"application/vnd.heroku+json":{source:"iana",compressible:!0},"application/vnd.hhe.lesson-player":{source:"iana",extensions:["les"]},"application/vnd.hl7cda+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.hl7v2+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.hp-hpgl":{source:"iana",extensions:["hpgl"]},"application/vnd.hp-hpid":{source:"iana",extensions:["hpid"]},"application/vnd.hp-hps":{source:"iana",extensions:["hps"]},"application/vnd.hp-jlyt":{source:"iana",extensions:["jlt"]},"application/vnd.hp-pcl":{source:"iana",extensions:["pcl"]},"application/vnd.hp-pclxl":{source:"iana",extensions:["pclxl"]},"application/vnd.httphone":{source:"iana"},"application/vnd.hydrostatix.sof-data":{source:"iana",extensions:["sfd-hdstx"]},"application/vnd.hyper+json":{source:"iana",compressible:!0},"application/vnd.hyper-item+json":{source:"iana",compressible:!0},"application/vnd.hyperdrive+json":{source:"iana",compressible:!0},"application/vnd.hzn-3d-crossword":{source:"iana"},"application/vnd.ibm.afplinedata":{source:"iana"},"application/vnd.ibm.electronic-media":{source:"iana"},"application/vnd.ibm.minipay":{source:"iana",extensions:["mpy"]},"application/vnd.ibm.modcap":{source:"iana",extensions:["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{source:"iana",extensions:["irm"]},"application/vnd.ibm.secure-container":{source:"iana",extensions:["sc"]},"application/vnd.iccprofile":{source:"iana",extensions:["icc","icm"]},"application/vnd.ieee.1905":{source:"iana"},"application/vnd.igloader":{source:"iana",extensions:["igl"]},"application/vnd.imagemeter.folder+zip":{source:"iana",compressible:!1},"application/vnd.imagemeter.image+zip":{source:"iana",compressible:!1},"application/vnd.immervision-ivp":{source:"iana",extensions:["ivp"]},"application/vnd.immervision-ivu":{source:"iana",extensions:["ivu"]},"application/vnd.ims.imsccv1p1":{source:"iana"},"application/vnd.ims.imsccv1p2":{source:"iana"},"application/vnd.ims.imsccv1p3":{source:"iana"},"application/vnd.ims.lis.v2.result+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy.id+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings.simple+json":{source:"iana",compressible:!0},"application/vnd.informedcontrol.rms+xml":{source:"iana",compressible:!0},"application/vnd.informix-visionary":{source:"iana"},"application/vnd.infotech.project":{source:"iana"},"application/vnd.infotech.project+xml":{source:"iana",compressible:!0},"application/vnd.innopath.wamp.notification":{source:"iana"},"application/vnd.insors.igm":{source:"iana",extensions:["igm"]},"application/vnd.intercon.formnet":{source:"iana",extensions:["xpw","xpx"]},"application/vnd.intergeo":{source:"iana",extensions:["i2g"]},"application/vnd.intertrust.digibox":{source:"iana"},"application/vnd.intertrust.nncp":{source:"iana"},"application/vnd.intu.qbo":{source:"iana",extensions:["qbo"]},"application/vnd.intu.qfx":{source:"iana",extensions:["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.conceptitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.knowledgeitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsmessage+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.packageitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.planningitem+xml":{source:"iana",compressible:!0},"application/vnd.ipunplugged.rcprofile":{source:"iana",extensions:["rcprofile"]},"application/vnd.irepository.package+xml":{source:"iana",compressible:!0,extensions:["irp"]},"application/vnd.is-xpr":{source:"iana",extensions:["xpr"]},"application/vnd.isac.fcs":{source:"iana",extensions:["fcs"]},"application/vnd.iso11783-10+zip":{source:"iana",compressible:!1},"application/vnd.jam":{source:"iana",extensions:["jam"]},"application/vnd.japannet-directory-service":{source:"iana"},"application/vnd.japannet-jpnstore-wakeup":{source:"iana"},"application/vnd.japannet-payment-wakeup":{source:"iana"},"application/vnd.japannet-registration":{source:"iana"},"application/vnd.japannet-registration-wakeup":{source:"iana"},"application/vnd.japannet-setstore-wakeup":{source:"iana"},"application/vnd.japannet-verification":{source:"iana"},"application/vnd.japannet-verification-wakeup":{source:"iana"},"application/vnd.jcp.javame.midlet-rms":{source:"iana",extensions:["rms"]},"application/vnd.jisp":{source:"iana",extensions:["jisp"]},"application/vnd.joost.joda-archive":{source:"iana",extensions:["joda"]},"application/vnd.jsk.isdn-ngn":{source:"iana"},"application/vnd.kahootz":{source:"iana",extensions:["ktz","ktr"]},"application/vnd.kde.karbon":{source:"iana",extensions:["karbon"]},"application/vnd.kde.kchart":{source:"iana",extensions:["chrt"]},"application/vnd.kde.kformula":{source:"iana",extensions:["kfo"]},"application/vnd.kde.kivio":{source:"iana",extensions:["flw"]},"application/vnd.kde.kontour":{source:"iana",extensions:["kon"]},"application/vnd.kde.kpresenter":{source:"iana",extensions:["kpr","kpt"]},"application/vnd.kde.kspread":{source:"iana",extensions:["ksp"]},"application/vnd.kde.kword":{source:"iana",extensions:["kwd","kwt"]},"application/vnd.kenameaapp":{source:"iana",extensions:["htke"]},"application/vnd.kidspiration":{source:"iana",extensions:["kia"]},"application/vnd.kinar":{source:"iana",extensions:["kne","knp"]},"application/vnd.koan":{source:"iana",extensions:["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{source:"iana",extensions:["sse"]},"application/vnd.las":{source:"iana"},"application/vnd.las.las+json":{source:"iana",compressible:!0},"application/vnd.las.las+xml":{source:"iana",compressible:!0,extensions:["lasxml"]},"application/vnd.laszip":{source:"iana"},"application/vnd.leap+json":{source:"iana",compressible:!0},"application/vnd.liberty-request+xml":{source:"iana",compressible:!0},"application/vnd.llamagraphics.life-balance.desktop":{source:"iana",extensions:["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{source:"iana",compressible:!0,extensions:["lbe"]},"application/vnd.logipipe.circuit+zip":{source:"iana",compressible:!1},"application/vnd.loom":{source:"iana"},"application/vnd.lotus-1-2-3":{source:"iana",extensions:["123"]},"application/vnd.lotus-approach":{source:"iana",extensions:["apr"]},"application/vnd.lotus-freelance":{source:"iana",extensions:["pre"]},"application/vnd.lotus-notes":{source:"iana",extensions:["nsf"]},"application/vnd.lotus-organizer":{source:"iana",extensions:["org"]},"application/vnd.lotus-screencam":{source:"iana",extensions:["scm"]},"application/vnd.lotus-wordpro":{source:"iana",extensions:["lwp"]},"application/vnd.macports.portpkg":{source:"iana",extensions:["portpkg"]},"application/vnd.mapbox-vector-tile":{source:"iana",extensions:["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.conftoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.license+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.mdcf":{source:"iana"},"application/vnd.mason+json":{source:"iana",compressible:!0},"application/vnd.maxar.archive.3tz+zip":{source:"iana",compressible:!1},"application/vnd.maxmind.maxmind-db":{source:"iana"},"application/vnd.mcd":{source:"iana",extensions:["mcd"]},"application/vnd.medcalcdata":{source:"iana",extensions:["mc1"]},"application/vnd.mediastation.cdkey":{source:"iana",extensions:["cdkey"]},"application/vnd.meridian-slingshot":{source:"iana"},"application/vnd.mfer":{source:"iana",extensions:["mwf"]},"application/vnd.mfmp":{source:"iana",extensions:["mfm"]},"application/vnd.micro+json":{source:"iana",compressible:!0},"application/vnd.micrografx.flo":{source:"iana",extensions:["flo"]},"application/vnd.micrografx.igx":{source:"iana",extensions:["igx"]},"application/vnd.microsoft.portable-executable":{source:"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{source:"iana"},"application/vnd.miele+json":{source:"iana",compressible:!0},"application/vnd.mif":{source:"iana",extensions:["mif"]},"application/vnd.minisoft-hp3000-save":{source:"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{source:"iana"},"application/vnd.mobius.daf":{source:"iana",extensions:["daf"]},"application/vnd.mobius.dis":{source:"iana",extensions:["dis"]},"application/vnd.mobius.mbk":{source:"iana",extensions:["mbk"]},"application/vnd.mobius.mqy":{source:"iana",extensions:["mqy"]},"application/vnd.mobius.msl":{source:"iana",extensions:["msl"]},"application/vnd.mobius.plc":{source:"iana",extensions:["plc"]},"application/vnd.mobius.txf":{source:"iana",extensions:["txf"]},"application/vnd.mophun.application":{source:"iana",extensions:["mpn"]},"application/vnd.mophun.certificate":{source:"iana",extensions:["mpc"]},"application/vnd.motorola.flexsuite":{source:"iana"},"application/vnd.motorola.flexsuite.adsi":{source:"iana"},"application/vnd.motorola.flexsuite.fis":{source:"iana"},"application/vnd.motorola.flexsuite.gotap":{source:"iana"},"application/vnd.motorola.flexsuite.kmr":{source:"iana"},"application/vnd.motorola.flexsuite.ttc":{source:"iana"},"application/vnd.motorola.flexsuite.wem":{source:"iana"},"application/vnd.motorola.iprm":{source:"iana"},"application/vnd.mozilla.xul+xml":{source:"iana",compressible:!0,extensions:["xul"]},"application/vnd.ms-3mfdocument":{source:"iana"},"application/vnd.ms-artgalry":{source:"iana",extensions:["cil"]},"application/vnd.ms-asf":{source:"iana"},"application/vnd.ms-cab-compressed":{source:"iana",extensions:["cab"]},"application/vnd.ms-color.iccprofile":{source:"apache"},"application/vnd.ms-excel":{source:"iana",compressible:!1,extensions:["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{source:"iana",extensions:["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{source:"iana",extensions:["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{source:"iana",extensions:["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{source:"iana",extensions:["xltm"]},"application/vnd.ms-fontobject":{source:"iana",compressible:!0,extensions:["eot"]},"application/vnd.ms-htmlhelp":{source:"iana",extensions:["chm"]},"application/vnd.ms-ims":{source:"iana",extensions:["ims"]},"application/vnd.ms-lrm":{source:"iana",extensions:["lrm"]},"application/vnd.ms-office.activex+xml":{source:"iana",compressible:!0},"application/vnd.ms-officetheme":{source:"iana",extensions:["thmx"]},"application/vnd.ms-opentype":{source:"apache",compressible:!0},"application/vnd.ms-outlook":{compressible:!1,extensions:["msg"]},"application/vnd.ms-package.obfuscated-opentype":{source:"apache"},"application/vnd.ms-pki.seccat":{source:"apache",extensions:["cat"]},"application/vnd.ms-pki.stl":{source:"apache",extensions:["stl"]},"application/vnd.ms-playready.initiator+xml":{source:"iana",compressible:!0},"application/vnd.ms-powerpoint":{source:"iana",compressible:!1,extensions:["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{source:"iana",extensions:["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{source:"iana",extensions:["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{source:"iana",extensions:["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{source:"iana",extensions:["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{source:"iana",extensions:["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{source:"iana",compressible:!0},"application/vnd.ms-printing.printticket+xml":{source:"apache",compressible:!0},"application/vnd.ms-printschematicket+xml":{source:"iana",compressible:!0},"application/vnd.ms-project":{source:"iana",extensions:["mpp","mpt"]},"application/vnd.ms-tnef":{source:"iana"},"application/vnd.ms-windows.devicepairing":{source:"iana"},"application/vnd.ms-windows.nwprinting.oob":{source:"iana"},"application/vnd.ms-windows.printerpairing":{source:"iana"},"application/vnd.ms-windows.wsd.oob":{source:"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.lic-resp":{source:"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.meter-resp":{source:"iana"},"application/vnd.ms-word.document.macroenabled.12":{source:"iana",extensions:["docm"]},"application/vnd.ms-word.template.macroenabled.12":{source:"iana",extensions:["dotm"]},"application/vnd.ms-works":{source:"iana",extensions:["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{source:"iana",extensions:["wpl"]},"application/vnd.ms-xpsdocument":{source:"iana",compressible:!1,extensions:["xps"]},"application/vnd.msa-disk-image":{source:"iana"},"application/vnd.mseq":{source:"iana",extensions:["mseq"]},"application/vnd.msign":{source:"iana"},"application/vnd.multiad.creator":{source:"iana"},"application/vnd.multiad.creator.cif":{source:"iana"},"application/vnd.music-niff":{source:"iana"},"application/vnd.musician":{source:"iana",extensions:["mus"]},"application/vnd.muvee.style":{source:"iana",extensions:["msty"]},"application/vnd.mynfc":{source:"iana",extensions:["taglet"]},"application/vnd.nacamar.ybrid+json":{source:"iana",compressible:!0},"application/vnd.ncd.control":{source:"iana"},"application/vnd.ncd.reference":{source:"iana"},"application/vnd.nearst.inv+json":{source:"iana",compressible:!0},"application/vnd.nebumind.line":{source:"iana"},"application/vnd.nervana":{source:"iana"},"application/vnd.netfpx":{source:"iana"},"application/vnd.neurolanguage.nlu":{source:"iana",extensions:["nlu"]},"application/vnd.nimn":{source:"iana"},"application/vnd.nintendo.nitro.rom":{source:"iana"},"application/vnd.nintendo.snes.rom":{source:"iana"},"application/vnd.nitf":{source:"iana",extensions:["ntf","nitf"]},"application/vnd.noblenet-directory":{source:"iana",extensions:["nnd"]},"application/vnd.noblenet-sealer":{source:"iana",extensions:["nns"]},"application/vnd.noblenet-web":{source:"iana",extensions:["nnw"]},"application/vnd.nokia.catalogs":{source:"iana"},"application/vnd.nokia.conml+wbxml":{source:"iana"},"application/vnd.nokia.conml+xml":{source:"iana",compressible:!0},"application/vnd.nokia.iptv.config+xml":{source:"iana",compressible:!0},"application/vnd.nokia.isds-radio-presets":{source:"iana"},"application/vnd.nokia.landmark+wbxml":{source:"iana"},"application/vnd.nokia.landmark+xml":{source:"iana",compressible:!0},"application/vnd.nokia.landmarkcollection+xml":{source:"iana",compressible:!0},"application/vnd.nokia.n-gage.ac+xml":{source:"iana",compressible:!0,extensions:["ac"]},"application/vnd.nokia.n-gage.data":{source:"iana",extensions:["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{source:"iana",extensions:["n-gage"]},"application/vnd.nokia.ncd":{source:"iana"},"application/vnd.nokia.pcd+wbxml":{source:"iana"},"application/vnd.nokia.pcd+xml":{source:"iana",compressible:!0},"application/vnd.nokia.radio-preset":{source:"iana",extensions:["rpst"]},"application/vnd.nokia.radio-presets":{source:"iana",extensions:["rpss"]},"application/vnd.novadigm.edm":{source:"iana",extensions:["edm"]},"application/vnd.novadigm.edx":{source:"iana",extensions:["edx"]},"application/vnd.novadigm.ext":{source:"iana",extensions:["ext"]},"application/vnd.ntt-local.content-share":{source:"iana"},"application/vnd.ntt-local.file-transfer":{source:"iana"},"application/vnd.ntt-local.ogw_remote-access":{source:"iana"},"application/vnd.ntt-local.sip-ta_remote":{source:"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{source:"iana"},"application/vnd.oasis.opendocument.chart":{source:"iana",extensions:["odc"]},"application/vnd.oasis.opendocument.chart-template":{source:"iana",extensions:["otc"]},"application/vnd.oasis.opendocument.database":{source:"iana",extensions:["odb"]},"application/vnd.oasis.opendocument.formula":{source:"iana",extensions:["odf"]},"application/vnd.oasis.opendocument.formula-template":{source:"iana",extensions:["odft"]},"application/vnd.oasis.opendocument.graphics":{source:"iana",compressible:!1,extensions:["odg"]},"application/vnd.oasis.opendocument.graphics-template":{source:"iana",extensions:["otg"]},"application/vnd.oasis.opendocument.image":{source:"iana",extensions:["odi"]},"application/vnd.oasis.opendocument.image-template":{source:"iana",extensions:["oti"]},"application/vnd.oasis.opendocument.presentation":{source:"iana",compressible:!1,extensions:["odp"]},"application/vnd.oasis.opendocument.presentation-template":{source:"iana",extensions:["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{source:"iana",compressible:!1,extensions:["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{source:"iana",extensions:["ots"]},"application/vnd.oasis.opendocument.text":{source:"iana",compressible:!1,extensions:["odt"]},"application/vnd.oasis.opendocument.text-master":{source:"iana",extensions:["odm"]},"application/vnd.oasis.opendocument.text-template":{source:"iana",extensions:["ott"]},"application/vnd.oasis.opendocument.text-web":{source:"iana",extensions:["oth"]},"application/vnd.obn":{source:"iana"},"application/vnd.ocf+cbor":{source:"iana"},"application/vnd.oci.image.manifest.v1+json":{source:"iana",compressible:!0},"application/vnd.oftn.l10n+json":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessdownload+xml":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessstreaming+xml":{source:"iana",compressible:!0},"application/vnd.oipf.cspg-hexbinary":{source:"iana"},"application/vnd.oipf.dae.svg+xml":{source:"iana",compressible:!0},"application/vnd.oipf.dae.xhtml+xml":{source:"iana",compressible:!0},"application/vnd.oipf.mippvcontrolmessage+xml":{source:"iana",compressible:!0},"application/vnd.oipf.pae.gem":{source:"iana"},"application/vnd.oipf.spdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.oipf.spdlist+xml":{source:"iana",compressible:!0},"application/vnd.oipf.ueprofile+xml":{source:"iana",compressible:!0},"application/vnd.oipf.userprofile+xml":{source:"iana",compressible:!0},"application/vnd.olpc-sugar":{source:"iana",extensions:["xo"]},"application/vnd.oma-scws-config":{source:"iana"},"application/vnd.oma-scws-http-request":{source:"iana"},"application/vnd.oma-scws-http-response":{source:"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.drm-trigger+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.imd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.ltkm":{source:"iana"},"application/vnd.oma.bcast.notification+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.provisioningtrigger":{source:"iana"},"application/vnd.oma.bcast.sgboot":{source:"iana"},"application/vnd.oma.bcast.sgdd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sgdu":{source:"iana"},"application/vnd.oma.bcast.simple-symbol-container":{source:"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sprov+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.stkm":{source:"iana"},"application/vnd.oma.cab-address-book+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-feature-handler+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-pcc+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-subs-invite+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-user-prefs+xml":{source:"iana",compressible:!0},"application/vnd.oma.dcd":{source:"iana"},"application/vnd.oma.dcdc":{source:"iana"},"application/vnd.oma.dd2+xml":{source:"iana",compressible:!0,extensions:["dd2"]},"application/vnd.oma.drm.risd+xml":{source:"iana",compressible:!0},"application/vnd.oma.group-usage-list+xml":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+cbor":{source:"iana"},"application/vnd.oma.lwm2m+json":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+tlv":{source:"iana"},"application/vnd.oma.pal+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.detailed-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.final-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.groups+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.invocation-descriptor+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.optimized-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.push":{source:"iana"},"application/vnd.oma.scidm.messages+xml":{source:"iana",compressible:!0},"application/vnd.oma.xcap-directory+xml":{source:"iana",compressible:!0},"application/vnd.omads-email+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-file+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-folder+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omaloc-supl-init":{source:"iana"},"application/vnd.onepager":{source:"iana"},"application/vnd.onepagertamp":{source:"iana"},"application/vnd.onepagertamx":{source:"iana"},"application/vnd.onepagertat":{source:"iana"},"application/vnd.onepagertatp":{source:"iana"},"application/vnd.onepagertatx":{source:"iana"},"application/vnd.openblox.game+xml":{source:"iana",compressible:!0,extensions:["obgx"]},"application/vnd.openblox.game-binary":{source:"iana"},"application/vnd.openeye.oeb":{source:"iana"},"application/vnd.openofficeorg.extension":{source:"apache",extensions:["oxt"]},"application/vnd.openstreetmap.data+xml":{source:"iana",compressible:!0,extensions:["osm"]},"application/vnd.opentimestamps.ots":{source:"iana"},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawing+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{source:"iana",compressible:!1,extensions:["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slide":{source:"iana",extensions:["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{source:"iana",extensions:["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.template":{source:"iana",extensions:["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{source:"iana",compressible:!1,extensions:["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{source:"iana",extensions:["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.theme+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.vmldrawing":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{source:"iana",compressible:!1,extensions:["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{source:"iana",extensions:["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.core-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.relationships+xml":{source:"iana",compressible:!0},"application/vnd.oracle.resource+json":{source:"iana",compressible:!0},"application/vnd.orange.indata":{source:"iana"},"application/vnd.osa.netdeploy":{source:"iana"},"application/vnd.osgeo.mapguide.package":{source:"iana",extensions:["mgp"]},"application/vnd.osgi.bundle":{source:"iana"},"application/vnd.osgi.dp":{source:"iana",extensions:["dp"]},"application/vnd.osgi.subsystem":{source:"iana",extensions:["esa"]},"application/vnd.otps.ct-kip+xml":{source:"iana",compressible:!0},"application/vnd.oxli.countgraph":{source:"iana"},"application/vnd.pagerduty+json":{source:"iana",compressible:!0},"application/vnd.palm":{source:"iana",extensions:["pdb","pqa","oprc"]},"application/vnd.panoply":{source:"iana"},"application/vnd.paos.xml":{source:"iana"},"application/vnd.patentdive":{source:"iana"},"application/vnd.patientecommsdoc":{source:"iana"},"application/vnd.pawaafile":{source:"iana",extensions:["paw"]},"application/vnd.pcos":{source:"iana"},"application/vnd.pg.format":{source:"iana",extensions:["str"]},"application/vnd.pg.osasli":{source:"iana",extensions:["ei6"]},"application/vnd.piaccess.application-licence":{source:"iana"},"application/vnd.picsel":{source:"iana",extensions:["efif"]},"application/vnd.pmi.widget":{source:"iana",extensions:["wg"]},"application/vnd.poc.group-advertisement+xml":{source:"iana",compressible:!0},"application/vnd.pocketlearn":{source:"iana",extensions:["plf"]},"application/vnd.powerbuilder6":{source:"iana",extensions:["pbd"]},"application/vnd.powerbuilder6-s":{source:"iana"},"application/vnd.powerbuilder7":{source:"iana"},"application/vnd.powerbuilder7-s":{source:"iana"},"application/vnd.powerbuilder75":{source:"iana"},"application/vnd.powerbuilder75-s":{source:"iana"},"application/vnd.preminet":{source:"iana"},"application/vnd.previewsystems.box":{source:"iana",extensions:["box"]},"application/vnd.proteus.magazine":{source:"iana",extensions:["mgz"]},"application/vnd.psfs":{source:"iana"},"application/vnd.publishare-delta-tree":{source:"iana",extensions:["qps"]},"application/vnd.pvi.ptid1":{source:"iana",extensions:["ptid"]},"application/vnd.pwg-multiplexed":{source:"iana"},"application/vnd.pwg-xhtml-print+xml":{source:"iana",compressible:!0},"application/vnd.qualcomm.brew-app-res":{source:"iana"},"application/vnd.quarantainenet":{source:"iana"},"application/vnd.quark.quarkxpress":{source:"iana",extensions:["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{source:"iana"},"application/vnd.radisys.moml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conn+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-stream+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-base+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-detect+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-group+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-speech+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-transform+xml":{source:"iana",compressible:!0},"application/vnd.rainstor.data":{source:"iana"},"application/vnd.rapid":{source:"iana"},"application/vnd.rar":{source:"iana",extensions:["rar"]},"application/vnd.realvnc.bed":{source:"iana",extensions:["bed"]},"application/vnd.recordare.musicxml":{source:"iana",extensions:["mxl"]},"application/vnd.recordare.musicxml+xml":{source:"iana",compressible:!0,extensions:["musicxml"]},"application/vnd.renlearn.rlprint":{source:"iana"},"application/vnd.resilient.logic":{source:"iana"},"application/vnd.restful+json":{source:"iana",compressible:!0},"application/vnd.rig.cryptonote":{source:"iana",extensions:["cryptonote"]},"application/vnd.rim.cod":{source:"apache",extensions:["cod"]},"application/vnd.rn-realmedia":{source:"apache",extensions:["rm"]},"application/vnd.rn-realmedia-vbr":{source:"apache",extensions:["rmvb"]},"application/vnd.route66.link66+xml":{source:"iana",compressible:!0,extensions:["link66"]},"application/vnd.rs-274x":{source:"iana"},"application/vnd.ruckus.download":{source:"iana"},"application/vnd.s3sms":{source:"iana"},"application/vnd.sailingtracker.track":{source:"iana",extensions:["st"]},"application/vnd.sar":{source:"iana"},"application/vnd.sbm.cid":{source:"iana"},"application/vnd.sbm.mid2":{source:"iana"},"application/vnd.scribus":{source:"iana"},"application/vnd.sealed.3df":{source:"iana"},"application/vnd.sealed.csf":{source:"iana"},"application/vnd.sealed.doc":{source:"iana"},"application/vnd.sealed.eml":{source:"iana"},"application/vnd.sealed.mht":{source:"iana"},"application/vnd.sealed.net":{source:"iana"},"application/vnd.sealed.ppt":{source:"iana"},"application/vnd.sealed.tiff":{source:"iana"},"application/vnd.sealed.xls":{source:"iana"},"application/vnd.sealedmedia.softseal.html":{source:"iana"},"application/vnd.sealedmedia.softseal.pdf":{source:"iana"},"application/vnd.seemail":{source:"iana",extensions:["see"]},"application/vnd.seis+json":{source:"iana",compressible:!0},"application/vnd.sema":{source:"iana",extensions:["sema"]},"application/vnd.semd":{source:"iana",extensions:["semd"]},"application/vnd.semf":{source:"iana",extensions:["semf"]},"application/vnd.shade-save-file":{source:"iana"},"application/vnd.shana.informed.formdata":{source:"iana",extensions:["ifm"]},"application/vnd.shana.informed.formtemplate":{source:"iana",extensions:["itp"]},"application/vnd.shana.informed.interchange":{source:"iana",extensions:["iif"]},"application/vnd.shana.informed.package":{source:"iana",extensions:["ipk"]},"application/vnd.shootproof+json":{source:"iana",compressible:!0},"application/vnd.shopkick+json":{source:"iana",compressible:!0},"application/vnd.shp":{source:"iana"},"application/vnd.shx":{source:"iana"},"application/vnd.sigrok.session":{source:"iana"},"application/vnd.simtech-mindmapper":{source:"iana",extensions:["twd","twds"]},"application/vnd.siren+json":{source:"iana",compressible:!0},"application/vnd.smaf":{source:"iana",extensions:["mmf"]},"application/vnd.smart.notebook":{source:"iana"},"application/vnd.smart.teacher":{source:"iana",extensions:["teacher"]},"application/vnd.snesdev-page-table":{source:"iana"},"application/vnd.software602.filler.form+xml":{source:"iana",compressible:!0,extensions:["fo"]},"application/vnd.software602.filler.form-xml-zip":{source:"iana"},"application/vnd.solent.sdkm+xml":{source:"iana",compressible:!0,extensions:["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{source:"iana",extensions:["dxp"]},"application/vnd.spotfire.sfs":{source:"iana",extensions:["sfs"]},"application/vnd.sqlite3":{source:"iana"},"application/vnd.sss-cod":{source:"iana"},"application/vnd.sss-dtf":{source:"iana"},"application/vnd.sss-ntf":{source:"iana"},"application/vnd.stardivision.calc":{source:"apache",extensions:["sdc"]},"application/vnd.stardivision.draw":{source:"apache",extensions:["sda"]},"application/vnd.stardivision.impress":{source:"apache",extensions:["sdd"]},"application/vnd.stardivision.math":{source:"apache",extensions:["smf"]},"application/vnd.stardivision.writer":{source:"apache",extensions:["sdw","vor"]},"application/vnd.stardivision.writer-global":{source:"apache",extensions:["sgl"]},"application/vnd.stepmania.package":{source:"iana",extensions:["smzip"]},"application/vnd.stepmania.stepchart":{source:"iana",extensions:["sm"]},"application/vnd.street-stream":{source:"iana"},"application/vnd.sun.wadl+xml":{source:"iana",compressible:!0,extensions:["wadl"]},"application/vnd.sun.xml.calc":{source:"apache",extensions:["sxc"]},"application/vnd.sun.xml.calc.template":{source:"apache",extensions:["stc"]},"application/vnd.sun.xml.draw":{source:"apache",extensions:["sxd"]},"application/vnd.sun.xml.draw.template":{source:"apache",extensions:["std"]},"application/vnd.sun.xml.impress":{source:"apache",extensions:["sxi"]},"application/vnd.sun.xml.impress.template":{source:"apache",extensions:["sti"]},"application/vnd.sun.xml.math":{source:"apache",extensions:["sxm"]},"application/vnd.sun.xml.writer":{source:"apache",extensions:["sxw"]},"application/vnd.sun.xml.writer.global":{source:"apache",extensions:["sxg"]},"application/vnd.sun.xml.writer.template":{source:"apache",extensions:["stw"]},"application/vnd.sus-calendar":{source:"iana",extensions:["sus","susp"]},"application/vnd.svd":{source:"iana",extensions:["svd"]},"application/vnd.swiftview-ics":{source:"iana"},"application/vnd.sycle+xml":{source:"iana",compressible:!0},"application/vnd.syft+json":{source:"iana",compressible:!0},"application/vnd.symbian.install":{source:"apache",extensions:["sis","sisx"]},"application/vnd.syncml+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xsm"]},"application/vnd.syncml.dm+wbxml":{source:"iana",charset:"UTF-8",extensions:["bdm"]},"application/vnd.syncml.dm+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xdm"]},"application/vnd.syncml.dm.notification":{source:"iana"},"application/vnd.syncml.dmddf+wbxml":{source:"iana"},"application/vnd.syncml.dmddf+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{source:"iana"},"application/vnd.syncml.dmtnds+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.syncml.ds.notification":{source:"iana"},"application/vnd.tableschema+json":{source:"iana",compressible:!0},"application/vnd.tao.intent-module-archive":{source:"iana",extensions:["tao"]},"application/vnd.tcpdump.pcap":{source:"iana",extensions:["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{source:"iana",compressible:!0},"application/vnd.tmd.mediaflex.api+xml":{source:"iana",compressible:!0},"application/vnd.tml":{source:"iana"},"application/vnd.tmobile-livetv":{source:"iana",extensions:["tmo"]},"application/vnd.tri.onesource":{source:"iana"},"application/vnd.trid.tpt":{source:"iana",extensions:["tpt"]},"application/vnd.triscape.mxs":{source:"iana",extensions:["mxs"]},"application/vnd.trueapp":{source:"iana",extensions:["tra"]},"application/vnd.truedoc":{source:"iana"},"application/vnd.ubisoft.webplayer":{source:"iana"},"application/vnd.ufdl":{source:"iana",extensions:["ufd","ufdl"]},"application/vnd.uiq.theme":{source:"iana",extensions:["utz"]},"application/vnd.umajin":{source:"iana",extensions:["umj"]},"application/vnd.unity":{source:"iana",extensions:["unityweb"]},"application/vnd.uoml+xml":{source:"iana",compressible:!0,extensions:["uoml"]},"application/vnd.uplanet.alert":{source:"iana"},"application/vnd.uplanet.alert-wbxml":{source:"iana"},"application/vnd.uplanet.bearer-choice":{source:"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{source:"iana"},"application/vnd.uplanet.cacheop":{source:"iana"},"application/vnd.uplanet.cacheop-wbxml":{source:"iana"},"application/vnd.uplanet.channel":{source:"iana"},"application/vnd.uplanet.channel-wbxml":{source:"iana"},"application/vnd.uplanet.list":{source:"iana"},"application/vnd.uplanet.list-wbxml":{source:"iana"},"application/vnd.uplanet.listcmd":{source:"iana"},"application/vnd.uplanet.listcmd-wbxml":{source:"iana"},"application/vnd.uplanet.signal":{source:"iana"},"application/vnd.uri-map":{source:"iana"},"application/vnd.valve.source.material":{source:"iana"},"application/vnd.vcx":{source:"iana",extensions:["vcx"]},"application/vnd.vd-study":{source:"iana"},"application/vnd.vectorworks":{source:"iana"},"application/vnd.vel+json":{source:"iana",compressible:!0},"application/vnd.verimatrix.vcas":{source:"iana"},"application/vnd.veritone.aion+json":{source:"iana",compressible:!0},"application/vnd.veryant.thin":{source:"iana"},"application/vnd.ves.encrypted":{source:"iana"},"application/vnd.vidsoft.vidconference":{source:"iana"},"application/vnd.visio":{source:"iana",extensions:["vsd","vst","vss","vsw"]},"application/vnd.visionary":{source:"iana",extensions:["vis"]},"application/vnd.vividence.scriptfile":{source:"iana"},"application/vnd.vsf":{source:"iana",extensions:["vsf"]},"application/vnd.wap.sic":{source:"iana"},"application/vnd.wap.slc":{source:"iana"},"application/vnd.wap.wbxml":{source:"iana",charset:"UTF-8",extensions:["wbxml"]},"application/vnd.wap.wmlc":{source:"iana",extensions:["wmlc"]},"application/vnd.wap.wmlscriptc":{source:"iana",extensions:["wmlsc"]},"application/vnd.webturbo":{source:"iana",extensions:["wtb"]},"application/vnd.wfa.dpp":{source:"iana"},"application/vnd.wfa.p2p":{source:"iana"},"application/vnd.wfa.wsc":{source:"iana"},"application/vnd.windows.devicepairing":{source:"iana"},"application/vnd.wmc":{source:"iana"},"application/vnd.wmf.bootstrap":{source:"iana"},"application/vnd.wolfram.mathematica":{source:"iana"},"application/vnd.wolfram.mathematica.package":{source:"iana"},"application/vnd.wolfram.player":{source:"iana",extensions:["nbp"]},"application/vnd.wordperfect":{source:"iana",extensions:["wpd"]},"application/vnd.wqd":{source:"iana",extensions:["wqd"]},"application/vnd.wrq-hp3000-labelled":{source:"iana"},"application/vnd.wt.stf":{source:"iana",extensions:["stf"]},"application/vnd.wv.csp+wbxml":{source:"iana"},"application/vnd.wv.csp+xml":{source:"iana",compressible:!0},"application/vnd.wv.ssp+xml":{source:"iana",compressible:!0},"application/vnd.xacml+json":{source:"iana",compressible:!0},"application/vnd.xara":{source:"iana",extensions:["xar"]},"application/vnd.xfdl":{source:"iana",extensions:["xfdl"]},"application/vnd.xfdl.webform":{source:"iana"},"application/vnd.xmi+xml":{source:"iana",compressible:!0},"application/vnd.xmpie.cpkg":{source:"iana"},"application/vnd.xmpie.dpkg":{source:"iana"},"application/vnd.xmpie.plan":{source:"iana"},"application/vnd.xmpie.ppkg":{source:"iana"},"application/vnd.xmpie.xlim":{source:"iana"},"application/vnd.yamaha.hv-dic":{source:"iana",extensions:["hvd"]},"application/vnd.yamaha.hv-script":{source:"iana",extensions:["hvs"]},"application/vnd.yamaha.hv-voice":{source:"iana",extensions:["hvp"]},"application/vnd.yamaha.openscoreformat":{source:"iana",extensions:["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{source:"iana",compressible:!0,extensions:["osfpvg"]},"application/vnd.yamaha.remote-setup":{source:"iana"},"application/vnd.yamaha.smaf-audio":{source:"iana",extensions:["saf"]},"application/vnd.yamaha.smaf-phrase":{source:"iana",extensions:["spf"]},"application/vnd.yamaha.through-ngn":{source:"iana"},"application/vnd.yamaha.tunnel-udpencap":{source:"iana"},"application/vnd.yaoweme":{source:"iana"},"application/vnd.yellowriver-custom-menu":{source:"iana",extensions:["cmp"]},"application/vnd.youtube.yt":{source:"iana"},"application/vnd.zul":{source:"iana",extensions:["zir","zirz"]},"application/vnd.zzazz.deck+xml":{source:"iana",compressible:!0,extensions:["zaz"]},"application/voicexml+xml":{source:"iana",compressible:!0,extensions:["vxml"]},"application/voucher-cms+json":{source:"iana",compressible:!0},"application/vq-rtcpxr":{source:"iana"},"application/wasm":{source:"iana",compressible:!0,extensions:["wasm"]},"application/watcherinfo+xml":{source:"iana",compressible:!0,extensions:["wif"]},"application/webpush-options+json":{source:"iana",compressible:!0},"application/whoispp-query":{source:"iana"},"application/whoispp-response":{source:"iana"},"application/widget":{source:"iana",extensions:["wgt"]},"application/winhlp":{source:"apache",extensions:["hlp"]},"application/wita":{source:"iana"},"application/wordperfect5.1":{source:"iana"},"application/wsdl+xml":{source:"iana",compressible:!0,extensions:["wsdl"]},"application/wspolicy+xml":{source:"iana",compressible:!0,extensions:["wspolicy"]},"application/x-7z-compressed":{source:"apache",compressible:!1,extensions:["7z"]},"application/x-abiword":{source:"apache",extensions:["abw"]},"application/x-ace-compressed":{source:"apache",extensions:["ace"]},"application/x-amf":{source:"apache"},"application/x-apple-diskimage":{source:"apache",extensions:["dmg"]},"application/x-arj":{compressible:!1,extensions:["arj"]},"application/x-authorware-bin":{source:"apache",extensions:["aab","x32","u32","vox"]},"application/x-authorware-map":{source:"apache",extensions:["aam"]},"application/x-authorware-seg":{source:"apache",extensions:["aas"]},"application/x-bcpio":{source:"apache",extensions:["bcpio"]},"application/x-bdoc":{compressible:!1,extensions:["bdoc"]},"application/x-bittorrent":{source:"apache",extensions:["torrent"]},"application/x-blorb":{source:"apache",extensions:["blb","blorb"]},"application/x-bzip":{source:"apache",compressible:!1,extensions:["bz"]},"application/x-bzip2":{source:"apache",compressible:!1,extensions:["bz2","boz"]},"application/x-cbr":{source:"apache",extensions:["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{source:"apache",extensions:["vcd"]},"application/x-cfs-compressed":{source:"apache",extensions:["cfs"]},"application/x-chat":{source:"apache",extensions:["chat"]},"application/x-chess-pgn":{source:"apache",extensions:["pgn"]},"application/x-chrome-extension":{extensions:["crx"]},"application/x-cocoa":{source:"nginx",extensions:["cco"]},"application/x-compress":{source:"apache"},"application/x-conference":{source:"apache",extensions:["nsc"]},"application/x-cpio":{source:"apache",extensions:["cpio"]},"application/x-csh":{source:"apache",extensions:["csh"]},"application/x-deb":{compressible:!1},"application/x-debian-package":{source:"apache",extensions:["deb","udeb"]},"application/x-dgc-compressed":{source:"apache",extensions:["dgc"]},"application/x-director":{source:"apache",extensions:["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{source:"apache",extensions:["wad"]},"application/x-dtbncx+xml":{source:"apache",compressible:!0,extensions:["ncx"]},"application/x-dtbook+xml":{source:"apache",compressible:!0,extensions:["dtb"]},"application/x-dtbresource+xml":{source:"apache",compressible:!0,extensions:["res"]},"application/x-dvi":{source:"apache",compressible:!1,extensions:["dvi"]},"application/x-envoy":{source:"apache",extensions:["evy"]},"application/x-eva":{source:"apache",extensions:["eva"]},"application/x-font-bdf":{source:"apache",extensions:["bdf"]},"application/x-font-dos":{source:"apache"},"application/x-font-framemaker":{source:"apache"},"application/x-font-ghostscript":{source:"apache",extensions:["gsf"]},"application/x-font-libgrx":{source:"apache"},"application/x-font-linux-psf":{source:"apache",extensions:["psf"]},"application/x-font-pcf":{source:"apache",extensions:["pcf"]},"application/x-font-snf":{source:"apache",extensions:["snf"]},"application/x-font-speedo":{source:"apache"},"application/x-font-sunos-news":{source:"apache"},"application/x-font-type1":{source:"apache",extensions:["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{source:"apache"},"application/x-freearc":{source:"apache",extensions:["arc"]},"application/x-futuresplash":{source:"apache",extensions:["spl"]},"application/x-gca-compressed":{source:"apache",extensions:["gca"]},"application/x-glulx":{source:"apache",extensions:["ulx"]},"application/x-gnumeric":{source:"apache",extensions:["gnumeric"]},"application/x-gramps-xml":{source:"apache",extensions:["gramps"]},"application/x-gtar":{source:"apache",extensions:["gtar"]},"application/x-gzip":{source:"apache"},"application/x-hdf":{source:"apache",extensions:["hdf"]},"application/x-httpd-php":{compressible:!0,extensions:["php"]},"application/x-install-instructions":{source:"apache",extensions:["install"]},"application/x-iso9660-image":{source:"apache",extensions:["iso"]},"application/x-iwork-keynote-sffkey":{extensions:["key"]},"application/x-iwork-numbers-sffnumbers":{extensions:["numbers"]},"application/x-iwork-pages-sffpages":{extensions:["pages"]},"application/x-java-archive-diff":{source:"nginx",extensions:["jardiff"]},"application/x-java-jnlp-file":{source:"apache",compressible:!1,extensions:["jnlp"]},"application/x-javascript":{compressible:!0},"application/x-keepass2":{extensions:["kdbx"]},"application/x-latex":{source:"apache",compressible:!1,extensions:["latex"]},"application/x-lua-bytecode":{extensions:["luac"]},"application/x-lzh-compressed":{source:"apache",extensions:["lzh","lha"]},"application/x-makeself":{source:"nginx",extensions:["run"]},"application/x-mie":{source:"apache",extensions:["mie"]},"application/x-mobipocket-ebook":{source:"apache",extensions:["prc","mobi"]},"application/x-mpegurl":{compressible:!1},"application/x-ms-application":{source:"apache",extensions:["application"]},"application/x-ms-shortcut":{source:"apache",extensions:["lnk"]},"application/x-ms-wmd":{source:"apache",extensions:["wmd"]},"application/x-ms-wmz":{source:"apache",extensions:["wmz"]},"application/x-ms-xbap":{source:"apache",extensions:["xbap"]},"application/x-msaccess":{source:"apache",extensions:["mdb"]},"application/x-msbinder":{source:"apache",extensions:["obd"]},"application/x-mscardfile":{source:"apache",extensions:["crd"]},"application/x-msclip":{source:"apache",extensions:["clp"]},"application/x-msdos-program":{extensions:["exe"]},"application/x-msdownload":{source:"apache",extensions:["exe","dll","com","bat","msi"]},"application/x-msmediaview":{source:"apache",extensions:["mvb","m13","m14"]},"application/x-msmetafile":{source:"apache",extensions:["wmf","wmz","emf","emz"]},"application/x-msmoney":{source:"apache",extensions:["mny"]},"application/x-mspublisher":{source:"apache",extensions:["pub"]},"application/x-msschedule":{source:"apache",extensions:["scd"]},"application/x-msterminal":{source:"apache",extensions:["trm"]},"application/x-mswrite":{source:"apache",extensions:["wri"]},"application/x-netcdf":{source:"apache",extensions:["nc","cdf"]},"application/x-ns-proxy-autoconfig":{compressible:!0,extensions:["pac"]},"application/x-nzb":{source:"apache",extensions:["nzb"]},"application/x-perl":{source:"nginx",extensions:["pl","pm"]},"application/x-pilot":{source:"nginx",extensions:["prc","pdb"]},"application/x-pkcs12":{source:"apache",compressible:!1,extensions:["p12","pfx"]},"application/x-pkcs7-certificates":{source:"apache",extensions:["p7b","spc"]},"application/x-pkcs7-certreqresp":{source:"apache",extensions:["p7r"]},"application/x-pki-message":{source:"iana"},"application/x-rar-compressed":{source:"apache",compressible:!1,extensions:["rar"]},"application/x-redhat-package-manager":{source:"nginx",extensions:["rpm"]},"application/x-research-info-systems":{source:"apache",extensions:["ris"]},"application/x-sea":{source:"nginx",extensions:["sea"]},"application/x-sh":{source:"apache",compressible:!0,extensions:["sh"]},"application/x-shar":{source:"apache",extensions:["shar"]},"application/x-shockwave-flash":{source:"apache",compressible:!1,extensions:["swf"]},"application/x-silverlight-app":{source:"apache",extensions:["xap"]},"application/x-sql":{source:"apache",extensions:["sql"]},"application/x-stuffit":{source:"apache",compressible:!1,extensions:["sit"]},"application/x-stuffitx":{source:"apache",extensions:["sitx"]},"application/x-subrip":{source:"apache",extensions:["srt"]},"application/x-sv4cpio":{source:"apache",extensions:["sv4cpio"]},"application/x-sv4crc":{source:"apache",extensions:["sv4crc"]},"application/x-t3vm-image":{source:"apache",extensions:["t3"]},"application/x-tads":{source:"apache",extensions:["gam"]},"application/x-tar":{source:"apache",compressible:!0,extensions:["tar"]},"application/x-tcl":{source:"apache",extensions:["tcl","tk"]},"application/x-tex":{source:"apache",extensions:["tex"]},"application/x-tex-tfm":{source:"apache",extensions:["tfm"]},"application/x-texinfo":{source:"apache",extensions:["texinfo","texi"]},"application/x-tgif":{source:"apache",extensions:["obj"]},"application/x-ustar":{source:"apache",extensions:["ustar"]},"application/x-virtualbox-hdd":{compressible:!0,extensions:["hdd"]},"application/x-virtualbox-ova":{compressible:!0,extensions:["ova"]},"application/x-virtualbox-ovf":{compressible:!0,extensions:["ovf"]},"application/x-virtualbox-vbox":{compressible:!0,extensions:["vbox"]},"application/x-virtualbox-vbox-extpack":{compressible:!1,extensions:["vbox-extpack"]},"application/x-virtualbox-vdi":{compressible:!0,extensions:["vdi"]},"application/x-virtualbox-vhd":{compressible:!0,extensions:["vhd"]},"application/x-virtualbox-vmdk":{compressible:!0,extensions:["vmdk"]},"application/x-wais-source":{source:"apache",extensions:["src"]},"application/x-web-app-manifest+json":{compressible:!0,extensions:["webapp"]},"application/x-www-form-urlencoded":{source:"iana",compressible:!0},"application/x-x509-ca-cert":{source:"iana",extensions:["der","crt","pem"]},"application/x-x509-ca-ra-cert":{source:"iana"},"application/x-x509-next-ca-cert":{source:"iana"},"application/x-xfig":{source:"apache",extensions:["fig"]},"application/x-xliff+xml":{source:"apache",compressible:!0,extensions:["xlf"]},"application/x-xpinstall":{source:"apache",compressible:!1,extensions:["xpi"]},"application/x-xz":{source:"apache",extensions:["xz"]},"application/x-zmachine":{source:"apache",extensions:["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{source:"iana"},"application/xacml+xml":{source:"iana",compressible:!0},"application/xaml+xml":{source:"apache",compressible:!0,extensions:["xaml"]},"application/xcap-att+xml":{source:"iana",compressible:!0,extensions:["xav"]},"application/xcap-caps+xml":{source:"iana",compressible:!0,extensions:["xca"]},"application/xcap-diff+xml":{source:"iana",compressible:!0,extensions:["xdf"]},"application/xcap-el+xml":{source:"iana",compressible:!0,extensions:["xel"]},"application/xcap-error+xml":{source:"iana",compressible:!0},"application/xcap-ns+xml":{source:"iana",compressible:!0,extensions:["xns"]},"application/xcon-conference-info+xml":{source:"iana",compressible:!0},"application/xcon-conference-info-diff+xml":{source:"iana",compressible:!0},"application/xenc+xml":{source:"iana",compressible:!0,extensions:["xenc"]},"application/xhtml+xml":{source:"iana",compressible:!0,extensions:["xhtml","xht"]},"application/xhtml-voice+xml":{source:"apache",compressible:!0},"application/xliff+xml":{source:"iana",compressible:!0,extensions:["xlf"]},"application/xml":{source:"iana",compressible:!0,extensions:["xml","xsl","xsd","rng"]},"application/xml-dtd":{source:"iana",compressible:!0,extensions:["dtd"]},"application/xml-external-parsed-entity":{source:"iana"},"application/xml-patch+xml":{source:"iana",compressible:!0},"application/xmpp+xml":{source:"iana",compressible:!0},"application/xop+xml":{source:"iana",compressible:!0,extensions:["xop"]},"application/xproc+xml":{source:"apache",compressible:!0,extensions:["xpl"]},"application/xslt+xml":{source:"iana",compressible:!0,extensions:["xsl","xslt"]},"application/xspf+xml":{source:"apache",compressible:!0,extensions:["xspf"]},"application/xv+xml":{source:"iana",compressible:!0,extensions:["mxml","xhvml","xvml","xvm"]},"application/yang":{source:"iana",extensions:["yang"]},"application/yang-data+json":{source:"iana",compressible:!0},"application/yang-data+xml":{source:"iana",compressible:!0},"application/yang-patch+json":{source:"iana",compressible:!0},"application/yang-patch+xml":{source:"iana",compressible:!0},"application/yin+xml":{source:"iana",compressible:!0,extensions:["yin"]},"application/zip":{source:"iana",compressible:!1,extensions:["zip"]},"application/zlib":{source:"iana"},"application/zstd":{source:"iana"},"audio/1d-interleaved-parityfec":{source:"iana"},"audio/32kadpcm":{source:"iana"},"audio/3gpp":{source:"iana",compressible:!1,extensions:["3gpp"]},"audio/3gpp2":{source:"iana"},"audio/aac":{source:"iana"},"audio/ac3":{source:"iana"},"audio/adpcm":{source:"apache",extensions:["adp"]},"audio/amr":{source:"iana",extensions:["amr"]},"audio/amr-wb":{source:"iana"},"audio/amr-wb+":{source:"iana"},"audio/aptx":{source:"iana"},"audio/asc":{source:"iana"},"audio/atrac-advanced-lossless":{source:"iana"},"audio/atrac-x":{source:"iana"},"audio/atrac3":{source:"iana"},"audio/basic":{source:"iana",compressible:!1,extensions:["au","snd"]},"audio/bv16":{source:"iana"},"audio/bv32":{source:"iana"},"audio/clearmode":{source:"iana"},"audio/cn":{source:"iana"},"audio/dat12":{source:"iana"},"audio/dls":{source:"iana"},"audio/dsr-es201108":{source:"iana"},"audio/dsr-es202050":{source:"iana"},"audio/dsr-es202211":{source:"iana"},"audio/dsr-es202212":{source:"iana"},"audio/dv":{source:"iana"},"audio/dvi4":{source:"iana"},"audio/eac3":{source:"iana"},"audio/encaprtp":{source:"iana"},"audio/evrc":{source:"iana"},"audio/evrc-qcp":{source:"iana"},"audio/evrc0":{source:"iana"},"audio/evrc1":{source:"iana"},"audio/evrcb":{source:"iana"},"audio/evrcb0":{source:"iana"},"audio/evrcb1":{source:"iana"},"audio/evrcnw":{source:"iana"},"audio/evrcnw0":{source:"iana"},"audio/evrcnw1":{source:"iana"},"audio/evrcwb":{source:"iana"},"audio/evrcwb0":{source:"iana"},"audio/evrcwb1":{source:"iana"},"audio/evs":{source:"iana"},"audio/flexfec":{source:"iana"},"audio/fwdred":{source:"iana"},"audio/g711-0":{source:"iana"},"audio/g719":{source:"iana"},"audio/g722":{source:"iana"},"audio/g7221":{source:"iana"},"audio/g723":{source:"iana"},"audio/g726-16":{source:"iana"},"audio/g726-24":{source:"iana"},"audio/g726-32":{source:"iana"},"audio/g726-40":{source:"iana"},"audio/g728":{source:"iana"},"audio/g729":{source:"iana"},"audio/g7291":{source:"iana"},"audio/g729d":{source:"iana"},"audio/g729e":{source:"iana"},"audio/gsm":{source:"iana"},"audio/gsm-efr":{source:"iana"},"audio/gsm-hr-08":{source:"iana"},"audio/ilbc":{source:"iana"},"audio/ip-mr_v2.5":{source:"iana"},"audio/isac":{source:"apache"},"audio/l16":{source:"iana"},"audio/l20":{source:"iana"},"audio/l24":{source:"iana",compressible:!1},"audio/l8":{source:"iana"},"audio/lpc":{source:"iana"},"audio/melp":{source:"iana"},"audio/melp1200":{source:"iana"},"audio/melp2400":{source:"iana"},"audio/melp600":{source:"iana"},"audio/mhas":{source:"iana"},"audio/midi":{source:"apache",extensions:["mid","midi","kar","rmi"]},"audio/mobile-xmf":{source:"iana",extensions:["mxmf"]},"audio/mp3":{compressible:!1,extensions:["mp3"]},"audio/mp4":{source:"iana",compressible:!1,extensions:["m4a","mp4a"]},"audio/mp4a-latm":{source:"iana"},"audio/mpa":{source:"iana"},"audio/mpa-robust":{source:"iana"},"audio/mpeg":{source:"iana",compressible:!1,extensions:["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{source:"iana"},"audio/musepack":{source:"apache"},"audio/ogg":{source:"iana",compressible:!1,extensions:["oga","ogg","spx","opus"]},"audio/opus":{source:"iana"},"audio/parityfec":{source:"iana"},"audio/pcma":{source:"iana"},"audio/pcma-wb":{source:"iana"},"audio/pcmu":{source:"iana"},"audio/pcmu-wb":{source:"iana"},"audio/prs.sid":{source:"iana"},"audio/qcelp":{source:"iana"},"audio/raptorfec":{source:"iana"},"audio/red":{source:"iana"},"audio/rtp-enc-aescm128":{source:"iana"},"audio/rtp-midi":{source:"iana"},"audio/rtploopback":{source:"iana"},"audio/rtx":{source:"iana"},"audio/s3m":{source:"apache",extensions:["s3m"]},"audio/scip":{source:"iana"},"audio/silk":{source:"apache",extensions:["sil"]},"audio/smv":{source:"iana"},"audio/smv-qcp":{source:"iana"},"audio/smv0":{source:"iana"},"audio/sofa":{source:"iana"},"audio/sp-midi":{source:"iana"},"audio/speex":{source:"iana"},"audio/t140c":{source:"iana"},"audio/t38":{source:"iana"},"audio/telephone-event":{source:"iana"},"audio/tetra_acelp":{source:"iana"},"audio/tetra_acelp_bb":{source:"iana"},"audio/tone":{source:"iana"},"audio/tsvcis":{source:"iana"},"audio/uemclip":{source:"iana"},"audio/ulpfec":{source:"iana"},"audio/usac":{source:"iana"},"audio/vdvi":{source:"iana"},"audio/vmr-wb":{source:"iana"},"audio/vnd.3gpp.iufp":{source:"iana"},"audio/vnd.4sb":{source:"iana"},"audio/vnd.audiokoz":{source:"iana"},"audio/vnd.celp":{source:"iana"},"audio/vnd.cisco.nse":{source:"iana"},"audio/vnd.cmles.radio-events":{source:"iana"},"audio/vnd.cns.anp1":{source:"iana"},"audio/vnd.cns.inf1":{source:"iana"},"audio/vnd.dece.audio":{source:"iana",extensions:["uva","uvva"]},"audio/vnd.digital-winds":{source:"iana",extensions:["eol"]},"audio/vnd.dlna.adts":{source:"iana"},"audio/vnd.dolby.heaac.1":{source:"iana"},"audio/vnd.dolby.heaac.2":{source:"iana"},"audio/vnd.dolby.mlp":{source:"iana"},"audio/vnd.dolby.mps":{source:"iana"},"audio/vnd.dolby.pl2":{source:"iana"},"audio/vnd.dolby.pl2x":{source:"iana"},"audio/vnd.dolby.pl2z":{source:"iana"},"audio/vnd.dolby.pulse.1":{source:"iana"},"audio/vnd.dra":{source:"iana",extensions:["dra"]},"audio/vnd.dts":{source:"iana",extensions:["dts"]},"audio/vnd.dts.hd":{source:"iana",extensions:["dtshd"]},"audio/vnd.dts.uhd":{source:"iana"},"audio/vnd.dvb.file":{source:"iana"},"audio/vnd.everad.plj":{source:"iana"},"audio/vnd.hns.audio":{source:"iana"},"audio/vnd.lucent.voice":{source:"iana",extensions:["lvp"]},"audio/vnd.ms-playready.media.pya":{source:"iana",extensions:["pya"]},"audio/vnd.nokia.mobile-xmf":{source:"iana"},"audio/vnd.nortel.vbk":{source:"iana"},"audio/vnd.nuera.ecelp4800":{source:"iana",extensions:["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{source:"iana",extensions:["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{source:"iana",extensions:["ecelp9600"]},"audio/vnd.octel.sbc":{source:"iana"},"audio/vnd.presonus.multitrack":{source:"iana"},"audio/vnd.qcelp":{source:"iana"},"audio/vnd.rhetorex.32kadpcm":{source:"iana"},"audio/vnd.rip":{source:"iana",extensions:["rip"]},"audio/vnd.rn-realaudio":{compressible:!1},"audio/vnd.sealedmedia.softseal.mpeg":{source:"iana"},"audio/vnd.vmx.cvsd":{source:"iana"},"audio/vnd.wave":{compressible:!1},"audio/vorbis":{source:"iana",compressible:!1},"audio/vorbis-config":{source:"iana"},"audio/wav":{compressible:!1,extensions:["wav"]},"audio/wave":{compressible:!1,extensions:["wav"]},"audio/webm":{source:"apache",compressible:!1,extensions:["weba"]},"audio/x-aac":{source:"apache",compressible:!1,extensions:["aac"]},"audio/x-aiff":{source:"apache",extensions:["aif","aiff","aifc"]},"audio/x-caf":{source:"apache",compressible:!1,extensions:["caf"]},"audio/x-flac":{source:"apache",extensions:["flac"]},"audio/x-m4a":{source:"nginx",extensions:["m4a"]},"audio/x-matroska":{source:"apache",extensions:["mka"]},"audio/x-mpegurl":{source:"apache",extensions:["m3u"]},"audio/x-ms-wax":{source:"apache",extensions:["wax"]},"audio/x-ms-wma":{source:"apache",extensions:["wma"]},"audio/x-pn-realaudio":{source:"apache",extensions:["ram","ra"]},"audio/x-pn-realaudio-plugin":{source:"apache",extensions:["rmp"]},"audio/x-realaudio":{source:"nginx",extensions:["ra"]},"audio/x-tta":{source:"apache"},"audio/x-wav":{source:"apache",extensions:["wav"]},"audio/xm":{source:"apache",extensions:["xm"]},"chemical/x-cdx":{source:"apache",extensions:["cdx"]},"chemical/x-cif":{source:"apache",extensions:["cif"]},"chemical/x-cmdf":{source:"apache",extensions:["cmdf"]},"chemical/x-cml":{source:"apache",extensions:["cml"]},"chemical/x-csml":{source:"apache",extensions:["csml"]},"chemical/x-pdb":{source:"apache"},"chemical/x-xyz":{source:"apache",extensions:["xyz"]},"font/collection":{source:"iana",extensions:["ttc"]},"font/otf":{source:"iana",compressible:!0,extensions:["otf"]},"font/sfnt":{source:"iana"},"font/ttf":{source:"iana",compressible:!0,extensions:["ttf"]},"font/woff":{source:"iana",extensions:["woff"]},"font/woff2":{source:"iana",extensions:["woff2"]},"image/aces":{source:"iana",extensions:["exr"]},"image/apng":{compressible:!1,extensions:["apng"]},"image/avci":{source:"iana",extensions:["avci"]},"image/avcs":{source:"iana",extensions:["avcs"]},"image/avif":{source:"iana",compressible:!1,extensions:["avif"]},"image/bmp":{source:"iana",compressible:!0,extensions:["bmp"]},"image/cgm":{source:"iana",extensions:["cgm"]},"image/dicom-rle":{source:"iana",extensions:["drle"]},"image/emf":{source:"iana",extensions:["emf"]},"image/fits":{source:"iana",extensions:["fits"]},"image/g3fax":{source:"iana",extensions:["g3"]},"image/gif":{source:"iana",compressible:!1,extensions:["gif"]},"image/heic":{source:"iana",extensions:["heic"]},"image/heic-sequence":{source:"iana",extensions:["heics"]},"image/heif":{source:"iana",extensions:["heif"]},"image/heif-sequence":{source:"iana",extensions:["heifs"]},"image/hej2k":{source:"iana",extensions:["hej2"]},"image/hsj2":{source:"iana",extensions:["hsj2"]},"image/ief":{source:"iana",extensions:["ief"]},"image/jls":{source:"iana",extensions:["jls"]},"image/jp2":{source:"iana",compressible:!1,extensions:["jp2","jpg2"]},"image/jpeg":{source:"iana",compressible:!1,extensions:["jpeg","jpg","jpe"]},"image/jph":{source:"iana",extensions:["jph"]},"image/jphc":{source:"iana",extensions:["jhc"]},"image/jpm":{source:"iana",compressible:!1,extensions:["jpm"]},"image/jpx":{source:"iana",compressible:!1,extensions:["jpx","jpf"]},"image/jxr":{source:"iana",extensions:["jxr"]},"image/jxra":{source:"iana",extensions:["jxra"]},"image/jxrs":{source:"iana",extensions:["jxrs"]},"image/jxs":{source:"iana",extensions:["jxs"]},"image/jxsc":{source:"iana",extensions:["jxsc"]},"image/jxsi":{source:"iana",extensions:["jxsi"]},"image/jxss":{source:"iana",extensions:["jxss"]},"image/ktx":{source:"iana",extensions:["ktx"]},"image/ktx2":{source:"iana",extensions:["ktx2"]},"image/naplps":{source:"iana"},"image/pjpeg":{compressible:!1},"image/png":{source:"iana",compressible:!1,extensions:["png"]},"image/prs.btif":{source:"iana",extensions:["btif"]},"image/prs.pti":{source:"iana",extensions:["pti"]},"image/pwg-raster":{source:"iana"},"image/sgi":{source:"apache",extensions:["sgi"]},"image/svg+xml":{source:"iana",compressible:!0,extensions:["svg","svgz"]},"image/t38":{source:"iana",extensions:["t38"]},"image/tiff":{source:"iana",compressible:!1,extensions:["tif","tiff"]},"image/tiff-fx":{source:"iana",extensions:["tfx"]},"image/vnd.adobe.photoshop":{source:"iana",compressible:!0,extensions:["psd"]},"image/vnd.airzip.accelerator.azv":{source:"iana",extensions:["azv"]},"image/vnd.cns.inf2":{source:"iana"},"image/vnd.dece.graphic":{source:"iana",extensions:["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{source:"iana",extensions:["djvu","djv"]},"image/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"image/vnd.dwg":{source:"iana",extensions:["dwg"]},"image/vnd.dxf":{source:"iana",extensions:["dxf"]},"image/vnd.fastbidsheet":{source:"iana",extensions:["fbs"]},"image/vnd.fpx":{source:"iana",extensions:["fpx"]},"image/vnd.fst":{source:"iana",extensions:["fst"]},"image/vnd.fujixerox.edmics-mmr":{source:"iana",extensions:["mmr"]},"image/vnd.fujixerox.edmics-rlc":{source:"iana",extensions:["rlc"]},"image/vnd.globalgraphics.pgb":{source:"iana"},"image/vnd.microsoft.icon":{source:"iana",compressible:!0,extensions:["ico"]},"image/vnd.mix":{source:"iana"},"image/vnd.mozilla.apng":{source:"iana"},"image/vnd.ms-dds":{compressible:!0,extensions:["dds"]},"image/vnd.ms-modi":{source:"iana",extensions:["mdi"]},"image/vnd.ms-photo":{source:"apache",extensions:["wdp"]},"image/vnd.net-fpx":{source:"iana",extensions:["npx"]},"image/vnd.pco.b16":{source:"iana",extensions:["b16"]},"image/vnd.radiance":{source:"iana"},"image/vnd.sealed.png":{source:"iana"},"image/vnd.sealedmedia.softseal.gif":{source:"iana"},"image/vnd.sealedmedia.softseal.jpg":{source:"iana"},"image/vnd.svf":{source:"iana"},"image/vnd.tencent.tap":{source:"iana",extensions:["tap"]},"image/vnd.valve.source.texture":{source:"iana",extensions:["vtf"]},"image/vnd.wap.wbmp":{source:"iana",extensions:["wbmp"]},"image/vnd.xiff":{source:"iana",extensions:["xif"]},"image/vnd.zbrush.pcx":{source:"iana",extensions:["pcx"]},"image/webp":{source:"apache",extensions:["webp"]},"image/wmf":{source:"iana",extensions:["wmf"]},"image/x-3ds":{source:"apache",extensions:["3ds"]},"image/x-cmu-raster":{source:"apache",extensions:["ras"]},"image/x-cmx":{source:"apache",extensions:["cmx"]},"image/x-freehand":{source:"apache",extensions:["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{source:"apache",compressible:!0,extensions:["ico"]},"image/x-jng":{source:"nginx",extensions:["jng"]},"image/x-mrsid-image":{source:"apache",extensions:["sid"]},"image/x-ms-bmp":{source:"nginx",compressible:!0,extensions:["bmp"]},"image/x-pcx":{source:"apache",extensions:["pcx"]},"image/x-pict":{source:"apache",extensions:["pic","pct"]},"image/x-portable-anymap":{source:"apache",extensions:["pnm"]},"image/x-portable-bitmap":{source:"apache",extensions:["pbm"]},"image/x-portable-graymap":{source:"apache",extensions:["pgm"]},"image/x-portable-pixmap":{source:"apache",extensions:["ppm"]},"image/x-rgb":{source:"apache",extensions:["rgb"]},"image/x-tga":{source:"apache",extensions:["tga"]},"image/x-xbitmap":{source:"apache",extensions:["xbm"]},"image/x-xcf":{compressible:!1},"image/x-xpixmap":{source:"apache",extensions:["xpm"]},"image/x-xwindowdump":{source:"apache",extensions:["xwd"]},"message/cpim":{source:"iana"},"message/delivery-status":{source:"iana"},"message/disposition-notification":{source:"iana",extensions:["disposition-notification"]},"message/external-body":{source:"iana"},"message/feedback-report":{source:"iana"},"message/global":{source:"iana",extensions:["u8msg"]},"message/global-delivery-status":{source:"iana",extensions:["u8dsn"]},"message/global-disposition-notification":{source:"iana",extensions:["u8mdn"]},"message/global-headers":{source:"iana",extensions:["u8hdr"]},"message/http":{source:"iana",compressible:!1},"message/imdn+xml":{source:"iana",compressible:!0},"message/news":{source:"iana"},"message/partial":{source:"iana",compressible:!1},"message/rfc822":{source:"iana",compressible:!0,extensions:["eml","mime"]},"message/s-http":{source:"iana"},"message/sip":{source:"iana"},"message/sipfrag":{source:"iana"},"message/tracking-status":{source:"iana"},"message/vnd.si.simp":{source:"iana"},"message/vnd.wfa.wsc":{source:"iana",extensions:["wsc"]},"model/3mf":{source:"iana",extensions:["3mf"]},"model/e57":{source:"iana"},"model/gltf+json":{source:"iana",compressible:!0,extensions:["gltf"]},"model/gltf-binary":{source:"iana",compressible:!0,extensions:["glb"]},"model/iges":{source:"iana",compressible:!1,extensions:["igs","iges"]},"model/mesh":{source:"iana",compressible:!1,extensions:["msh","mesh","silo"]},"model/mtl":{source:"iana",extensions:["mtl"]},"model/obj":{source:"iana",extensions:["obj"]},"model/step":{source:"iana"},"model/step+xml":{source:"iana",compressible:!0,extensions:["stpx"]},"model/step+zip":{source:"iana",compressible:!1,extensions:["stpz"]},"model/step-xml+zip":{source:"iana",compressible:!1,extensions:["stpxz"]},"model/stl":{source:"iana",extensions:["stl"]},"model/vnd.collada+xml":{source:"iana",compressible:!0,extensions:["dae"]},"model/vnd.dwf":{source:"iana",extensions:["dwf"]},"model/vnd.flatland.3dml":{source:"iana"},"model/vnd.gdl":{source:"iana",extensions:["gdl"]},"model/vnd.gs-gdl":{source:"apache"},"model/vnd.gs.gdl":{source:"iana"},"model/vnd.gtw":{source:"iana",extensions:["gtw"]},"model/vnd.moml+xml":{source:"iana",compressible:!0},"model/vnd.mts":{source:"iana",extensions:["mts"]},"model/vnd.opengex":{source:"iana",extensions:["ogex"]},"model/vnd.parasolid.transmit.binary":{source:"iana",extensions:["x_b"]},"model/vnd.parasolid.transmit.text":{source:"iana",extensions:["x_t"]},"model/vnd.pytha.pyox":{source:"iana"},"model/vnd.rosette.annotated-data-model":{source:"iana"},"model/vnd.sap.vds":{source:"iana",extensions:["vds"]},"model/vnd.usdz+zip":{source:"iana",compressible:!1,extensions:["usdz"]},"model/vnd.valve.source.compiled-map":{source:"iana",extensions:["bsp"]},"model/vnd.vtu":{source:"iana",extensions:["vtu"]},"model/vrml":{source:"iana",compressible:!1,extensions:["wrl","vrml"]},"model/x3d+binary":{source:"apache",compressible:!1,extensions:["x3db","x3dbz"]},"model/x3d+fastinfoset":{source:"iana",extensions:["x3db"]},"model/x3d+vrml":{source:"apache",compressible:!1,extensions:["x3dv","x3dvz"]},"model/x3d+xml":{source:"iana",compressible:!0,extensions:["x3d","x3dz"]},"model/x3d-vrml":{source:"iana",extensions:["x3dv"]},"multipart/alternative":{source:"iana",compressible:!1},"multipart/appledouble":{source:"iana"},"multipart/byteranges":{source:"iana"},"multipart/digest":{source:"iana"},"multipart/encrypted":{source:"iana",compressible:!1},"multipart/form-data":{source:"iana",compressible:!1},"multipart/header-set":{source:"iana"},"multipart/mixed":{source:"iana"},"multipart/multilingual":{source:"iana"},"multipart/parallel":{source:"iana"},"multipart/related":{source:"iana",compressible:!1},"multipart/report":{source:"iana"},"multipart/signed":{source:"iana",compressible:!1},"multipart/vnd.bint.med-plus":{source:"iana"},"multipart/voice-message":{source:"iana"},"multipart/x-mixed-replace":{source:"iana"},"text/1d-interleaved-parityfec":{source:"iana"},"text/cache-manifest":{source:"iana",compressible:!0,extensions:["appcache","manifest"]},"text/calendar":{source:"iana",extensions:["ics","ifb"]},"text/calender":{compressible:!0},"text/cmd":{compressible:!0},"text/coffeescript":{extensions:["coffee","litcoffee"]},"text/cql":{source:"iana"},"text/cql-expression":{source:"iana"},"text/cql-identifier":{source:"iana"},"text/css":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["css"]},"text/csv":{source:"iana",compressible:!0,extensions:["csv"]},"text/csv-schema":{source:"iana"},"text/directory":{source:"iana"},"text/dns":{source:"iana"},"text/ecmascript":{source:"iana"},"text/encaprtp":{source:"iana"},"text/enriched":{source:"iana"},"text/fhirpath":{source:"iana"},"text/flexfec":{source:"iana"},"text/fwdred":{source:"iana"},"text/gff3":{source:"iana"},"text/grammar-ref-list":{source:"iana"},"text/html":{source:"iana",compressible:!0,extensions:["html","htm","shtml"]},"text/jade":{extensions:["jade"]},"text/javascript":{source:"iana",compressible:!0},"text/jcr-cnd":{source:"iana"},"text/jsx":{compressible:!0,extensions:["jsx"]},"text/less":{compressible:!0,extensions:["less"]},"text/markdown":{source:"iana",compressible:!0,extensions:["markdown","md"]},"text/mathml":{source:"nginx",extensions:["mml"]},"text/mdx":{compressible:!0,extensions:["mdx"]},"text/mizar":{source:"iana"},"text/n3":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["n3"]},"text/parameters":{source:"iana",charset:"UTF-8"},"text/parityfec":{source:"iana"},"text/plain":{source:"iana",compressible:!0,extensions:["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{source:"iana",charset:"UTF-8"},"text/prs.fallenstein.rst":{source:"iana"},"text/prs.lines.tag":{source:"iana",extensions:["dsc"]},"text/prs.prop.logic":{source:"iana"},"text/raptorfec":{source:"iana"},"text/red":{source:"iana"},"text/rfc822-headers":{source:"iana"},"text/richtext":{source:"iana",compressible:!0,extensions:["rtx"]},"text/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"text/rtp-enc-aescm128":{source:"iana"},"text/rtploopback":{source:"iana"},"text/rtx":{source:"iana"},"text/sgml":{source:"iana",extensions:["sgml","sgm"]},"text/shaclc":{source:"iana"},"text/shex":{source:"iana",extensions:["shex"]},"text/slim":{extensions:["slim","slm"]},"text/spdx":{source:"iana",extensions:["spdx"]},"text/strings":{source:"iana"},"text/stylus":{extensions:["stylus","styl"]},"text/t140":{source:"iana"},"text/tab-separated-values":{source:"iana",compressible:!0,extensions:["tsv"]},"text/troff":{source:"iana",extensions:["t","tr","roff","man","me","ms"]},"text/turtle":{source:"iana",charset:"UTF-8",extensions:["ttl"]},"text/ulpfec":{source:"iana"},"text/uri-list":{source:"iana",compressible:!0,extensions:["uri","uris","urls"]},"text/vcard":{source:"iana",compressible:!0,extensions:["vcard"]},"text/vnd.a":{source:"iana"},"text/vnd.abc":{source:"iana"},"text/vnd.ascii-art":{source:"iana"},"text/vnd.curl":{source:"iana",extensions:["curl"]},"text/vnd.curl.dcurl":{source:"apache",extensions:["dcurl"]},"text/vnd.curl.mcurl":{source:"apache",extensions:["mcurl"]},"text/vnd.curl.scurl":{source:"apache",extensions:["scurl"]},"text/vnd.debian.copyright":{source:"iana",charset:"UTF-8"},"text/vnd.dmclientscript":{source:"iana"},"text/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"text/vnd.esmertec.theme-descriptor":{source:"iana",charset:"UTF-8"},"text/vnd.familysearch.gedcom":{source:"iana",extensions:["ged"]},"text/vnd.ficlab.flt":{source:"iana"},"text/vnd.fly":{source:"iana",extensions:["fly"]},"text/vnd.fmi.flexstor":{source:"iana",extensions:["flx"]},"text/vnd.gml":{source:"iana"},"text/vnd.graphviz":{source:"iana",extensions:["gv"]},"text/vnd.hans":{source:"iana"},"text/vnd.hgl":{source:"iana"},"text/vnd.in3d.3dml":{source:"iana",extensions:["3dml"]},"text/vnd.in3d.spot":{source:"iana",extensions:["spot"]},"text/vnd.iptc.newsml":{source:"iana"},"text/vnd.iptc.nitf":{source:"iana"},"text/vnd.latex-z":{source:"iana"},"text/vnd.motorola.reflex":{source:"iana"},"text/vnd.ms-mediapackage":{source:"iana"},"text/vnd.net2phone.commcenter.command":{source:"iana"},"text/vnd.radisys.msml-basic-layout":{source:"iana"},"text/vnd.senx.warpscript":{source:"iana"},"text/vnd.si.uricatalogue":{source:"iana"},"text/vnd.sosi":{source:"iana"},"text/vnd.sun.j2me.app-descriptor":{source:"iana",charset:"UTF-8",extensions:["jad"]},"text/vnd.trolltech.linguist":{source:"iana",charset:"UTF-8"},"text/vnd.wap.si":{source:"iana"},"text/vnd.wap.sl":{source:"iana"},"text/vnd.wap.wml":{source:"iana",extensions:["wml"]},"text/vnd.wap.wmlscript":{source:"iana",extensions:["wmls"]},"text/vtt":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["vtt"]},"text/x-asm":{source:"apache",extensions:["s","asm"]},"text/x-c":{source:"apache",extensions:["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{source:"nginx",extensions:["htc"]},"text/x-fortran":{source:"apache",extensions:["f","for","f77","f90"]},"text/x-gwt-rpc":{compressible:!0},"text/x-handlebars-template":{extensions:["hbs"]},"text/x-java-source":{source:"apache",extensions:["java"]},"text/x-jquery-tmpl":{compressible:!0},"text/x-lua":{extensions:["lua"]},"text/x-markdown":{compressible:!0,extensions:["mkd"]},"text/x-nfo":{source:"apache",extensions:["nfo"]},"text/x-opml":{source:"apache",extensions:["opml"]},"text/x-org":{compressible:!0,extensions:["org"]},"text/x-pascal":{source:"apache",extensions:["p","pas"]},"text/x-processing":{compressible:!0,extensions:["pde"]},"text/x-sass":{extensions:["sass"]},"text/x-scss":{extensions:["scss"]},"text/x-setext":{source:"apache",extensions:["etx"]},"text/x-sfv":{source:"apache",extensions:["sfv"]},"text/x-suse-ymp":{compressible:!0,extensions:["ymp"]},"text/x-uuencode":{source:"apache",extensions:["uu"]},"text/x-vcalendar":{source:"apache",extensions:["vcs"]},"text/x-vcard":{source:"apache",extensions:["vcf"]},"text/xml":{source:"iana",compressible:!0,extensions:["xml"]},"text/xml-external-parsed-entity":{source:"iana"},"text/yaml":{compressible:!0,extensions:["yaml","yml"]},"video/1d-interleaved-parityfec":{source:"iana"},"video/3gpp":{source:"iana",extensions:["3gp","3gpp"]},"video/3gpp-tt":{source:"iana"},"video/3gpp2":{source:"iana",extensions:["3g2"]},"video/av1":{source:"iana"},"video/bmpeg":{source:"iana"},"video/bt656":{source:"iana"},"video/celb":{source:"iana"},"video/dv":{source:"iana"},"video/encaprtp":{source:"iana"},"video/ffv1":{source:"iana"},"video/flexfec":{source:"iana"},"video/h261":{source:"iana",extensions:["h261"]},"video/h263":{source:"iana",extensions:["h263"]},"video/h263-1998":{source:"iana"},"video/h263-2000":{source:"iana"},"video/h264":{source:"iana",extensions:["h264"]},"video/h264-rcdo":{source:"iana"},"video/h264-svc":{source:"iana"},"video/h265":{source:"iana"},"video/iso.segment":{source:"iana",extensions:["m4s"]},"video/jpeg":{source:"iana",extensions:["jpgv"]},"video/jpeg2000":{source:"iana"},"video/jpm":{source:"apache",extensions:["jpm","jpgm"]},"video/jxsv":{source:"iana"},"video/mj2":{source:"iana",extensions:["mj2","mjp2"]},"video/mp1s":{source:"iana"},"video/mp2p":{source:"iana"},"video/mp2t":{source:"iana",extensions:["ts"]},"video/mp4":{source:"iana",compressible:!1,extensions:["mp4","mp4v","mpg4"]},"video/mp4v-es":{source:"iana"},"video/mpeg":{source:"iana",compressible:!1,extensions:["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{source:"iana"},"video/mpv":{source:"iana"},"video/nv":{source:"iana"},"video/ogg":{source:"iana",compressible:!1,extensions:["ogv"]},"video/parityfec":{source:"iana"},"video/pointer":{source:"iana"},"video/quicktime":{source:"iana",compressible:!1,extensions:["qt","mov"]},"video/raptorfec":{source:"iana"},"video/raw":{source:"iana"},"video/rtp-enc-aescm128":{source:"iana"},"video/rtploopback":{source:"iana"},"video/rtx":{source:"iana"},"video/scip":{source:"iana"},"video/smpte291":{source:"iana"},"video/smpte292m":{source:"iana"},"video/ulpfec":{source:"iana"},"video/vc1":{source:"iana"},"video/vc2":{source:"iana"},"video/vnd.cctv":{source:"iana"},"video/vnd.dece.hd":{source:"iana",extensions:["uvh","uvvh"]},"video/vnd.dece.mobile":{source:"iana",extensions:["uvm","uvvm"]},"video/vnd.dece.mp4":{source:"iana"},"video/vnd.dece.pd":{source:"iana",extensions:["uvp","uvvp"]},"video/vnd.dece.sd":{source:"iana",extensions:["uvs","uvvs"]},"video/vnd.dece.video":{source:"iana",extensions:["uvv","uvvv"]},"video/vnd.directv.mpeg":{source:"iana"},"video/vnd.directv.mpeg-tts":{source:"iana"},"video/vnd.dlna.mpeg-tts":{source:"iana"},"video/vnd.dvb.file":{source:"iana",extensions:["dvb"]},"video/vnd.fvt":{source:"iana",extensions:["fvt"]},"video/vnd.hns.video":{source:"iana"},"video/vnd.iptvforum.1dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.1dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.2dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.2dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.ttsavc":{source:"iana"},"video/vnd.iptvforum.ttsmpeg2":{source:"iana"},"video/vnd.motorola.video":{source:"iana"},"video/vnd.motorola.videop":{source:"iana"},"video/vnd.mpegurl":{source:"iana",extensions:["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{source:"iana",extensions:["pyv"]},"video/vnd.nokia.interleaved-multimedia":{source:"iana"},"video/vnd.nokia.mp4vr":{source:"iana"},"video/vnd.nokia.videovoip":{source:"iana"},"video/vnd.objectvideo":{source:"iana"},"video/vnd.radgamettools.bink":{source:"iana"},"video/vnd.radgamettools.smacker":{source:"iana"},"video/vnd.sealed.mpeg1":{source:"iana"},"video/vnd.sealed.mpeg4":{source:"iana"},"video/vnd.sealed.swf":{source:"iana"},"video/vnd.sealedmedia.softseal.mov":{source:"iana"},"video/vnd.uvvu.mp4":{source:"iana",extensions:["uvu","uvvu"]},"video/vnd.vivo":{source:"iana",extensions:["viv"]},"video/vnd.youtube.yt":{source:"iana"},"video/vp8":{source:"iana"},"video/vp9":{source:"iana"},"video/webm":{source:"apache",compressible:!1,extensions:["webm"]},"video/x-f4v":{source:"apache",extensions:["f4v"]},"video/x-fli":{source:"apache",extensions:["fli"]},"video/x-flv":{source:"apache",compressible:!1,extensions:["flv"]},"video/x-m4v":{source:"apache",extensions:["m4v"]},"video/x-matroska":{source:"apache",compressible:!1,extensions:["mkv","mk3d","mks"]},"video/x-mng":{source:"apache",extensions:["mng"]},"video/x-ms-asf":{source:"apache",extensions:["asf","asx"]},"video/x-ms-vob":{source:"apache",extensions:["vob"]},"video/x-ms-wm":{source:"apache",extensions:["wm"]},"video/x-ms-wmv":{source:"apache",compressible:!1,extensions:["wmv"]},"video/x-ms-wmx":{source:"apache",extensions:["wmx"]},"video/x-ms-wvx":{source:"apache",extensions:["wvx"]},"video/x-msvideo":{source:"apache",extensions:["avi"]},"video/x-sgi-movie":{source:"apache",extensions:["movie"]},"video/x-smv":{source:"apache",extensions:["smv"]},"x-conference/x-cooltalk":{source:"apache",extensions:["ice"]},"x-shader/x-fragment":{compressible:!0},"x-shader/x-vertex":{compressible:!0}}});var cr=K((g1,sr)=>{sr.exports=or()});var Bt=K((x1,pr)=>{"use strict";function Pe(e){if(typeof e!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}function lr(e,t){for(var n="",a=0,i=-1,r=0,o,s=0;s<=e.length;++s){if(s2){var p=n.lastIndexOf("/");if(p!==n.length-1){p===-1?(n="",a=0):(n=n.slice(0,p),a=n.length-1-n.lastIndexOf("/")),i=s,r=0;continue}}else if(n.length===2||n.length===1){n="",a=0,i=s,r=0;continue}}t&&(n.length>0?n+="/..":n="..",a=2)}else n.length>0?n+="/"+e.slice(i+1,s):n=e.slice(i+1,s),a=s-i-1;i=s,r=0}else o===46&&r!==-1?++r:r=-1}return n}function xp(e,t){var n=t.dir||t.root,a=t.base||(t.name||"")+(t.ext||"");return n?n===t.root?n+a:n+e+a:a}var ct={resolve:function(){for(var t="",n=!1,a,i=arguments.length-1;i>=-1&&!n;i--){var r;i>=0?r=arguments[i]:(a===void 0&&(a=process.cwd()),r=a),Pe(r),r.length!==0&&(t=r+"/"+t,n=r.charCodeAt(0)===47)}return t=lr(t,!n),n?t.length>0?"/"+t:"/":t.length>0?t:"."},normalize:function(t){if(Pe(t),t.length===0)return".";var n=t.charCodeAt(0)===47,a=t.charCodeAt(t.length-1)===47;return t=lr(t,!n),t.length===0&&!n&&(t="."),t.length>0&&a&&(t+="/"),n?"/"+t:t},isAbsolute:function(t){return Pe(t),t.length>0&&t.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var t,n=0;n0&&(t===void 0?t=a:t+="/"+a)}return t===void 0?".":ct.normalize(t)},relative:function(t,n){if(Pe(t),Pe(n),t===n||(t=ct.resolve(t),n=ct.resolve(n),t===n))return"";for(var a=1;al){if(n.charCodeAt(o+u)===47)return n.slice(o+u+1);if(u===0)return n.slice(o+u)}else r>l&&(t.charCodeAt(a+u)===47?c=u:u===0&&(c=0));break}var h=t.charCodeAt(a+u),f=n.charCodeAt(o+u);if(h!==f)break;h===47&&(c=u)}var g="";for(u=a+c+1;u<=i;++u)(u===i||t.charCodeAt(u)===47)&&(g.length===0?g+="..":g+="/..");return g.length>0?g+n.slice(o+c):(o+=c,n.charCodeAt(o)===47&&++o,n.slice(o))},_makeLong:function(t){return t},dirname:function(t){if(Pe(t),t.length===0)return".";for(var n=t.charCodeAt(0),a=n===47,i=-1,r=!0,o=t.length-1;o>=1;--o)if(n=t.charCodeAt(o),n===47){if(!r){i=o;break}}else r=!1;return i===-1?a?"/":".":a&&i===1?"//":t.slice(0,i)},basename:function(t,n){if(n!==void 0&&typeof n!="string")throw new TypeError('"ext" argument must be a string');Pe(t);var a=0,i=-1,r=!0,o;if(n!==void 0&&n.length>0&&n.length<=t.length){if(n.length===t.length&&n===t)return"";var s=n.length-1,p=-1;for(o=t.length-1;o>=0;--o){var l=t.charCodeAt(o);if(l===47){if(!r){a=o+1;break}}else p===-1&&(r=!1,p=o+1),s>=0&&(l===n.charCodeAt(s)?--s===-1&&(i=o):(s=-1,i=p))}return a===i?i=p:i===-1&&(i=t.length),t.slice(a,i)}else{for(o=t.length-1;o>=0;--o)if(t.charCodeAt(o)===47){if(!r){a=o+1;break}}else i===-1&&(r=!1,i=o+1);return i===-1?"":t.slice(a,i)}},extname:function(t){Pe(t);for(var n=-1,a=0,i=-1,r=!0,o=0,s=t.length-1;s>=0;--s){var p=t.charCodeAt(s);if(p===47){if(!r){a=s+1;break}continue}i===-1&&(r=!1,i=s+1),p===46?n===-1?n=s:o!==1&&(o=1):n!==-1&&(o=-1)}return n===-1||i===-1||o===0||o===1&&n===i-1&&n===a+1?"":t.slice(n,i)},format:function(t){if(t===null||typeof t!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof t);return xp("/",t)},parse:function(t){Pe(t);var n={root:"",dir:"",base:"",ext:"",name:""};if(t.length===0)return n;var a=t.charCodeAt(0),i=a===47,r;i?(n.root="/",r=1):r=0;for(var o=-1,s=0,p=-1,l=!0,c=t.length-1,u=0;c>=r;--c){if(a=t.charCodeAt(c),a===47){if(!l){s=c+1;break}continue}p===-1&&(l=!1,p=c+1),a===46?o===-1?o=c:u!==1&&(u=1):o!==-1&&(u=-1)}return o===-1||p===-1||u===0||u===1&&o===p-1&&o===s+1?p!==-1&&(s===0&&i?n.base=n.name=t.slice(1,p):n.base=n.name=t.slice(s,p)):(s===0&&i?(n.name=t.slice(1,o),n.base=t.slice(1,p)):(n.name=t.slice(s,o),n.base=t.slice(s,p)),n.ext=t.slice(o,p)),s>0?n.dir=t.slice(0,s-1):i&&(n.dir="/"),n},sep:"/",delimiter:":",win32:null,posix:null};ct.posix=ct;pr.exports=ct});var fr=K(ye=>{"use strict";var pn=cr(),vp=Bt().extname,ur=/^\s*([^;\s]*)(?:;|\s|$)/,bp=/^text\//i;ye.charset=dr;ye.charsets={lookup:dr};ye.contentType=yp;ye.extension=_p;ye.extensions=Object.create(null);ye.lookup=kp;ye.types=Object.create(null);wp(ye.extensions,ye.types);function dr(e){if(!e||typeof e!="string")return!1;var t=ur.exec(e),n=t&&pn[t[1].toLowerCase()];return n&&n.charset?n.charset:t&&bp.test(t[1])?"UTF-8":!1}function yp(e){if(!e||typeof e!="string")return!1;var t=e.indexOf("/")===-1?ye.lookup(e):e;if(!t)return!1;if(t.indexOf("charset")===-1){var n=ye.charset(t);n&&(t+="; charset="+n.toLowerCase())}return t}function _p(e){if(!e||typeof e!="string")return!1;var t=ur.exec(e),n=t&&ye.extensions[t[1].toLowerCase()];return!n||!n.length?!1:n[0]}function kp(e){if(!e||typeof e!="string")return!1;var t=vp("x."+e).toLowerCase().substr(1);return t&&ye.types[t]||!1}function wp(e,t){var n=["nginx","apache",void 0,"iana"];Object.keys(pn).forEach(function(i){var r=pn[i],o=r.extensions;if(!(!o||!o.length)){e[i]=o;for(var s=0;sc||l===c&&t[p].substr(0,12)==="application/"))continue}t[p]=i}}})}});var aa=K((b1,mr)=>{var Cp=typeof global=="object"&&global&&global.Object===Object&&global;mr.exports=Cp});var Ue=K((y1,hr)=>{var jp=aa(),Lp=typeof self=="object"&&self&&self.Object===Object&&self,Ip=jp||Lp||Function("return this")();hr.exports=Ip});var un=K((_1,gr)=>{var Sp=Ue(),Ap=Sp.Symbol;gr.exports=Ap});var vr=K((k1,xr)=>{function Mp(e,t){var n=-1,a=e.length;for(t||(t=Array(a));++n{var br=un(),yr=Object.prototype,Fp=yr.hasOwnProperty,Ep=yr.toString,Pt=br?br.toStringTag:void 0;function zp(e){var t=Fp.call(e,Pt),n=e[Pt];try{e[Pt]=void 0;var a=!0}catch{}var i=Ep.call(e);return a&&(t?e[Pt]=n:delete e[Pt]),i}_r.exports=zp});var Cr=K((C1,wr)=>{var Bp=Object.prototype,Pp=Bp.toString;function Tp(e){return Pp.call(e)}wr.exports=Tp});var lt=K((j1,Ir)=>{var jr=un(),Op=kr(),Np=Cr(),Dp="[object Null]",Wp="[object Undefined]",Lr=jr?jr.toStringTag:void 0;function Rp(e){return e==null?e===void 0?Wp:Dp:Lr&&Lr in Object(e)?Op(e):Np(e)}Ir.exports=Rp});var ia=K((L1,Sr)=>{function Up(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}Sr.exports=Up});var ra=K((I1,Ar)=>{var Vp=lt(),Hp=ia(),qp="[object AsyncFunction]",$p="[object Function]",Gp="[object GeneratorFunction]",Zp="[object Proxy]";function Kp(e){if(!Hp(e))return!1;var t=Vp(e);return t==$p||t==Gp||t==qp||t==Zp}Ar.exports=Kp});var Fr=K((S1,Mr)=>{var Yp=Ue(),Xp=Yp["__core-js_shared__"];Mr.exports=Xp});var Br=K((A1,zr)=>{var oa=Fr(),Er=function(){var e=/[^.]+$/.exec(oa&&oa.keys&&oa.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function Jp(e){return!!Er&&Er in e}zr.exports=Jp});var sa=K((M1,Pr)=>{var Qp=Function.prototype,eu=Qp.toString;function tu(e){if(e!=null){try{return eu.call(e)}catch{}try{return e+""}catch{}}return""}Pr.exports=tu});var Or=K((F1,Tr)=>{var nu=ra(),au=Br(),iu=ia(),ru=sa(),ou=/[\\^$.*+?()[\]{}|]/g,su=/^\[object .+?Constructor\]$/,cu=Function.prototype,lu=Object.prototype,pu=cu.toString,uu=lu.hasOwnProperty,du=RegExp("^"+pu.call(uu).replace(ou,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function fu(e){if(!iu(e)||au(e))return!1;var t=nu(e)?du:su;return t.test(ru(e))}Tr.exports=fu});var Dr=K((E1,Nr)=>{function mu(e,t){return e?.[t]}Nr.exports=mu});var pt=K((z1,Wr)=>{var hu=Or(),gu=Dr();function xu(e,t){var n=gu(e,t);return hu(n)?n:void 0}Wr.exports=xu});var Ur=K((B1,Rr)=>{var vu=pt(),bu=Ue(),yu=vu(bu,"DataView");Rr.exports=yu});var Hr=K((P1,Vr)=>{var _u=pt(),ku=Ue(),wu=_u(ku,"Map");Vr.exports=wu});var $r=K((T1,qr)=>{var Cu=pt(),ju=Ue(),Lu=Cu(ju,"Promise");qr.exports=Lu});var Zr=K((O1,Gr)=>{var Iu=pt(),Su=Ue(),Au=Iu(Su,"Set");Gr.exports=Au});var Yr=K((N1,Kr)=>{var Mu=pt(),Fu=Ue(),Eu=Mu(Fu,"WeakMap");Kr.exports=Eu});var io=K((D1,ao)=>{var ca=Ur(),la=Hr(),pa=$r(),ua=Zr(),da=Yr(),no=lt(),ut=sa(),Xr="[object Map]",zu="[object Object]",Jr="[object Promise]",Qr="[object Set]",eo="[object WeakMap]",to="[object DataView]",Bu=ut(ca),Pu=ut(la),Tu=ut(pa),Ou=ut(ua),Nu=ut(da),nt=no;(ca&&nt(new ca(new ArrayBuffer(1)))!=to||la&&nt(new la)!=Xr||pa&&nt(pa.resolve())!=Jr||ua&&nt(new ua)!=Qr||da&&nt(new da)!=eo)&&(nt=function(e){var t=no(e),n=t==zu?e.constructor:void 0,a=n?ut(n):"";if(a)switch(a){case Bu:return to;case Pu:return Xr;case Tu:return Jr;case Ou:return Qr;case Nu:return eo}return t});ao.exports=nt});var fa=K((W1,ro)=>{var Du=9007199254740991;function Wu(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=Du}ro.exports=Wu});var ma=K((R1,oo)=>{var Ru=ra(),Uu=fa();function Vu(e){return e!=null&&Uu(e.length)&&!Ru(e)}oo.exports=Vu});var ha=K((U1,so)=>{var Hu=Array.isArray;so.exports=Hu});var Tt=K((V1,co)=>{function qu(e){return e!=null&&typeof e=="object"}co.exports=qu});var po=K((H1,lo)=>{var $u=lt(),Gu=ha(),Zu=Tt(),Ku="[object String]";function Yu(e){return typeof e=="string"||!Gu(e)&&Zu(e)&&$u(e)==Ku}lo.exports=Yu});var fo=K((q1,uo)=>{function Xu(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}uo.exports=Xu});var ho=K(($1,mo)=>{function Ju(e){var t=-1,n=Array(e.size);return e.forEach(function(a,i){n[++t]=[i,a]}),n}mo.exports=Ju});var xo=K((G1,go)=>{function Qu(e){var t=-1,n=Array(e.size);return e.forEach(function(a){n[++t]=a}),n}go.exports=Qu});var bo=K((Z1,vo)=>{function ed(e){return e.split("")}vo.exports=ed});var _o=K((K1,yo)=>{var td="\\ud800-\\udfff",nd="\\u0300-\\u036f",ad="\\ufe20-\\ufe2f",id="\\u20d0-\\u20ff",rd=nd+ad+id,od="\\ufe0e\\ufe0f",sd="\\u200d",cd=RegExp("["+sd+td+rd+od+"]");function ld(e){return cd.test(e)}yo.exports=ld});var Ao=K((Y1,So)=>{var ko="\\ud800-\\udfff",pd="\\u0300-\\u036f",ud="\\ufe20-\\ufe2f",dd="\\u20d0-\\u20ff",fd=pd+ud+dd,md="\\ufe0e\\ufe0f",hd="["+ko+"]",ga="["+fd+"]",xa="\\ud83c[\\udffb-\\udfff]",gd="(?:"+ga+"|"+xa+")",wo="[^"+ko+"]",Co="(?:\\ud83c[\\udde6-\\uddff]){2}",jo="[\\ud800-\\udbff][\\udc00-\\udfff]",xd="\\u200d",Lo=gd+"?",Io="["+md+"]?",vd="(?:"+xd+"(?:"+[wo,Co,jo].join("|")+")"+Io+Lo+")*",bd=Io+Lo+vd,yd="(?:"+[wo+ga+"?",ga,Co,jo,hd].join("|")+")",_d=RegExp(xa+"(?="+xa+")|"+yd+bd,"g");function kd(e){return e.match(_d)||[]}So.exports=kd});var Fo=K((X1,Mo)=>{var wd=bo(),Cd=_o(),jd=Ao();function Ld(e){return Cd(e)?jd(e):wd(e)}Mo.exports=Ld});var zo=K((J1,Eo)=>{function Id(e,t){for(var n=-1,a=e==null?0:e.length,i=Array(a);++n{var Sd=zo();function Ad(e,t){return Sd(t,function(n){return e[n]})}Bo.exports=Ad});var Oo=K((e2,To)=>{function Md(e,t){for(var n=-1,a=Array(e);++n{var Fd=lt(),Ed=Tt(),zd="[object Arguments]";function Bd(e){return Ed(e)&&Fd(e)==zd}No.exports=Bd});var Vo=K((n2,Uo)=>{var Wo=Do(),Pd=Tt(),Ro=Object.prototype,Td=Ro.hasOwnProperty,Od=Ro.propertyIsEnumerable,Nd=Wo(function(){return arguments}())?Wo:function(e){return Pd(e)&&Td.call(e,"callee")&&!Od.call(e,"callee")};Uo.exports=Nd});var qo=K((a2,Ho)=>{function Dd(){return!1}Ho.exports=Dd});var Ko=K((Ot,dt)=>{var Wd=Ue(),Rd=qo(),Zo=typeof Ot=="object"&&Ot&&!Ot.nodeType&&Ot,$o=Zo&&typeof dt=="object"&&dt&&!dt.nodeType&&dt,Ud=$o&&$o.exports===Zo,Go=Ud?Wd.Buffer:void 0,Vd=Go?Go.isBuffer:void 0,Hd=Vd||Rd;dt.exports=Hd});var Xo=K((i2,Yo)=>{var qd=9007199254740991,$d=/^(?:0|[1-9]\d*)$/;function Gd(e,t){var n=typeof e;return t=t??qd,!!t&&(n=="number"||n!="symbol"&&$d.test(e))&&e>-1&&e%1==0&&e{var Zd=lt(),Kd=fa(),Yd=Tt(),Xd="[object Arguments]",Jd="[object Array]",Qd="[object Boolean]",ef="[object Date]",tf="[object Error]",nf="[object Function]",af="[object Map]",rf="[object Number]",of="[object Object]",sf="[object RegExp]",cf="[object Set]",lf="[object String]",pf="[object WeakMap]",uf="[object ArrayBuffer]",df="[object DataView]",ff="[object Float32Array]",mf="[object Float64Array]",hf="[object Int8Array]",gf="[object Int16Array]",xf="[object Int32Array]",vf="[object Uint8Array]",bf="[object Uint8ClampedArray]",yf="[object Uint16Array]",_f="[object Uint32Array]",pe={};pe[ff]=pe[mf]=pe[hf]=pe[gf]=pe[xf]=pe[vf]=pe[bf]=pe[yf]=pe[_f]=!0;pe[Xd]=pe[Jd]=pe[uf]=pe[Qd]=pe[df]=pe[ef]=pe[tf]=pe[nf]=pe[af]=pe[rf]=pe[of]=pe[sf]=pe[cf]=pe[lf]=pe[pf]=!1;function kf(e){return Yd(e)&&Kd(e.length)&&!!pe[Zd(e)]}Jo.exports=kf});var ts=K((o2,es)=>{function wf(e){return function(t){return e(t)}}es.exports=wf});var as=K((Nt,ft)=>{var Cf=aa(),ns=typeof Nt=="object"&&Nt&&!Nt.nodeType&&Nt,Dt=ns&&typeof ft=="object"&&ft&&!ft.nodeType&&ft,jf=Dt&&Dt.exports===ns,va=jf&&Cf.process,Lf=function(){try{var e=Dt&&Dt.require&&Dt.require("util").types;return e||va&&va.binding&&va.binding("util")}catch{}}();ft.exports=Lf});var ss=K((s2,os)=>{var If=Qo(),Sf=ts(),is=as(),rs=is&&is.isTypedArray,Af=rs?Sf(rs):If;os.exports=Af});var ls=K((c2,cs)=>{var Mf=Oo(),Ff=Vo(),Ef=ha(),zf=Ko(),Bf=Xo(),Pf=ss(),Tf=Object.prototype,Of=Tf.hasOwnProperty;function Nf(e,t){var n=Ef(e),a=!n&&Ff(e),i=!n&&!a&&zf(e),r=!n&&!a&&!i&&Pf(e),o=n||a||i||r,s=o?Mf(e.length,String):[],p=s.length;for(var l in e)(t||Of.call(e,l))&&!(o&&(l=="length"||i&&(l=="offset"||l=="parent")||r&&(l=="buffer"||l=="byteLength"||l=="byteOffset")||Bf(l,p)))&&s.push(l);return s}cs.exports=Nf});var us=K((l2,ps)=>{var Df=Object.prototype;function Wf(e){var t=e&&e.constructor,n=typeof t=="function"&&t.prototype||Df;return e===n}ps.exports=Wf});var fs=K((p2,ds)=>{function Rf(e,t){return function(n){return e(t(n))}}ds.exports=Rf});var hs=K((u2,ms)=>{var Uf=fs(),Vf=Uf(Object.keys,Object);ms.exports=Vf});var xs=K((d2,gs)=>{var Hf=us(),qf=hs(),$f=Object.prototype,Gf=$f.hasOwnProperty;function Zf(e){if(!Hf(e))return qf(e);var t=[];for(var n in Object(e))Gf.call(e,n)&&n!="constructor"&&t.push(n);return t}gs.exports=Zf});var bs=K((f2,vs)=>{var Kf=ls(),Yf=xs(),Xf=ma();function Jf(e){return Xf(e)?Kf(e):Yf(e)}vs.exports=Jf});var _s=K((m2,ys)=>{var Qf=Po(),em=bs();function tm(e){return e==null?[]:Qf(e,em(e))}ys.exports=tm});var Cs=K((h2,ws)=>{var ks=un(),nm=vr(),am=io(),im=ma(),rm=po(),om=fo(),sm=ho(),cm=xo(),lm=Fo(),pm=_s(),um="[object Map]",dm="[object Set]",ba=ks?ks.iterator:void 0;function fm(e){if(!e)return[];if(im(e))return rm(e)?lm(e):nm(e);if(ba&&e[ba])return om(e[ba]());var t=am(e),n=t==um?sm:t==dm?cm:pm;return n(e)}ws.exports=fm});var ya=K((g2,mm)=>{mm.exports={"100":"\u{1F4AF}","1234":"\u{1F522}",umbrella_with_rain_drops:"\u2614",coffee:"\u2615",aries:"\u2648",taurus:"\u2649",sagittarius:"\u2650",capricorn:"\u2651",aquarius:"\u2652",pisces:"\u2653",anchor:"\u2693",white_check_mark:"\u2705",sparkles:"\u2728",question:"\u2753",grey_question:"\u2754",grey_exclamation:"\u2755",exclamation:"\u2757",heavy_exclamation_mark:"\u2757",heavy_plus_sign:"\u2795",heavy_minus_sign:"\u2796",heavy_division_sign:"\u2797",hash:"#\uFE0F\u20E3",keycap_star:"*\uFE0F\u20E3",zero:"0\uFE0F\u20E3",one:"1\uFE0F\u20E3",two:"2\uFE0F\u20E3",three:"3\uFE0F\u20E3",four:"4\uFE0F\u20E3",five:"5\uFE0F\u20E3",six:"6\uFE0F\u20E3",seven:"7\uFE0F\u20E3",eight:"8\uFE0F\u20E3",nine:"9\uFE0F\u20E3",copyright:"\xA9\uFE0F",registered:"\xAE\uFE0F",mahjong:"\u{1F004}",black_joker:"\u{1F0CF}",a:"\u{1F170}\uFE0F",b:"\u{1F171}\uFE0F",o2:"\u{1F17E}\uFE0F",parking:"\u{1F17F}\uFE0F",ab:"\u{1F18E}",cl:"\u{1F191}",cool:"\u{1F192}",free:"\u{1F193}",id:"\u{1F194}",new:"\u{1F195}",ng:"\u{1F196}",ok:"\u{1F197}",sos:"\u{1F198}",up:"\u{1F199}",vs:"\u{1F19A}","flag-ac":"\u{1F1E6}\u{1F1E8}","flag-ad":"\u{1F1E6}\u{1F1E9}","flag-ae":"\u{1F1E6}\u{1F1EA}","flag-af":"\u{1F1E6}\u{1F1EB}","flag-ag":"\u{1F1E6}\u{1F1EC}","flag-ai":"\u{1F1E6}\u{1F1EE}","flag-al":"\u{1F1E6}\u{1F1F1}","flag-am":"\u{1F1E6}\u{1F1F2}","flag-ao":"\u{1F1E6}\u{1F1F4}","flag-aq":"\u{1F1E6}\u{1F1F6}","flag-ar":"\u{1F1E6}\u{1F1F7}","flag-as":"\u{1F1E6}\u{1F1F8}","flag-at":"\u{1F1E6}\u{1F1F9}","flag-au":"\u{1F1E6}\u{1F1FA}","flag-aw":"\u{1F1E6}\u{1F1FC}","flag-ax":"\u{1F1E6}\u{1F1FD}","flag-az":"\u{1F1E6}\u{1F1FF}","flag-ba":"\u{1F1E7}\u{1F1E6}","flag-bb":"\u{1F1E7}\u{1F1E7}","flag-bd":"\u{1F1E7}\u{1F1E9}","flag-be":"\u{1F1E7}\u{1F1EA}","flag-bf":"\u{1F1E7}\u{1F1EB}","flag-bg":"\u{1F1E7}\u{1F1EC}","flag-bh":"\u{1F1E7}\u{1F1ED}","flag-bi":"\u{1F1E7}\u{1F1EE}","flag-bj":"\u{1F1E7}\u{1F1EF}","flag-bl":"\u{1F1E7}\u{1F1F1}","flag-bm":"\u{1F1E7}\u{1F1F2}","flag-bn":"\u{1F1E7}\u{1F1F3}","flag-bo":"\u{1F1E7}\u{1F1F4}","flag-bq":"\u{1F1E7}\u{1F1F6}","flag-br":"\u{1F1E7}\u{1F1F7}","flag-bs":"\u{1F1E7}\u{1F1F8}","flag-bt":"\u{1F1E7}\u{1F1F9}","flag-bv":"\u{1F1E7}\u{1F1FB}","flag-bw":"\u{1F1E7}\u{1F1FC}","flag-by":"\u{1F1E7}\u{1F1FE}","flag-bz":"\u{1F1E7}\u{1F1FF}","flag-ca":"\u{1F1E8}\u{1F1E6}","flag-cc":"\u{1F1E8}\u{1F1E8}","flag-cd":"\u{1F1E8}\u{1F1E9}","flag-cf":"\u{1F1E8}\u{1F1EB}","flag-cg":"\u{1F1E8}\u{1F1EC}","flag-ch":"\u{1F1E8}\u{1F1ED}","flag-ci":"\u{1F1E8}\u{1F1EE}","flag-ck":"\u{1F1E8}\u{1F1F0}","flag-cl":"\u{1F1E8}\u{1F1F1}","flag-cm":"\u{1F1E8}\u{1F1F2}",cn:"\u{1F1E8}\u{1F1F3}","flag-cn":"\u{1F1E8}\u{1F1F3}","flag-co":"\u{1F1E8}\u{1F1F4}","flag-cp":"\u{1F1E8}\u{1F1F5}","flag-cr":"\u{1F1E8}\u{1F1F7}","flag-cu":"\u{1F1E8}\u{1F1FA}","flag-cv":"\u{1F1E8}\u{1F1FB}","flag-cw":"\u{1F1E8}\u{1F1FC}","flag-cx":"\u{1F1E8}\u{1F1FD}","flag-cy":"\u{1F1E8}\u{1F1FE}","flag-cz":"\u{1F1E8}\u{1F1FF}",de:"\u{1F1E9}\u{1F1EA}","flag-de":"\u{1F1E9}\u{1F1EA}","flag-dg":"\u{1F1E9}\u{1F1EC}","flag-dj":"\u{1F1E9}\u{1F1EF}","flag-dk":"\u{1F1E9}\u{1F1F0}","flag-dm":"\u{1F1E9}\u{1F1F2}","flag-do":"\u{1F1E9}\u{1F1F4}","flag-dz":"\u{1F1E9}\u{1F1FF}","flag-ea":"\u{1F1EA}\u{1F1E6}","flag-ec":"\u{1F1EA}\u{1F1E8}","flag-ee":"\u{1F1EA}\u{1F1EA}","flag-eg":"\u{1F1EA}\u{1F1EC}","flag-eh":"\u{1F1EA}\u{1F1ED}","flag-er":"\u{1F1EA}\u{1F1F7}",es:"\u{1F1EA}\u{1F1F8}","flag-es":"\u{1F1EA}\u{1F1F8}","flag-et":"\u{1F1EA}\u{1F1F9}","flag-eu":"\u{1F1EA}\u{1F1FA}","flag-fi":"\u{1F1EB}\u{1F1EE}","flag-fj":"\u{1F1EB}\u{1F1EF}","flag-fk":"\u{1F1EB}\u{1F1F0}","flag-fm":"\u{1F1EB}\u{1F1F2}","flag-fo":"\u{1F1EB}\u{1F1F4}",fr:"\u{1F1EB}\u{1F1F7}","flag-fr":"\u{1F1EB}\u{1F1F7}","flag-ga":"\u{1F1EC}\u{1F1E6}",gb:"\u{1F1EC}\u{1F1E7}",uk:"\u{1F1EC}\u{1F1E7}","flag-gb":"\u{1F1EC}\u{1F1E7}","flag-gd":"\u{1F1EC}\u{1F1E9}","flag-ge":"\u{1F1EC}\u{1F1EA}","flag-gf":"\u{1F1EC}\u{1F1EB}","flag-gg":"\u{1F1EC}\u{1F1EC}","flag-gh":"\u{1F1EC}\u{1F1ED}","flag-gi":"\u{1F1EC}\u{1F1EE}","flag-gl":"\u{1F1EC}\u{1F1F1}","flag-gm":"\u{1F1EC}\u{1F1F2}","flag-gn":"\u{1F1EC}\u{1F1F3}","flag-gp":"\u{1F1EC}\u{1F1F5}","flag-gq":"\u{1F1EC}\u{1F1F6}","flag-gr":"\u{1F1EC}\u{1F1F7}","flag-gs":"\u{1F1EC}\u{1F1F8}","flag-gt":"\u{1F1EC}\u{1F1F9}","flag-gu":"\u{1F1EC}\u{1F1FA}","flag-gw":"\u{1F1EC}\u{1F1FC}","flag-gy":"\u{1F1EC}\u{1F1FE}","flag-hk":"\u{1F1ED}\u{1F1F0}","flag-hm":"\u{1F1ED}\u{1F1F2}","flag-hn":"\u{1F1ED}\u{1F1F3}","flag-hr":"\u{1F1ED}\u{1F1F7}","flag-ht":"\u{1F1ED}\u{1F1F9}","flag-hu":"\u{1F1ED}\u{1F1FA}","flag-ic":"\u{1F1EE}\u{1F1E8}","flag-id":"\u{1F1EE}\u{1F1E9}","flag-ie":"\u{1F1EE}\u{1F1EA}","flag-il":"\u{1F1EE}\u{1F1F1}","flag-im":"\u{1F1EE}\u{1F1F2}","flag-in":"\u{1F1EE}\u{1F1F3}","flag-io":"\u{1F1EE}\u{1F1F4}","flag-iq":"\u{1F1EE}\u{1F1F6}","flag-ir":"\u{1F1EE}\u{1F1F7}","flag-is":"\u{1F1EE}\u{1F1F8}",it:"\u{1F1EE}\u{1F1F9}","flag-it":"\u{1F1EE}\u{1F1F9}","flag-je":"\u{1F1EF}\u{1F1EA}","flag-jm":"\u{1F1EF}\u{1F1F2}","flag-jo":"\u{1F1EF}\u{1F1F4}",jp:"\u{1F1EF}\u{1F1F5}","flag-jp":"\u{1F1EF}\u{1F1F5}","flag-ke":"\u{1F1F0}\u{1F1EA}","flag-kg":"\u{1F1F0}\u{1F1EC}","flag-kh":"\u{1F1F0}\u{1F1ED}","flag-ki":"\u{1F1F0}\u{1F1EE}","flag-km":"\u{1F1F0}\u{1F1F2}","flag-kn":"\u{1F1F0}\u{1F1F3}","flag-kp":"\u{1F1F0}\u{1F1F5}",kr:"\u{1F1F0}\u{1F1F7}","flag-kr":"\u{1F1F0}\u{1F1F7}","flag-kw":"\u{1F1F0}\u{1F1FC}","flag-ky":"\u{1F1F0}\u{1F1FE}","flag-kz":"\u{1F1F0}\u{1F1FF}","flag-la":"\u{1F1F1}\u{1F1E6}","flag-lb":"\u{1F1F1}\u{1F1E7}","flag-lc":"\u{1F1F1}\u{1F1E8}","flag-li":"\u{1F1F1}\u{1F1EE}","flag-lk":"\u{1F1F1}\u{1F1F0}","flag-lr":"\u{1F1F1}\u{1F1F7}","flag-ls":"\u{1F1F1}\u{1F1F8}","flag-lt":"\u{1F1F1}\u{1F1F9}","flag-lu":"\u{1F1F1}\u{1F1FA}","flag-lv":"\u{1F1F1}\u{1F1FB}","flag-ly":"\u{1F1F1}\u{1F1FE}","flag-ma":"\u{1F1F2}\u{1F1E6}","flag-mc":"\u{1F1F2}\u{1F1E8}","flag-md":"\u{1F1F2}\u{1F1E9}","flag-me":"\u{1F1F2}\u{1F1EA}","flag-mf":"\u{1F1F2}\u{1F1EB}","flag-mg":"\u{1F1F2}\u{1F1EC}","flag-mh":"\u{1F1F2}\u{1F1ED}","flag-mk":"\u{1F1F2}\u{1F1F0}","flag-ml":"\u{1F1F2}\u{1F1F1}","flag-mm":"\u{1F1F2}\u{1F1F2}","flag-mn":"\u{1F1F2}\u{1F1F3}","flag-mo":"\u{1F1F2}\u{1F1F4}","flag-mp":"\u{1F1F2}\u{1F1F5}","flag-mq":"\u{1F1F2}\u{1F1F6}","flag-mr":"\u{1F1F2}\u{1F1F7}","flag-ms":"\u{1F1F2}\u{1F1F8}","flag-mt":"\u{1F1F2}\u{1F1F9}","flag-mu":"\u{1F1F2}\u{1F1FA}","flag-mv":"\u{1F1F2}\u{1F1FB}","flag-mw":"\u{1F1F2}\u{1F1FC}","flag-mx":"\u{1F1F2}\u{1F1FD}","flag-my":"\u{1F1F2}\u{1F1FE}","flag-mz":"\u{1F1F2}\u{1F1FF}","flag-na":"\u{1F1F3}\u{1F1E6}","flag-nc":"\u{1F1F3}\u{1F1E8}","flag-ne":"\u{1F1F3}\u{1F1EA}","flag-nf":"\u{1F1F3}\u{1F1EB}","flag-ng":"\u{1F1F3}\u{1F1EC}","flag-ni":"\u{1F1F3}\u{1F1EE}","flag-nl":"\u{1F1F3}\u{1F1F1}","flag-no":"\u{1F1F3}\u{1F1F4}","flag-np":"\u{1F1F3}\u{1F1F5}","flag-nr":"\u{1F1F3}\u{1F1F7}","flag-nu":"\u{1F1F3}\u{1F1FA}","flag-nz":"\u{1F1F3}\u{1F1FF}","flag-om":"\u{1F1F4}\u{1F1F2}","flag-pa":"\u{1F1F5}\u{1F1E6}","flag-pe":"\u{1F1F5}\u{1F1EA}","flag-pf":"\u{1F1F5}\u{1F1EB}","flag-pg":"\u{1F1F5}\u{1F1EC}","flag-ph":"\u{1F1F5}\u{1F1ED}","flag-pk":"\u{1F1F5}\u{1F1F0}","flag-pl":"\u{1F1F5}\u{1F1F1}","flag-pm":"\u{1F1F5}\u{1F1F2}","flag-pn":"\u{1F1F5}\u{1F1F3}","flag-pr":"\u{1F1F5}\u{1F1F7}","flag-ps":"\u{1F1F5}\u{1F1F8}","flag-pt":"\u{1F1F5}\u{1F1F9}","flag-pw":"\u{1F1F5}\u{1F1FC}","flag-py":"\u{1F1F5}\u{1F1FE}","flag-qa":"\u{1F1F6}\u{1F1E6}","flag-re":"\u{1F1F7}\u{1F1EA}","flag-ro":"\u{1F1F7}\u{1F1F4}","flag-rs":"\u{1F1F7}\u{1F1F8}",ru:"\u{1F1F7}\u{1F1FA}","flag-ru":"\u{1F1F7}\u{1F1FA}","flag-rw":"\u{1F1F7}\u{1F1FC}","flag-sa":"\u{1F1F8}\u{1F1E6}","flag-sb":"\u{1F1F8}\u{1F1E7}","flag-sc":"\u{1F1F8}\u{1F1E8}","flag-sd":"\u{1F1F8}\u{1F1E9}","flag-se":"\u{1F1F8}\u{1F1EA}","flag-sg":"\u{1F1F8}\u{1F1EC}","flag-sh":"\u{1F1F8}\u{1F1ED}","flag-si":"\u{1F1F8}\u{1F1EE}","flag-sj":"\u{1F1F8}\u{1F1EF}","flag-sk":"\u{1F1F8}\u{1F1F0}","flag-sl":"\u{1F1F8}\u{1F1F1}","flag-sm":"\u{1F1F8}\u{1F1F2}","flag-sn":"\u{1F1F8}\u{1F1F3}","flag-so":"\u{1F1F8}\u{1F1F4}","flag-sr":"\u{1F1F8}\u{1F1F7}","flag-ss":"\u{1F1F8}\u{1F1F8}","flag-st":"\u{1F1F8}\u{1F1F9}","flag-sv":"\u{1F1F8}\u{1F1FB}","flag-sx":"\u{1F1F8}\u{1F1FD}","flag-sy":"\u{1F1F8}\u{1F1FE}","flag-sz":"\u{1F1F8}\u{1F1FF}","flag-ta":"\u{1F1F9}\u{1F1E6}","flag-tc":"\u{1F1F9}\u{1F1E8}","flag-td":"\u{1F1F9}\u{1F1E9}","flag-tf":"\u{1F1F9}\u{1F1EB}","flag-tg":"\u{1F1F9}\u{1F1EC}","flag-th":"\u{1F1F9}\u{1F1ED}","flag-tj":"\u{1F1F9}\u{1F1EF}","flag-tk":"\u{1F1F9}\u{1F1F0}","flag-tl":"\u{1F1F9}\u{1F1F1}","flag-tm":"\u{1F1F9}\u{1F1F2}","flag-tn":"\u{1F1F9}\u{1F1F3}","flag-to":"\u{1F1F9}\u{1F1F4}","flag-tr":"\u{1F1F9}\u{1F1F7}","flag-tt":"\u{1F1F9}\u{1F1F9}","flag-tv":"\u{1F1F9}\u{1F1FB}","flag-tw":"\u{1F1F9}\u{1F1FC}","flag-tz":"\u{1F1F9}\u{1F1FF}","flag-ua":"\u{1F1FA}\u{1F1E6}","flag-ug":"\u{1F1FA}\u{1F1EC}","flag-um":"\u{1F1FA}\u{1F1F2}","flag-un":"\u{1F1FA}\u{1F1F3}",us:"\u{1F1FA}\u{1F1F8}","flag-us":"\u{1F1FA}\u{1F1F8}","flag-uy":"\u{1F1FA}\u{1F1FE}","flag-uz":"\u{1F1FA}\u{1F1FF}","flag-va":"\u{1F1FB}\u{1F1E6}","flag-vc":"\u{1F1FB}\u{1F1E8}","flag-ve":"\u{1F1FB}\u{1F1EA}","flag-vg":"\u{1F1FB}\u{1F1EC}","flag-vi":"\u{1F1FB}\u{1F1EE}","flag-vn":"\u{1F1FB}\u{1F1F3}","flag-vu":"\u{1F1FB}\u{1F1FA}","flag-wf":"\u{1F1FC}\u{1F1EB}","flag-ws":"\u{1F1FC}\u{1F1F8}","flag-xk":"\u{1F1FD}\u{1F1F0}","flag-ye":"\u{1F1FE}\u{1F1EA}","flag-yt":"\u{1F1FE}\u{1F1F9}","flag-za":"\u{1F1FF}\u{1F1E6}","flag-zm":"\u{1F1FF}\u{1F1F2}","flag-zw":"\u{1F1FF}\u{1F1FC}",koko:"\u{1F201}",sa:"\u{1F202}\uFE0F",u7121:"\u{1F21A}",u6307:"\u{1F22F}",u7981:"\u{1F232}",u7a7a:"\u{1F233}",u5408:"\u{1F234}",u6e80:"\u{1F235}",u6709:"\u{1F236}",u6708:"\u{1F237}\uFE0F",u7533:"\u{1F238}",u5272:"\u{1F239}",u55b6:"\u{1F23A}",ideograph_advantage:"\u{1F250}",accept:"\u{1F251}",cyclone:"\u{1F300}",foggy:"\u{1F301}",closed_umbrella:"\u{1F302}",night_with_stars:"\u{1F303}",sunrise_over_mountains:"\u{1F304}",sunrise:"\u{1F305}",city_sunset:"\u{1F306}",city_sunrise:"\u{1F307}",rainbow:"\u{1F308}",bridge_at_night:"\u{1F309}",ocean:"\u{1F30A}",volcano:"\u{1F30B}",milky_way:"\u{1F30C}",earth_africa:"\u{1F30D}",earth_americas:"\u{1F30E}",earth_asia:"\u{1F30F}",globe_with_meridians:"\u{1F310}",new_moon:"\u{1F311}",waxing_crescent_moon:"\u{1F312}",first_quarter_moon:"\u{1F313}",moon:"\u{1F314}",waxing_gibbous_moon:"\u{1F314}",full_moon:"\u{1F315}",waning_gibbous_moon:"\u{1F316}",last_quarter_moon:"\u{1F317}",waning_crescent_moon:"\u{1F318}",crescent_moon:"\u{1F319}",new_moon_with_face:"\u{1F31A}",first_quarter_moon_with_face:"\u{1F31B}",last_quarter_moon_with_face:"\u{1F31C}",full_moon_with_face:"\u{1F31D}",sun_with_face:"\u{1F31E}",star2:"\u{1F31F}",stars:"\u{1F320}",thermometer:"\u{1F321}\uFE0F",mostly_sunny:"\u{1F324}\uFE0F",sun_small_cloud:"\u{1F324}\uFE0F",barely_sunny:"\u{1F325}\uFE0F",sun_behind_cloud:"\u{1F325}\uFE0F",partly_sunny_rain:"\u{1F326}\uFE0F",sun_behind_rain_cloud:"\u{1F326}\uFE0F",rain_cloud:"\u{1F327}\uFE0F",snow_cloud:"\u{1F328}\uFE0F",lightning:"\u{1F329}\uFE0F",lightning_cloud:"\u{1F329}\uFE0F",tornado:"\u{1F32A}\uFE0F",tornado_cloud:"\u{1F32A}\uFE0F",fog:"\u{1F32B}\uFE0F",wind_blowing_face:"\u{1F32C}\uFE0F",hotdog:"\u{1F32D}",taco:"\u{1F32E}",burrito:"\u{1F32F}",chestnut:"\u{1F330}",seedling:"\u{1F331}",evergreen_tree:"\u{1F332}",deciduous_tree:"\u{1F333}",palm_tree:"\u{1F334}",cactus:"\u{1F335}",hot_pepper:"\u{1F336}\uFE0F",tulip:"\u{1F337}",cherry_blossom:"\u{1F338}",rose:"\u{1F339}",hibiscus:"\u{1F33A}",sunflower:"\u{1F33B}",blossom:"\u{1F33C}",corn:"\u{1F33D}",ear_of_rice:"\u{1F33E}",herb:"\u{1F33F}",four_leaf_clover:"\u{1F340}",maple_leaf:"\u{1F341}",fallen_leaf:"\u{1F342}",leaves:"\u{1F343}",mushroom:"\u{1F344}",tomato:"\u{1F345}",eggplant:"\u{1F346}",grapes:"\u{1F347}",melon:"\u{1F348}",watermelon:"\u{1F349}",tangerine:"\u{1F34A}",lemon:"\u{1F34B}",banana:"\u{1F34C}",pineapple:"\u{1F34D}",apple:"\u{1F34E}",green_apple:"\u{1F34F}",pear:"\u{1F350}",peach:"\u{1F351}",cherries:"\u{1F352}",strawberry:"\u{1F353}",hamburger:"\u{1F354}",pizza:"\u{1F355}",meat_on_bone:"\u{1F356}",poultry_leg:"\u{1F357}",rice_cracker:"\u{1F358}",rice_ball:"\u{1F359}",rice:"\u{1F35A}",curry:"\u{1F35B}",ramen:"\u{1F35C}",spaghetti:"\u{1F35D}",bread:"\u{1F35E}",fries:"\u{1F35F}",sweet_potato:"\u{1F360}",dango:"\u{1F361}",oden:"\u{1F362}",sushi:"\u{1F363}",fried_shrimp:"\u{1F364}",fish_cake:"\u{1F365}",icecream:"\u{1F366}",shaved_ice:"\u{1F367}",ice_cream:"\u{1F368}",doughnut:"\u{1F369}",cookie:"\u{1F36A}",chocolate_bar:"\u{1F36B}",candy:"\u{1F36C}",lollipop:"\u{1F36D}",custard:"\u{1F36E}",honey_pot:"\u{1F36F}",cake:"\u{1F370}",bento:"\u{1F371}",stew:"\u{1F372}",fried_egg:"\u{1F373}",cooking:"\u{1F373}",fork_and_knife:"\u{1F374}",tea:"\u{1F375}",sake:"\u{1F376}",wine_glass:"\u{1F377}",cocktail:"\u{1F378}",tropical_drink:"\u{1F379}",beer:"\u{1F37A}",beers:"\u{1F37B}",baby_bottle:"\u{1F37C}",knife_fork_plate:"\u{1F37D}\uFE0F",champagne:"\u{1F37E}",popcorn:"\u{1F37F}",ribbon:"\u{1F380}",gift:"\u{1F381}",birthday:"\u{1F382}",jack_o_lantern:"\u{1F383}",christmas_tree:"\u{1F384}",santa:"\u{1F385}",fireworks:"\u{1F386}",sparkler:"\u{1F387}",balloon:"\u{1F388}",tada:"\u{1F389}",confetti_ball:"\u{1F38A}",tanabata_tree:"\u{1F38B}",crossed_flags:"\u{1F38C}",bamboo:"\u{1F38D}",dolls:"\u{1F38E}",flags:"\u{1F38F}",wind_chime:"\u{1F390}",rice_scene:"\u{1F391}",school_satchel:"\u{1F392}",mortar_board:"\u{1F393}",medal:"\u{1F396}\uFE0F",reminder_ribbon:"\u{1F397}\uFE0F",studio_microphone:"\u{1F399}\uFE0F",level_slider:"\u{1F39A}\uFE0F",control_knobs:"\u{1F39B}\uFE0F",film_frames:"\u{1F39E}\uFE0F",admission_tickets:"\u{1F39F}\uFE0F",carousel_horse:"\u{1F3A0}",ferris_wheel:"\u{1F3A1}",roller_coaster:"\u{1F3A2}",fishing_pole_and_fish:"\u{1F3A3}",microphone:"\u{1F3A4}",movie_camera:"\u{1F3A5}",cinema:"\u{1F3A6}",headphones:"\u{1F3A7}",art:"\u{1F3A8}",tophat:"\u{1F3A9}",circus_tent:"\u{1F3AA}",ticket:"\u{1F3AB}",clapper:"\u{1F3AC}",performing_arts:"\u{1F3AD}",video_game:"\u{1F3AE}",dart:"\u{1F3AF}",slot_machine:"\u{1F3B0}","8ball":"\u{1F3B1}",game_die:"\u{1F3B2}",bowling:"\u{1F3B3}",flower_playing_cards:"\u{1F3B4}",musical_note:"\u{1F3B5}",notes:"\u{1F3B6}",saxophone:"\u{1F3B7}",guitar:"\u{1F3B8}",musical_keyboard:"\u{1F3B9}",trumpet:"\u{1F3BA}",violin:"\u{1F3BB}",musical_score:"\u{1F3BC}",running_shirt_with_sash:"\u{1F3BD}",tennis:"\u{1F3BE}",ski:"\u{1F3BF}",basketball:"\u{1F3C0}",checkered_flag:"\u{1F3C1}",snowboarder:"\u{1F3C2}","woman-running":"\u{1F3C3}\u200D\u2640\uFE0F",running_woman:"\u{1F3C3}\u200D\u2640\uFE0F","man-running":"\u{1F3C3}\u200D\u2642\uFE0F",runner:"\u{1F3C3}\u200D\u2642\uFE0F",running:"\u{1F3C3}\u200D\u2642\uFE0F",running_man:"\u{1F3C3}\u200D\u2642\uFE0F","woman-surfing":"\u{1F3C4}\u200D\u2640\uFE0F",surfing_woman:"\u{1F3C4}\u200D\u2640\uFE0F","man-surfing":"\u{1F3C4}\u200D\u2642\uFE0F",surfer:"\u{1F3C4}\u200D\u2642\uFE0F",surfing_man:"\u{1F3C4}\u200D\u2642\uFE0F",sports_medal:"\u{1F3C5}",trophy:"\u{1F3C6}",horse_racing:"\u{1F3C7}",football:"\u{1F3C8}",rugby_football:"\u{1F3C9}","woman-swimming":"\u{1F3CA}\u200D\u2640\uFE0F",swimming_woman:"\u{1F3CA}\u200D\u2640\uFE0F","man-swimming":"\u{1F3CA}\u200D\u2642\uFE0F",swimmer:"\u{1F3CA}\u200D\u2642\uFE0F",swimming_man:"\u{1F3CA}\u200D\u2642\uFE0F","woman-lifting-weights":"\u{1F3CB}\uFE0F\u200D\u2640\uFE0F",weight_lifting_woman:"\u{1F3CB}\uFE0F\u200D\u2640\uFE0F","man-lifting-weights":"\u{1F3CB}\uFE0F\u200D\u2642\uFE0F",weight_lifter:"\u{1F3CB}\uFE0F\u200D\u2642\uFE0F",weight_lifting_man:"\u{1F3CB}\uFE0F\u200D\u2642\uFE0F","woman-golfing":"\u{1F3CC}\uFE0F\u200D\u2640\uFE0F",golfing_woman:"\u{1F3CC}\uFE0F\u200D\u2640\uFE0F","man-golfing":"\u{1F3CC}\uFE0F\u200D\u2642\uFE0F",golfer:"\u{1F3CC}\uFE0F\u200D\u2642\uFE0F",golfing_man:"\u{1F3CC}\uFE0F\u200D\u2642\uFE0F",racing_motorcycle:"\u{1F3CD}\uFE0F",racing_car:"\u{1F3CE}\uFE0F",cricket_bat_and_ball:"\u{1F3CF}",volleyball:"\u{1F3D0}",field_hockey_stick_and_ball:"\u{1F3D1}",ice_hockey_stick_and_puck:"\u{1F3D2}",table_tennis_paddle_and_ball:"\u{1F3D3}",snow_capped_mountain:"\u{1F3D4}\uFE0F",camping:"\u{1F3D5}\uFE0F",beach_with_umbrella:"\u{1F3D6}\uFE0F",building_construction:"\u{1F3D7}\uFE0F",house_buildings:"\u{1F3D8}\uFE0F",cityscape:"\u{1F3D9}\uFE0F",derelict_house_building:"\u{1F3DA}\uFE0F",classical_building:"\u{1F3DB}\uFE0F",desert:"\u{1F3DC}\uFE0F",desert_island:"\u{1F3DD}\uFE0F",national_park:"\u{1F3DE}\uFE0F",stadium:"\u{1F3DF}\uFE0F",house:"\u{1F3E0}",house_with_garden:"\u{1F3E1}",office:"\u{1F3E2}",post_office:"\u{1F3E3}",european_post_office:"\u{1F3E4}",hospital:"\u{1F3E5}",bank:"\u{1F3E6}",atm:"\u{1F3E7}",hotel:"\u{1F3E8}",love_hotel:"\u{1F3E9}",convenience_store:"\u{1F3EA}",school:"\u{1F3EB}",department_store:"\u{1F3EC}",factory:"\u{1F3ED}",izakaya_lantern:"\u{1F3EE}",lantern:"\u{1F3EE}",japanese_castle:"\u{1F3EF}",european_castle:"\u{1F3F0}","rainbow-flag":"\u{1F3F3}\uFE0F\u200D\u{1F308}",transgender_flag:"\u{1F3F3}\uFE0F\u200D\u26A7\uFE0F",waving_white_flag:"\u{1F3F3}\uFE0F",pirate_flag:"\u{1F3F4}\u200D\u2620\uFE0F","flag-england":"\u{1F3F4}\u{E0067}\u{E0062}\u{E0065}\u{E006E}\u{E0067}\u{E007F}","flag-scotland":"\u{1F3F4}\u{E0067}\u{E0062}\u{E0073}\u{E0063}\u{E0074}\u{E007F}","flag-wales":"\u{1F3F4}\u{E0067}\u{E0062}\u{E0077}\u{E006C}\u{E0073}\u{E007F}",waving_black_flag:"\u{1F3F4}",rosette:"\u{1F3F5}\uFE0F",label:"\u{1F3F7}\uFE0F",badminton_racquet_and_shuttlecock:"\u{1F3F8}",bow_and_arrow:"\u{1F3F9}",amphora:"\u{1F3FA}","skin-tone-2":"\u{1F3FB}","skin-tone-3":"\u{1F3FC}","skin-tone-4":"\u{1F3FD}","skin-tone-5":"\u{1F3FE}","skin-tone-6":"\u{1F3FF}",rat:"\u{1F400}",mouse2:"\u{1F401}",ox:"\u{1F402}",water_buffalo:"\u{1F403}",cow2:"\u{1F404}",tiger2:"\u{1F405}",leopard:"\u{1F406}",rabbit2:"\u{1F407}",black_cat:"\u{1F408}\u200D\u2B1B",cat2:"\u{1F408}",dragon:"\u{1F409}",crocodile:"\u{1F40A}",whale2:"\u{1F40B}",snail:"\u{1F40C}",snake:"\u{1F40D}",racehorse:"\u{1F40E}",ram:"\u{1F40F}",goat:"\u{1F410}",sheep:"\u{1F411}",monkey:"\u{1F412}",rooster:"\u{1F413}",chicken:"\u{1F414}",service_dog:"\u{1F415}\u200D\u{1F9BA}",dog2:"\u{1F415}",pig2:"\u{1F416}",boar:"\u{1F417}",elephant:"\u{1F418}",octopus:"\u{1F419}",shell:"\u{1F41A}",bug:"\u{1F41B}",ant:"\u{1F41C}",bee:"\u{1F41D}",honeybee:"\u{1F41D}",ladybug:"\u{1F41E}",lady_beetle:"\u{1F41E}",fish:"\u{1F41F}",tropical_fish:"\u{1F420}",blowfish:"\u{1F421}",turtle:"\u{1F422}",hatching_chick:"\u{1F423}",baby_chick:"\u{1F424}",hatched_chick:"\u{1F425}",bird:"\u{1F426}",penguin:"\u{1F427}",koala:"\u{1F428}",poodle:"\u{1F429}",dromedary_camel:"\u{1F42A}",camel:"\u{1F42B}",dolphin:"\u{1F42C}",flipper:"\u{1F42C}",mouse:"\u{1F42D}",cow:"\u{1F42E}",tiger:"\u{1F42F}",rabbit:"\u{1F430}",cat:"\u{1F431}",dragon_face:"\u{1F432}",whale:"\u{1F433}",horse:"\u{1F434}",monkey_face:"\u{1F435}",dog:"\u{1F436}",pig:"\u{1F437}",frog:"\u{1F438}",hamster:"\u{1F439}",wolf:"\u{1F43A}",polar_bear:"\u{1F43B}\u200D\u2744\uFE0F",bear:"\u{1F43B}",panda_face:"\u{1F43C}",pig_nose:"\u{1F43D}",feet:"\u{1F43E}",paw_prints:"\u{1F43E}",chipmunk:"\u{1F43F}\uFE0F",eyes:"\u{1F440}","eye-in-speech-bubble":"\u{1F441}\uFE0F\u200D\u{1F5E8}\uFE0F",eye:"\u{1F441}\uFE0F",ear:"\u{1F442}",nose:"\u{1F443}",lips:"\u{1F444}",tongue:"\u{1F445}",point_up_2:"\u{1F446}",point_down:"\u{1F447}",point_left:"\u{1F448}",point_right:"\u{1F449}",facepunch:"\u{1F44A}",punch:"\u{1F44A}",wave:"\u{1F44B}",ok_hand:"\u{1F44C}","+1":"\u{1F44D}",thumbsup:"\u{1F44D}","-1":"\u{1F44E}",thumbsdown:"\u{1F44E}",clap:"\u{1F44F}",open_hands:"\u{1F450}",crown:"\u{1F451}",womans_hat:"\u{1F452}",eyeglasses:"\u{1F453}",necktie:"\u{1F454}",shirt:"\u{1F455}",tshirt:"\u{1F455}",jeans:"\u{1F456}",dress:"\u{1F457}",kimono:"\u{1F458}",bikini:"\u{1F459}",womans_clothes:"\u{1F45A}",purse:"\u{1F45B}",handbag:"\u{1F45C}",pouch:"\u{1F45D}",mans_shoe:"\u{1F45E}",shoe:"\u{1F45E}",athletic_shoe:"\u{1F45F}",high_heel:"\u{1F460}",sandal:"\u{1F461}",boot:"\u{1F462}",footprints:"\u{1F463}",bust_in_silhouette:"\u{1F464}",busts_in_silhouette:"\u{1F465}",boy:"\u{1F466}",girl:"\u{1F467}","male-farmer":"\u{1F468}\u200D\u{1F33E}","male-cook":"\u{1F468}\u200D\u{1F373}",man_feeding_baby:"\u{1F468}\u200D\u{1F37C}","male-student":"\u{1F468}\u200D\u{1F393}","male-singer":"\u{1F468}\u200D\u{1F3A4}","male-artist":"\u{1F468}\u200D\u{1F3A8}","male-teacher":"\u{1F468}\u200D\u{1F3EB}","male-factory-worker":"\u{1F468}\u200D\u{1F3ED}","man-boy-boy":"\u{1F468}\u200D\u{1F466}\u200D\u{1F466}","man-boy":"\u{1F468}\u200D\u{1F466}","man-girl-boy":"\u{1F468}\u200D\u{1F467}\u200D\u{1F466}","man-girl-girl":"\u{1F468}\u200D\u{1F467}\u200D\u{1F467}","man-girl":"\u{1F468}\u200D\u{1F467}","man-man-boy":"\u{1F468}\u200D\u{1F468}\u200D\u{1F466}","man-man-boy-boy":"\u{1F468}\u200D\u{1F468}\u200D\u{1F466}\u200D\u{1F466}","man-man-girl":"\u{1F468}\u200D\u{1F468}\u200D\u{1F467}","man-man-girl-boy":"\u{1F468}\u200D\u{1F468}\u200D\u{1F467}\u200D\u{1F466}","man-man-girl-girl":"\u{1F468}\u200D\u{1F468}\u200D\u{1F467}\u200D\u{1F467}","man-woman-boy":"\u{1F468}\u200D\u{1F469}\u200D\u{1F466}",family:"\u{1F468}\u200D\u{1F469}\u200D\u{1F466}","man-woman-boy-boy":"\u{1F468}\u200D\u{1F469}\u200D\u{1F466}\u200D\u{1F466}","man-woman-girl":"\u{1F468}\u200D\u{1F469}\u200D\u{1F467}","man-woman-girl-boy":"\u{1F468}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F466}","man-woman-girl-girl":"\u{1F468}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F467}","male-technologist":"\u{1F468}\u200D\u{1F4BB}","male-office-worker":"\u{1F468}\u200D\u{1F4BC}","male-mechanic":"\u{1F468}\u200D\u{1F527}","male-scientist":"\u{1F468}\u200D\u{1F52C}","male-astronaut":"\u{1F468}\u200D\u{1F680}","male-firefighter":"\u{1F468}\u200D\u{1F692}",man_with_probing_cane:"\u{1F468}\u200D\u{1F9AF}",red_haired_man:"\u{1F468}\u200D\u{1F9B0}",curly_haired_man:"\u{1F468}\u200D\u{1F9B1}",bald_man:"\u{1F468}\u200D\u{1F9B2}",white_haired_man:"\u{1F468}\u200D\u{1F9B3}",man_in_motorized_wheelchair:"\u{1F468}\u200D\u{1F9BC}",man_in_manual_wheelchair:"\u{1F468}\u200D\u{1F9BD}","male-doctor":"\u{1F468}\u200D\u2695\uFE0F","male-judge":"\u{1F468}\u200D\u2696\uFE0F","male-pilot":"\u{1F468}\u200D\u2708\uFE0F","man-heart-man":"\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F468}","man-kiss-man":"\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}",man:"\u{1F468}","female-farmer":"\u{1F469}\u200D\u{1F33E}","female-cook":"\u{1F469}\u200D\u{1F373}",woman_feeding_baby:"\u{1F469}\u200D\u{1F37C}","female-student":"\u{1F469}\u200D\u{1F393}","female-singer":"\u{1F469}\u200D\u{1F3A4}","female-artist":"\u{1F469}\u200D\u{1F3A8}","female-teacher":"\u{1F469}\u200D\u{1F3EB}","female-factory-worker":"\u{1F469}\u200D\u{1F3ED}","woman-boy-boy":"\u{1F469}\u200D\u{1F466}\u200D\u{1F466}","woman-boy":"\u{1F469}\u200D\u{1F466}","woman-girl-boy":"\u{1F469}\u200D\u{1F467}\u200D\u{1F466}","woman-girl-girl":"\u{1F469}\u200D\u{1F467}\u200D\u{1F467}","woman-girl":"\u{1F469}\u200D\u{1F467}","woman-woman-boy":"\u{1F469}\u200D\u{1F469}\u200D\u{1F466}","woman-woman-boy-boy":"\u{1F469}\u200D\u{1F469}\u200D\u{1F466}\u200D\u{1F466}","woman-woman-girl":"\u{1F469}\u200D\u{1F469}\u200D\u{1F467}","woman-woman-girl-boy":"\u{1F469}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F466}","woman-woman-girl-girl":"\u{1F469}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F467}","female-technologist":"\u{1F469}\u200D\u{1F4BB}","female-office-worker":"\u{1F469}\u200D\u{1F4BC}","female-mechanic":"\u{1F469}\u200D\u{1F527}","female-scientist":"\u{1F469}\u200D\u{1F52C}","female-astronaut":"\u{1F469}\u200D\u{1F680}","female-firefighter":"\u{1F469}\u200D\u{1F692}",woman_with_probing_cane:"\u{1F469}\u200D\u{1F9AF}",red_haired_woman:"\u{1F469}\u200D\u{1F9B0}",curly_haired_woman:"\u{1F469}\u200D\u{1F9B1}",bald_woman:"\u{1F469}\u200D\u{1F9B2}",white_haired_woman:"\u{1F469}\u200D\u{1F9B3}",woman_in_motorized_wheelchair:"\u{1F469}\u200D\u{1F9BC}",woman_in_manual_wheelchair:"\u{1F469}\u200D\u{1F9BD}","female-doctor":"\u{1F469}\u200D\u2695\uFE0F","female-judge":"\u{1F469}\u200D\u2696\uFE0F","female-pilot":"\u{1F469}\u200D\u2708\uFE0F","woman-heart-man":"\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F468}","woman-heart-woman":"\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F469}","woman-kiss-man":"\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}","woman-kiss-woman":"\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}",woman:"\u{1F469}",man_and_woman_holding_hands:"\u{1F46B}",woman_and_man_holding_hands:"\u{1F46B}",couple:"\u{1F46B}",two_men_holding_hands:"\u{1F46C}",men_holding_hands:"\u{1F46C}",two_women_holding_hands:"\u{1F46D}",women_holding_hands:"\u{1F46D}","female-police-officer":"\u{1F46E}\u200D\u2640\uFE0F","male-police-officer":"\u{1F46E}\u200D\u2642\uFE0F",cop:"\u{1F46E}\u200D\u2642\uFE0F","women-with-bunny-ears-partying":"\u{1F46F}\u200D\u2640\uFE0F","woman-with-bunny-ears-partying":"\u{1F46F}\u200D\u2640\uFE0F",dancers:"\u{1F46F}\u200D\u2640\uFE0F","men-with-bunny-ears-partying":"\u{1F46F}\u200D\u2642\uFE0F","man-with-bunny-ears-partying":"\u{1F46F}\u200D\u2642\uFE0F",woman_with_veil:"\u{1F470}\u200D\u2640\uFE0F",man_with_veil:"\u{1F470}\u200D\u2642\uFE0F",bride_with_veil:"\u{1F470}","blond-haired-woman":"\u{1F471}\u200D\u2640\uFE0F","blond-haired-man":"\u{1F471}\u200D\u2642\uFE0F",person_with_blond_hair:"\u{1F471}\u200D\u2642\uFE0F",man_with_gua_pi_mao:"\u{1F472}","woman-wearing-turban":"\u{1F473}\u200D\u2640\uFE0F",woman_with_turban:"\u{1F473}\u200D\u2640\uFE0F","man-wearing-turban":"\u{1F473}\u200D\u2642\uFE0F",man_with_turban:"\u{1F473}\u200D\u2642\uFE0F",older_man:"\u{1F474}",older_woman:"\u{1F475}",baby:"\u{1F476}","female-construction-worker":"\u{1F477}\u200D\u2640\uFE0F","male-construction-worker":"\u{1F477}\u200D\u2642\uFE0F",construction_worker:"\u{1F477}\u200D\u2642\uFE0F",princess:"\u{1F478}",japanese_ogre:"\u{1F479}",japanese_goblin:"\u{1F47A}",ghost:"\u{1F47B}",angel:"\u{1F47C}",alien:"\u{1F47D}",space_invader:"\u{1F47E}",imp:"\u{1F47F}",skull:"\u{1F480}","woman-tipping-hand":"\u{1F481}\u200D\u2640\uFE0F",information_desk_person:"\u{1F481}\u200D\u2640\uFE0F",tipping_hand_woman:"\u{1F481}\u200D\u2640\uFE0F","man-tipping-hand":"\u{1F481}\u200D\u2642\uFE0F",tipping_hand_man:"\u{1F481}\u200D\u2642\uFE0F","female-guard":"\u{1F482}\u200D\u2640\uFE0F",guardswoman:"\u{1F482}\u200D\u2640\uFE0F","male-guard":"\u{1F482}\u200D\u2642\uFE0F",guardsman:"\u{1F482}\u200D\u2642\uFE0F",dancer:"\u{1F483}",lipstick:"\u{1F484}",nail_care:"\u{1F485}","woman-getting-massage":"\u{1F486}\u200D\u2640\uFE0F",massage:"\u{1F486}\u200D\u2640\uFE0F","man-getting-massage":"\u{1F486}\u200D\u2642\uFE0F","woman-getting-haircut":"\u{1F487}\u200D\u2640\uFE0F",haircut:"\u{1F487}\u200D\u2640\uFE0F","man-getting-haircut":"\u{1F487}\u200D\u2642\uFE0F",barber:"\u{1F488}",syringe:"\u{1F489}",pill:"\u{1F48A}",kiss:"\u{1F48B}",love_letter:"\u{1F48C}",ring:"\u{1F48D}",gem:"\u{1F48E}",couplekiss:"\u{1F48F}",bouquet:"\u{1F490}",couple_with_heart:"\u{1F491}",wedding:"\u{1F492}",heartbeat:"\u{1F493}",broken_heart:"\u{1F494}",two_hearts:"\u{1F495}",sparkling_heart:"\u{1F496}",heartpulse:"\u{1F497}",cupid:"\u{1F498}",blue_heart:"\u{1F499}",green_heart:"\u{1F49A}",yellow_heart:"\u{1F49B}",purple_heart:"\u{1F49C}",gift_heart:"\u{1F49D}",revolving_hearts:"\u{1F49E}",heart_decoration:"\u{1F49F}",diamond_shape_with_a_dot_inside:"\u{1F4A0}",bulb:"\u{1F4A1}",anger:"\u{1F4A2}",bomb:"\u{1F4A3}",zzz:"\u{1F4A4}",boom:"\u{1F4A5}",collision:"\u{1F4A5}",sweat_drops:"\u{1F4A6}",droplet:"\u{1F4A7}",dash:"\u{1F4A8}",hankey:"\u{1F4A9}",poop:"\u{1F4A9}",shit:"\u{1F4A9}",muscle:"\u{1F4AA}",dizzy:"\u{1F4AB}",speech_balloon:"\u{1F4AC}",thought_balloon:"\u{1F4AD}",white_flower:"\u{1F4AE}",moneybag:"\u{1F4B0}",currency_exchange:"\u{1F4B1}",heavy_dollar_sign:"\u{1F4B2}",credit_card:"\u{1F4B3}",yen:"\u{1F4B4}",dollar:"\u{1F4B5}",euro:"\u{1F4B6}",pound:"\u{1F4B7}",money_with_wings:"\u{1F4B8}",chart:"\u{1F4B9}",seat:"\u{1F4BA}",computer:"\u{1F4BB}",briefcase:"\u{1F4BC}",minidisc:"\u{1F4BD}",floppy_disk:"\u{1F4BE}",cd:"\u{1F4BF}",dvd:"\u{1F4C0}",file_folder:"\u{1F4C1}",open_file_folder:"\u{1F4C2}",page_with_curl:"\u{1F4C3}",page_facing_up:"\u{1F4C4}",date:"\u{1F4C5}",calendar:"\u{1F4C6}",card_index:"\u{1F4C7}",chart_with_upwards_trend:"\u{1F4C8}",chart_with_downwards_trend:"\u{1F4C9}",bar_chart:"\u{1F4CA}",clipboard:"\u{1F4CB}",pushpin:"\u{1F4CC}",round_pushpin:"\u{1F4CD}",paperclip:"\u{1F4CE}",straight_ruler:"\u{1F4CF}",triangular_ruler:"\u{1F4D0}",bookmark_tabs:"\u{1F4D1}",ledger:"\u{1F4D2}",notebook:"\u{1F4D3}",notebook_with_decorative_cover:"\u{1F4D4}",closed_book:"\u{1F4D5}",book:"\u{1F4D6}",open_book:"\u{1F4D6}",green_book:"\u{1F4D7}",blue_book:"\u{1F4D8}",orange_book:"\u{1F4D9}",books:"\u{1F4DA}",name_badge:"\u{1F4DB}",scroll:"\u{1F4DC}",memo:"\u{1F4DD}",pencil:"\u{1F4DD}",telephone_receiver:"\u{1F4DE}",pager:"\u{1F4DF}",fax:"\u{1F4E0}",satellite_antenna:"\u{1F4E1}",loudspeaker:"\u{1F4E2}",mega:"\u{1F4E3}",outbox_tray:"\u{1F4E4}",inbox_tray:"\u{1F4E5}",package:"\u{1F4E6}","e-mail":"\u{1F4E7}",incoming_envelope:"\u{1F4E8}",envelope_with_arrow:"\u{1F4E9}",mailbox_closed:"\u{1F4EA}",mailbox:"\u{1F4EB}",mailbox_with_mail:"\u{1F4EC}",mailbox_with_no_mail:"\u{1F4ED}",postbox:"\u{1F4EE}",postal_horn:"\u{1F4EF}",newspaper:"\u{1F4F0}",iphone:"\u{1F4F1}",calling:"\u{1F4F2}",vibration_mode:"\u{1F4F3}",mobile_phone_off:"\u{1F4F4}",no_mobile_phones:"\u{1F4F5}",signal_strength:"\u{1F4F6}",camera:"\u{1F4F7}",camera_with_flash:"\u{1F4F8}",video_camera:"\u{1F4F9}",tv:"\u{1F4FA}",radio:"\u{1F4FB}",vhs:"\u{1F4FC}",film_projector:"\u{1F4FD}\uFE0F",prayer_beads:"\u{1F4FF}",twisted_rightwards_arrows:"\u{1F500}",repeat:"\u{1F501}",repeat_one:"\u{1F502}",arrows_clockwise:"\u{1F503}",arrows_counterclockwise:"\u{1F504}",low_brightness:"\u{1F505}",high_brightness:"\u{1F506}",mute:"\u{1F507}",speaker:"\u{1F508}",sound:"\u{1F509}",loud_sound:"\u{1F50A}",battery:"\u{1F50B}",electric_plug:"\u{1F50C}",mag:"\u{1F50D}",mag_right:"\u{1F50E}",lock_with_ink_pen:"\u{1F50F}",closed_lock_with_key:"\u{1F510}",key:"\u{1F511}",lock:"\u{1F512}",unlock:"\u{1F513}",bell:"\u{1F514}",no_bell:"\u{1F515}",bookmark:"\u{1F516}",link:"\u{1F517}",radio_button:"\u{1F518}",back:"\u{1F519}",end:"\u{1F51A}",on:"\u{1F51B}",soon:"\u{1F51C}",top:"\u{1F51D}",underage:"\u{1F51E}",keycap_ten:"\u{1F51F}",capital_abcd:"\u{1F520}",abcd:"\u{1F521}",symbols:"\u{1F523}",abc:"\u{1F524}",fire:"\u{1F525}",flashlight:"\u{1F526}",wrench:"\u{1F527}",hammer:"\u{1F528}",nut_and_bolt:"\u{1F529}",hocho:"\u{1F52A}",knife:"\u{1F52A}",gun:"\u{1F52B}",microscope:"\u{1F52C}",telescope:"\u{1F52D}",crystal_ball:"\u{1F52E}",six_pointed_star:"\u{1F52F}",beginner:"\u{1F530}",trident:"\u{1F531}",black_square_button:"\u{1F532}",white_square_button:"\u{1F533}",red_circle:"\u{1F534}",large_blue_circle:"\u{1F535}",large_orange_diamond:"\u{1F536}",large_blue_diamond:"\u{1F537}",small_orange_diamond:"\u{1F538}",small_blue_diamond:"\u{1F539}",small_red_triangle:"\u{1F53A}",small_red_triangle_down:"\u{1F53B}",arrow_up_small:"\u{1F53C}",arrow_down_small:"\u{1F53D}",om_symbol:"\u{1F549}\uFE0F",dove_of_peace:"\u{1F54A}\uFE0F",kaaba:"\u{1F54B}",mosque:"\u{1F54C}",synagogue:"\u{1F54D}",menorah_with_nine_branches:"\u{1F54E}",clock1:"\u{1F550}",clock2:"\u{1F551}",clock3:"\u{1F552}",clock4:"\u{1F553}",clock5:"\u{1F554}",clock6:"\u{1F555}",clock7:"\u{1F556}",clock8:"\u{1F557}",clock9:"\u{1F558}",clock10:"\u{1F559}",clock11:"\u{1F55A}",clock12:"\u{1F55B}",clock130:"\u{1F55C}",clock230:"\u{1F55D}",clock330:"\u{1F55E}",clock430:"\u{1F55F}",clock530:"\u{1F560}",clock630:"\u{1F561}",clock730:"\u{1F562}",clock830:"\u{1F563}",clock930:"\u{1F564}",clock1030:"\u{1F565}",clock1130:"\u{1F566}",clock1230:"\u{1F567}",candle:"\u{1F56F}\uFE0F",mantelpiece_clock:"\u{1F570}\uFE0F",hole:"\u{1F573}\uFE0F",man_in_business_suit_levitating:"\u{1F574}\uFE0F","female-detective":"\u{1F575}\uFE0F\u200D\u2640\uFE0F","male-detective":"\u{1F575}\uFE0F\u200D\u2642\uFE0F",sleuth_or_spy:"\u{1F575}\uFE0F\u200D\u2642\uFE0F",dark_sunglasses:"\u{1F576}\uFE0F",spider:"\u{1F577}\uFE0F",spider_web:"\u{1F578}\uFE0F",joystick:"\u{1F579}\uFE0F",man_dancing:"\u{1F57A}",linked_paperclips:"\u{1F587}\uFE0F",lower_left_ballpoint_pen:"\u{1F58A}\uFE0F",lower_left_fountain_pen:"\u{1F58B}\uFE0F",lower_left_paintbrush:"\u{1F58C}\uFE0F",lower_left_crayon:"\u{1F58D}\uFE0F",raised_hand_with_fingers_splayed:"\u{1F590}\uFE0F",middle_finger:"\u{1F595}",reversed_hand_with_middle_finger_extended:"\u{1F595}","spock-hand":"\u{1F596}",black_heart:"\u{1F5A4}",desktop_computer:"\u{1F5A5}\uFE0F",printer:"\u{1F5A8}\uFE0F",three_button_mouse:"\u{1F5B1}\uFE0F",trackball:"\u{1F5B2}\uFE0F",frame_with_picture:"\u{1F5BC}\uFE0F",card_index_dividers:"\u{1F5C2}\uFE0F",card_file_box:"\u{1F5C3}\uFE0F",file_cabinet:"\u{1F5C4}\uFE0F",wastebasket:"\u{1F5D1}\uFE0F",spiral_note_pad:"\u{1F5D2}\uFE0F",spiral_calendar_pad:"\u{1F5D3}\uFE0F",compression:"\u{1F5DC}\uFE0F",old_key:"\u{1F5DD}\uFE0F",rolled_up_newspaper:"\u{1F5DE}\uFE0F",dagger_knife:"\u{1F5E1}\uFE0F",speaking_head_in_silhouette:"\u{1F5E3}\uFE0F",left_speech_bubble:"\u{1F5E8}\uFE0F",right_anger_bubble:"\u{1F5EF}\uFE0F",ballot_box_with_ballot:"\u{1F5F3}\uFE0F",world_map:"\u{1F5FA}\uFE0F",mount_fuji:"\u{1F5FB}",tokyo_tower:"\u{1F5FC}",statue_of_liberty:"\u{1F5FD}",japan:"\u{1F5FE}",moyai:"\u{1F5FF}",grinning:"\u{1F600}",grin:"\u{1F601}",joy:"\u{1F602}",smiley:"\u{1F603}",smile:"\u{1F604}",sweat_smile:"\u{1F605}",laughing:"\u{1F606}",satisfied:"\u{1F606}",innocent:"\u{1F607}",smiling_imp:"\u{1F608}",wink:"\u{1F609}",blush:"\u{1F60A}",yum:"\u{1F60B}",relieved:"\u{1F60C}",heart_eyes:"\u{1F60D}",sunglasses:"\u{1F60E}",smirk:"\u{1F60F}",neutral_face:"\u{1F610}",expressionless:"\u{1F611}",unamused:"\u{1F612}",sweat:"\u{1F613}",pensive:"\u{1F614}",confused:"\u{1F615}",confounded:"\u{1F616}",kissing:"\u{1F617}",kissing_heart:"\u{1F618}",kissing_smiling_eyes:"\u{1F619}",kissing_closed_eyes:"\u{1F61A}",stuck_out_tongue:"\u{1F61B}",stuck_out_tongue_winking_eye:"\u{1F61C}",stuck_out_tongue_closed_eyes:"\u{1F61D}",disappointed:"\u{1F61E}",worried:"\u{1F61F}",angry:"\u{1F620}",rage:"\u{1F621}",cry:"\u{1F622}",persevere:"\u{1F623}",triumph:"\u{1F624}",disappointed_relieved:"\u{1F625}",frowning:"\u{1F626}",anguished:"\u{1F627}",fearful:"\u{1F628}",weary:"\u{1F629}",sleepy:"\u{1F62A}",tired_face:"\u{1F62B}",grimacing:"\u{1F62C}",sob:"\u{1F62D}",face_exhaling:"\u{1F62E}\u200D\u{1F4A8}",open_mouth:"\u{1F62E}",hushed:"\u{1F62F}",cold_sweat:"\u{1F630}",scream:"\u{1F631}",astonished:"\u{1F632}",flushed:"\u{1F633}",sleeping:"\u{1F634}",face_with_spiral_eyes:"\u{1F635}\u200D\u{1F4AB}",dizzy_face:"\u{1F635}",face_in_clouds:"\u{1F636}\u200D\u{1F32B}\uFE0F",no_mouth:"\u{1F636}",mask:"\u{1F637}",smile_cat:"\u{1F638}",joy_cat:"\u{1F639}",smiley_cat:"\u{1F63A}",heart_eyes_cat:"\u{1F63B}",smirk_cat:"\u{1F63C}",kissing_cat:"\u{1F63D}",pouting_cat:"\u{1F63E}",crying_cat_face:"\u{1F63F}",scream_cat:"\u{1F640}",slightly_frowning_face:"\u{1F641}",slightly_smiling_face:"\u{1F642}",upside_down_face:"\u{1F643}",face_with_rolling_eyes:"\u{1F644}","woman-gesturing-no":"\u{1F645}\u200D\u2640\uFE0F",no_good:"\u{1F645}\u200D\u2640\uFE0F","man-gesturing-no":"\u{1F645}\u200D\u2642\uFE0F","woman-gesturing-ok":"\u{1F646}\u200D\u2640\uFE0F",ok_woman:"\u{1F646}\u200D\u2640\uFE0F","man-gesturing-ok":"\u{1F646}\u200D\u2642\uFE0F","woman-bowing":"\u{1F647}\u200D\u2640\uFE0F",bowing_woman:"\u{1F647}\u200D\u2640\uFE0F","man-bowing":"\u{1F647}\u200D\u2642\uFE0F",bow:"\u{1F647}\u200D\u2642\uFE0F",bowing_man:"\u{1F647}\u200D\u2642\uFE0F",see_no_evil:"\u{1F648}",hear_no_evil:"\u{1F649}",speak_no_evil:"\u{1F64A}","woman-raising-hand":"\u{1F64B}\u200D\u2640\uFE0F",raising_hand:"\u{1F64B}\u200D\u2640\uFE0F",raising_hand_woman:"\u{1F64B}\u200D\u2640\uFE0F","man-raising-hand":"\u{1F64B}\u200D\u2642\uFE0F",raising_hand_man:"\u{1F64B}\u200D\u2642\uFE0F",raised_hands:"\u{1F64C}","woman-frowning":"\u{1F64D}\u200D\u2640\uFE0F",person_frowning:"\u{1F64D}\u200D\u2640\uFE0F",frowning_woman:"\u{1F64D}\u200D\u2640\uFE0F","man-frowning":"\u{1F64D}\u200D\u2642\uFE0F",frowning_man:"\u{1F64D}\u200D\u2642\uFE0F","woman-pouting":"\u{1F64E}\u200D\u2640\uFE0F",person_with_pouting_face:"\u{1F64E}\u200D\u2640\uFE0F",pouting_woman:"\u{1F64E}\u200D\u2640\uFE0F","man-pouting":"\u{1F64E}\u200D\u2642\uFE0F",pouting_man:"\u{1F64E}\u200D\u2642\uFE0F",pray:"\u{1F64F}",rocket:"\u{1F680}",helicopter:"\u{1F681}",steam_locomotive:"\u{1F682}",railway_car:"\u{1F683}",bullettrain_side:"\u{1F684}",bullettrain_front:"\u{1F685}",train2:"\u{1F686}",metro:"\u{1F687}",light_rail:"\u{1F688}",station:"\u{1F689}",tram:"\u{1F68A}",train:"\u{1F68B}",bus:"\u{1F68C}",oncoming_bus:"\u{1F68D}",trolleybus:"\u{1F68E}",busstop:"\u{1F68F}",minibus:"\u{1F690}",ambulance:"\u{1F691}",fire_engine:"\u{1F692}",police_car:"\u{1F693}",oncoming_police_car:"\u{1F694}",taxi:"\u{1F695}",oncoming_taxi:"\u{1F696}",car:"\u{1F697}",red_car:"\u{1F697}",oncoming_automobile:"\u{1F698}",blue_car:"\u{1F699}",truck:"\u{1F69A}",articulated_lorry:"\u{1F69B}",tractor:"\u{1F69C}",monorail:"\u{1F69D}",mountain_railway:"\u{1F69E}",suspension_railway:"\u{1F69F}",mountain_cableway:"\u{1F6A0}",aerial_tramway:"\u{1F6A1}",ship:"\u{1F6A2}","woman-rowing-boat":"\u{1F6A3}\u200D\u2640\uFE0F",rowing_woman:"\u{1F6A3}\u200D\u2640\uFE0F","man-rowing-boat":"\u{1F6A3}\u200D\u2642\uFE0F",rowboat:"\u{1F6A3}\u200D\u2642\uFE0F",rowing_man:"\u{1F6A3}\u200D\u2642\uFE0F",speedboat:"\u{1F6A4}",traffic_light:"\u{1F6A5}",vertical_traffic_light:"\u{1F6A6}",construction:"\u{1F6A7}",rotating_light:"\u{1F6A8}",triangular_flag_on_post:"\u{1F6A9}",door:"\u{1F6AA}",no_entry_sign:"\u{1F6AB}",smoking:"\u{1F6AC}",no_smoking:"\u{1F6AD}",put_litter_in_its_place:"\u{1F6AE}",do_not_litter:"\u{1F6AF}",potable_water:"\u{1F6B0}","non-potable_water":"\u{1F6B1}",bike:"\u{1F6B2}",no_bicycles:"\u{1F6B3}","woman-biking":"\u{1F6B4}\u200D\u2640\uFE0F",biking_woman:"\u{1F6B4}\u200D\u2640\uFE0F","man-biking":"\u{1F6B4}\u200D\u2642\uFE0F",bicyclist:"\u{1F6B4}\u200D\u2642\uFE0F",biking_man:"\u{1F6B4}\u200D\u2642\uFE0F","woman-mountain-biking":"\u{1F6B5}\u200D\u2640\uFE0F",mountain_biking_woman:"\u{1F6B5}\u200D\u2640\uFE0F","man-mountain-biking":"\u{1F6B5}\u200D\u2642\uFE0F",mountain_bicyclist:"\u{1F6B5}\u200D\u2642\uFE0F",mountain_biking_man:"\u{1F6B5}\u200D\u2642\uFE0F","woman-walking":"\u{1F6B6}\u200D\u2640\uFE0F",walking_woman:"\u{1F6B6}\u200D\u2640\uFE0F","man-walking":"\u{1F6B6}\u200D\u2642\uFE0F",walking:"\u{1F6B6}\u200D\u2642\uFE0F",walking_man:"\u{1F6B6}\u200D\u2642\uFE0F",no_pedestrians:"\u{1F6B7}",children_crossing:"\u{1F6B8}",mens:"\u{1F6B9}",womens:"\u{1F6BA}",restroom:"\u{1F6BB}",baby_symbol:"\u{1F6BC}",toilet:"\u{1F6BD}",wc:"\u{1F6BE}",shower:"\u{1F6BF}",bath:"\u{1F6C0}",bathtub:"\u{1F6C1}",passport_control:"\u{1F6C2}",customs:"\u{1F6C3}",baggage_claim:"\u{1F6C4}",left_luggage:"\u{1F6C5}",couch_and_lamp:"\u{1F6CB}\uFE0F",sleeping_accommodation:"\u{1F6CC}",shopping_bags:"\u{1F6CD}\uFE0F",bellhop_bell:"\u{1F6CE}\uFE0F",bed:"\u{1F6CF}\uFE0F",place_of_worship:"\u{1F6D0}",octagonal_sign:"\u{1F6D1}",shopping_trolley:"\u{1F6D2}",hindu_temple:"\u{1F6D5}",hut:"\u{1F6D6}",elevator:"\u{1F6D7}",hammer_and_wrench:"\u{1F6E0}\uFE0F",shield:"\u{1F6E1}\uFE0F",oil_drum:"\u{1F6E2}\uFE0F",motorway:"\u{1F6E3}\uFE0F",railway_track:"\u{1F6E4}\uFE0F",motor_boat:"\u{1F6E5}\uFE0F",small_airplane:"\u{1F6E9}\uFE0F",airplane_departure:"\u{1F6EB}",airplane_arriving:"\u{1F6EC}",satellite:"\u{1F6F0}\uFE0F",passenger_ship:"\u{1F6F3}\uFE0F",scooter:"\u{1F6F4}",motor_scooter:"\u{1F6F5}",canoe:"\u{1F6F6}",sled:"\u{1F6F7}",flying_saucer:"\u{1F6F8}",skateboard:"\u{1F6F9}",auto_rickshaw:"\u{1F6FA}",pickup_truck:"\u{1F6FB}",roller_skate:"\u{1F6FC}",large_orange_circle:"\u{1F7E0}",large_yellow_circle:"\u{1F7E1}",large_green_circle:"\u{1F7E2}",large_purple_circle:"\u{1F7E3}",large_brown_circle:"\u{1F7E4}",large_red_square:"\u{1F7E5}",large_blue_square:"\u{1F7E6}",large_orange_square:"\u{1F7E7}",large_yellow_square:"\u{1F7E8}",large_green_square:"\u{1F7E9}",large_purple_square:"\u{1F7EA}",large_brown_square:"\u{1F7EB}",pinched_fingers:"\u{1F90C}",white_heart:"\u{1F90D}",brown_heart:"\u{1F90E}",pinching_hand:"\u{1F90F}",zipper_mouth_face:"\u{1F910}",money_mouth_face:"\u{1F911}",face_with_thermometer:"\u{1F912}",nerd_face:"\u{1F913}",thinking_face:"\u{1F914}",face_with_head_bandage:"\u{1F915}",robot_face:"\u{1F916}",hugging_face:"\u{1F917}",the_horns:"\u{1F918}",sign_of_the_horns:"\u{1F918}",call_me_hand:"\u{1F919}",raised_back_of_hand:"\u{1F91A}","left-facing_fist":"\u{1F91B}","right-facing_fist":"\u{1F91C}",handshake:"\u{1F91D}",crossed_fingers:"\u{1F91E}",hand_with_index_and_middle_fingers_crossed:"\u{1F91E}",i_love_you_hand_sign:"\u{1F91F}",face_with_cowboy_hat:"\u{1F920}",clown_face:"\u{1F921}",nauseated_face:"\u{1F922}",rolling_on_the_floor_laughing:"\u{1F923}",drooling_face:"\u{1F924}",lying_face:"\u{1F925}","woman-facepalming":"\u{1F926}\u200D\u2640\uFE0F","man-facepalming":"\u{1F926}\u200D\u2642\uFE0F",face_palm:"\u{1F926}",sneezing_face:"\u{1F927}",face_with_raised_eyebrow:"\u{1F928}",face_with_one_eyebrow_raised:"\u{1F928}","star-struck":"\u{1F929}",grinning_face_with_star_eyes:"\u{1F929}",zany_face:"\u{1F92A}",grinning_face_with_one_large_and_one_small_eye:"\u{1F92A}",shushing_face:"\u{1F92B}",face_with_finger_covering_closed_lips:"\u{1F92B}",face_with_symbols_on_mouth:"\u{1F92C}",serious_face_with_symbols_covering_mouth:"\u{1F92C}",face_with_hand_over_mouth:"\u{1F92D}",smiling_face_with_smiling_eyes_and_hand_covering_mouth:"\u{1F92D}",face_vomiting:"\u{1F92E}",face_with_open_mouth_vomiting:"\u{1F92E}",exploding_head:"\u{1F92F}",shocked_face_with_exploding_head:"\u{1F92F}",pregnant_woman:"\u{1F930}","breast-feeding":"\u{1F931}",palms_up_together:"\u{1F932}",selfie:"\u{1F933}",prince:"\u{1F934}",woman_in_tuxedo:"\u{1F935}\u200D\u2640\uFE0F",man_in_tuxedo:"\u{1F935}\u200D\u2642\uFE0F",person_in_tuxedo:"\u{1F935}",mrs_claus:"\u{1F936}",mother_christmas:"\u{1F936}","woman-shrugging":"\u{1F937}\u200D\u2640\uFE0F","man-shrugging":"\u{1F937}\u200D\u2642\uFE0F",shrug:"\u{1F937}","woman-cartwheeling":"\u{1F938}\u200D\u2640\uFE0F","man-cartwheeling":"\u{1F938}\u200D\u2642\uFE0F",person_doing_cartwheel:"\u{1F938}","woman-juggling":"\u{1F939}\u200D\u2640\uFE0F","man-juggling":"\u{1F939}\u200D\u2642\uFE0F",juggling:"\u{1F939}",fencer:"\u{1F93A}","woman-wrestling":"\u{1F93C}\u200D\u2640\uFE0F","man-wrestling":"\u{1F93C}\u200D\u2642\uFE0F",wrestlers:"\u{1F93C}","woman-playing-water-polo":"\u{1F93D}\u200D\u2640\uFE0F","man-playing-water-polo":"\u{1F93D}\u200D\u2642\uFE0F",water_polo:"\u{1F93D}","woman-playing-handball":"\u{1F93E}\u200D\u2640\uFE0F","man-playing-handball":"\u{1F93E}\u200D\u2642\uFE0F",handball:"\u{1F93E}",diving_mask:"\u{1F93F}",wilted_flower:"\u{1F940}",drum_with_drumsticks:"\u{1F941}",clinking_glasses:"\u{1F942}",tumbler_glass:"\u{1F943}",spoon:"\u{1F944}",goal_net:"\u{1F945}",first_place_medal:"\u{1F947}",second_place_medal:"\u{1F948}",third_place_medal:"\u{1F949}",boxing_glove:"\u{1F94A}",martial_arts_uniform:"\u{1F94B}",curling_stone:"\u{1F94C}",lacrosse:"\u{1F94D}",softball:"\u{1F94E}",flying_disc:"\u{1F94F}",croissant:"\u{1F950}",avocado:"\u{1F951}",cucumber:"\u{1F952}",bacon:"\u{1F953}",potato:"\u{1F954}",carrot:"\u{1F955}",baguette_bread:"\u{1F956}",green_salad:"\u{1F957}",shallow_pan_of_food:"\u{1F958}",stuffed_flatbread:"\u{1F959}",egg:"\u{1F95A}",glass_of_milk:"\u{1F95B}",peanuts:"\u{1F95C}",kiwifruit:"\u{1F95D}",pancakes:"\u{1F95E}",dumpling:"\u{1F95F}",fortune_cookie:"\u{1F960}",takeout_box:"\u{1F961}",chopsticks:"\u{1F962}",bowl_with_spoon:"\u{1F963}",cup_with_straw:"\u{1F964}",coconut:"\u{1F965}",broccoli:"\u{1F966}",pie:"\u{1F967}",pretzel:"\u{1F968}",cut_of_meat:"\u{1F969}",sandwich:"\u{1F96A}",canned_food:"\u{1F96B}",leafy_green:"\u{1F96C}",mango:"\u{1F96D}",moon_cake:"\u{1F96E}",bagel:"\u{1F96F}",smiling_face_with_3_hearts:"\u{1F970}",yawning_face:"\u{1F971}",smiling_face_with_tear:"\u{1F972}",partying_face:"\u{1F973}",woozy_face:"\u{1F974}",hot_face:"\u{1F975}",cold_face:"\u{1F976}",ninja:"\u{1F977}",disguised_face:"\u{1F978}",pleading_face:"\u{1F97A}",sari:"\u{1F97B}",lab_coat:"\u{1F97C}",goggles:"\u{1F97D}",hiking_boot:"\u{1F97E}",womans_flat_shoe:"\u{1F97F}",crab:"\u{1F980}",lion_face:"\u{1F981}",scorpion:"\u{1F982}",turkey:"\u{1F983}",unicorn_face:"\u{1F984}",eagle:"\u{1F985}",duck:"\u{1F986}",bat:"\u{1F987}",shark:"\u{1F988}",owl:"\u{1F989}",fox_face:"\u{1F98A}",butterfly:"\u{1F98B}",deer:"\u{1F98C}",gorilla:"\u{1F98D}",lizard:"\u{1F98E}",rhinoceros:"\u{1F98F}",shrimp:"\u{1F990}",squid:"\u{1F991}",giraffe_face:"\u{1F992}",zebra_face:"\u{1F993}",hedgehog:"\u{1F994}",sauropod:"\u{1F995}","t-rex":"\u{1F996}",cricket:"\u{1F997}",kangaroo:"\u{1F998}",llama:"\u{1F999}",peacock:"\u{1F99A}",hippopotamus:"\u{1F99B}",parrot:"\u{1F99C}",raccoon:"\u{1F99D}",lobster:"\u{1F99E}",mosquito:"\u{1F99F}",microbe:"\u{1F9A0}",badger:"\u{1F9A1}",swan:"\u{1F9A2}",mammoth:"\u{1F9A3}",dodo:"\u{1F9A4}",sloth:"\u{1F9A5}",otter:"\u{1F9A6}",orangutan:"\u{1F9A7}",skunk:"\u{1F9A8}",flamingo:"\u{1F9A9}",oyster:"\u{1F9AA}",beaver:"\u{1F9AB}",bison:"\u{1F9AC}",seal:"\u{1F9AD}",guide_dog:"\u{1F9AE}",probing_cane:"\u{1F9AF}",bone:"\u{1F9B4}",leg:"\u{1F9B5}",foot:"\u{1F9B6}",tooth:"\u{1F9B7}",female_superhero:"\u{1F9B8}\u200D\u2640\uFE0F",male_superhero:"\u{1F9B8}\u200D\u2642\uFE0F",superhero:"\u{1F9B8}",female_supervillain:"\u{1F9B9}\u200D\u2640\uFE0F",male_supervillain:"\u{1F9B9}\u200D\u2642\uFE0F",supervillain:"\u{1F9B9}",safety_vest:"\u{1F9BA}",ear_with_hearing_aid:"\u{1F9BB}",motorized_wheelchair:"\u{1F9BC}",manual_wheelchair:"\u{1F9BD}",mechanical_arm:"\u{1F9BE}",mechanical_leg:"\u{1F9BF}",cheese_wedge:"\u{1F9C0}",cupcake:"\u{1F9C1}",salt:"\u{1F9C2}",beverage_box:"\u{1F9C3}",garlic:"\u{1F9C4}",onion:"\u{1F9C5}",falafel:"\u{1F9C6}",waffle:"\u{1F9C7}",butter:"\u{1F9C8}",mate_drink:"\u{1F9C9}",ice_cube:"\u{1F9CA}",bubble_tea:"\u{1F9CB}",woman_standing:"\u{1F9CD}\u200D\u2640\uFE0F",man_standing:"\u{1F9CD}\u200D\u2642\uFE0F",standing_person:"\u{1F9CD}",woman_kneeling:"\u{1F9CE}\u200D\u2640\uFE0F",man_kneeling:"\u{1F9CE}\u200D\u2642\uFE0F",kneeling_person:"\u{1F9CE}",deaf_woman:"\u{1F9CF}\u200D\u2640\uFE0F",deaf_man:"\u{1F9CF}\u200D\u2642\uFE0F",deaf_person:"\u{1F9CF}",face_with_monocle:"\u{1F9D0}",farmer:"\u{1F9D1}\u200D\u{1F33E}",cook:"\u{1F9D1}\u200D\u{1F373}",person_feeding_baby:"\u{1F9D1}\u200D\u{1F37C}",mx_claus:"\u{1F9D1}\u200D\u{1F384}",student:"\u{1F9D1}\u200D\u{1F393}",singer:"\u{1F9D1}\u200D\u{1F3A4}",artist:"\u{1F9D1}\u200D\u{1F3A8}",teacher:"\u{1F9D1}\u200D\u{1F3EB}",factory_worker:"\u{1F9D1}\u200D\u{1F3ED}",technologist:"\u{1F9D1}\u200D\u{1F4BB}",office_worker:"\u{1F9D1}\u200D\u{1F4BC}",mechanic:"\u{1F9D1}\u200D\u{1F527}",scientist:"\u{1F9D1}\u200D\u{1F52C}",astronaut:"\u{1F9D1}\u200D\u{1F680}",firefighter:"\u{1F9D1}\u200D\u{1F692}",people_holding_hands:"\u{1F9D1}\u200D\u{1F91D}\u200D\u{1F9D1}",person_with_probing_cane:"\u{1F9D1}\u200D\u{1F9AF}",red_haired_person:"\u{1F9D1}\u200D\u{1F9B0}",curly_haired_person:"\u{1F9D1}\u200D\u{1F9B1}",bald_person:"\u{1F9D1}\u200D\u{1F9B2}",white_haired_person:"\u{1F9D1}\u200D\u{1F9B3}",person_in_motorized_wheelchair:"\u{1F9D1}\u200D\u{1F9BC}",person_in_manual_wheelchair:"\u{1F9D1}\u200D\u{1F9BD}",health_worker:"\u{1F9D1}\u200D\u2695\uFE0F",judge:"\u{1F9D1}\u200D\u2696\uFE0F",pilot:"\u{1F9D1}\u200D\u2708\uFE0F",adult:"\u{1F9D1}",child:"\u{1F9D2}",older_adult:"\u{1F9D3}",woman_with_beard:"\u{1F9D4}\u200D\u2640\uFE0F",man_with_beard:"\u{1F9D4}\u200D\u2642\uFE0F",bearded_person:"\u{1F9D4}",person_with_headscarf:"\u{1F9D5}",woman_in_steamy_room:"\u{1F9D6}\u200D\u2640\uFE0F",man_in_steamy_room:"\u{1F9D6}\u200D\u2642\uFE0F",person_in_steamy_room:"\u{1F9D6}\u200D\u2642\uFE0F",woman_climbing:"\u{1F9D7}\u200D\u2640\uFE0F",person_climbing:"\u{1F9D7}\u200D\u2640\uFE0F",man_climbing:"\u{1F9D7}\u200D\u2642\uFE0F",woman_in_lotus_position:"\u{1F9D8}\u200D\u2640\uFE0F",person_in_lotus_position:"\u{1F9D8}\u200D\u2640\uFE0F",man_in_lotus_position:"\u{1F9D8}\u200D\u2642\uFE0F",female_mage:"\u{1F9D9}\u200D\u2640\uFE0F",mage:"\u{1F9D9}\u200D\u2640\uFE0F",male_mage:"\u{1F9D9}\u200D\u2642\uFE0F",female_fairy:"\u{1F9DA}\u200D\u2640\uFE0F",fairy:"\u{1F9DA}\u200D\u2640\uFE0F",male_fairy:"\u{1F9DA}\u200D\u2642\uFE0F",female_vampire:"\u{1F9DB}\u200D\u2640\uFE0F",vampire:"\u{1F9DB}\u200D\u2640\uFE0F",male_vampire:"\u{1F9DB}\u200D\u2642\uFE0F",mermaid:"\u{1F9DC}\u200D\u2640\uFE0F",merman:"\u{1F9DC}\u200D\u2642\uFE0F",merperson:"\u{1F9DC}\u200D\u2642\uFE0F",female_elf:"\u{1F9DD}\u200D\u2640\uFE0F",male_elf:"\u{1F9DD}\u200D\u2642\uFE0F",elf:"\u{1F9DD}\u200D\u2642\uFE0F",female_genie:"\u{1F9DE}\u200D\u2640\uFE0F",male_genie:"\u{1F9DE}\u200D\u2642\uFE0F",genie:"\u{1F9DE}\u200D\u2642\uFE0F",female_zombie:"\u{1F9DF}\u200D\u2640\uFE0F",male_zombie:"\u{1F9DF}\u200D\u2642\uFE0F",zombie:"\u{1F9DF}\u200D\u2642\uFE0F",brain:"\u{1F9E0}",orange_heart:"\u{1F9E1}",billed_cap:"\u{1F9E2}",scarf:"\u{1F9E3}",gloves:"\u{1F9E4}",coat:"\u{1F9E5}",socks:"\u{1F9E6}",red_envelope:"\u{1F9E7}",firecracker:"\u{1F9E8}",jigsaw:"\u{1F9E9}",test_tube:"\u{1F9EA}",petri_dish:"\u{1F9EB}",dna:"\u{1F9EC}",compass:"\u{1F9ED}",abacus:"\u{1F9EE}",fire_extinguisher:"\u{1F9EF}",toolbox:"\u{1F9F0}",bricks:"\u{1F9F1}",magnet:"\u{1F9F2}",luggage:"\u{1F9F3}",lotion_bottle:"\u{1F9F4}",thread:"\u{1F9F5}",yarn:"\u{1F9F6}",safety_pin:"\u{1F9F7}",teddy_bear:"\u{1F9F8}",broom:"\u{1F9F9}",basket:"\u{1F9FA}",roll_of_paper:"\u{1F9FB}",soap:"\u{1F9FC}",sponge:"\u{1F9FD}",receipt:"\u{1F9FE}",nazar_amulet:"\u{1F9FF}",ballet_shoes:"\u{1FA70}","one-piece_swimsuit":"\u{1FA71}",briefs:"\u{1FA72}",shorts:"\u{1FA73}",thong_sandal:"\u{1FA74}",drop_of_blood:"\u{1FA78}",adhesive_bandage:"\u{1FA79}",stethoscope:"\u{1FA7A}","yo-yo":"\u{1FA80}",kite:"\u{1FA81}",parachute:"\u{1FA82}",boomerang:"\u{1FA83}",magic_wand:"\u{1FA84}",pinata:"\u{1FA85}",nesting_dolls:"\u{1FA86}",ringed_planet:"\u{1FA90}",chair:"\u{1FA91}",razor:"\u{1FA92}",axe:"\u{1FA93}",diya_lamp:"\u{1FA94}",banjo:"\u{1FA95}",military_helmet:"\u{1FA96}",accordion:"\u{1FA97}",long_drum:"\u{1FA98}",coin:"\u{1FA99}",carpentry_saw:"\u{1FA9A}",screwdriver:"\u{1FA9B}",ladder:"\u{1FA9C}",hook:"\u{1FA9D}",mirror:"\u{1FA9E}",window:"\u{1FA9F}",plunger:"\u{1FAA0}",sewing_needle:"\u{1FAA1}",knot:"\u{1FAA2}",bucket:"\u{1FAA3}",mouse_trap:"\u{1FAA4}",toothbrush:"\u{1FAA5}",headstone:"\u{1FAA6}",placard:"\u{1FAA7}",rock:"\u{1FAA8}",fly:"\u{1FAB0}",worm:"\u{1FAB1}",beetle:"\u{1FAB2}",cockroach:"\u{1FAB3}",potted_plant:"\u{1FAB4}",wood:"\u{1FAB5}",feather:"\u{1FAB6}",anatomical_heart:"\u{1FAC0}",lungs:"\u{1FAC1}",people_hugging:"\u{1FAC2}",blueberries:"\u{1FAD0}",bell_pepper:"\u{1FAD1}",olive:"\u{1FAD2}",flatbread:"\u{1FAD3}",tamale:"\u{1FAD4}",fondue:"\u{1FAD5}",teapot:"\u{1FAD6}",bangbang:"\u203C\uFE0F",interrobang:"\u2049\uFE0F",tm:"\u2122\uFE0F",information_source:"\u2139\uFE0F",left_right_arrow:"\u2194\uFE0F",arrow_up_down:"\u2195\uFE0F",arrow_upper_left:"\u2196\uFE0F",arrow_upper_right:"\u2197\uFE0F",arrow_lower_right:"\u2198\uFE0F",arrow_lower_left:"\u2199\uFE0F",leftwards_arrow_with_hook:"\u21A9\uFE0F",arrow_right_hook:"\u21AA\uFE0F",watch:"\u231A",hourglass:"\u231B",keyboard:"\u2328\uFE0F",eject:"\u23CF\uFE0F",fast_forward:"\u23E9",rewind:"\u23EA",arrow_double_up:"\u23EB",arrow_double_down:"\u23EC",black_right_pointing_double_triangle_with_vertical_bar:"\u23ED\uFE0F",black_left_pointing_double_triangle_with_vertical_bar:"\u23EE\uFE0F",black_right_pointing_triangle_with_double_vertical_bar:"\u23EF\uFE0F",alarm_clock:"\u23F0",stopwatch:"\u23F1\uFE0F",timer_clock:"\u23F2\uFE0F",hourglass_flowing_sand:"\u23F3",double_vertical_bar:"\u23F8\uFE0F",black_square_for_stop:"\u23F9\uFE0F",black_circle_for_record:"\u23FA\uFE0F",m:"\u24C2\uFE0F",black_small_square:"\u25AA\uFE0F",white_small_square:"\u25AB\uFE0F",arrow_forward:"\u25B6\uFE0F",arrow_backward:"\u25C0\uFE0F",white_medium_square:"\u25FB\uFE0F",black_medium_square:"\u25FC\uFE0F",white_medium_small_square:"\u25FD",black_medium_small_square:"\u25FE",sunny:"\u2600\uFE0F",cloud:"\u2601\uFE0F",umbrella:"\u2602\uFE0F",snowman:"\u2603\uFE0F",comet:"\u2604\uFE0F",phone:"\u260E\uFE0F",telephone:"\u260E\uFE0F",ballot_box_with_check:"\u2611\uFE0F",shamrock:"\u2618\uFE0F",point_up:"\u261D\uFE0F",skull_and_crossbones:"\u2620\uFE0F",radioactive_sign:"\u2622\uFE0F",biohazard_sign:"\u2623\uFE0F",orthodox_cross:"\u2626\uFE0F",star_and_crescent:"\u262A\uFE0F",peace_symbol:"\u262E\uFE0F",yin_yang:"\u262F\uFE0F",wheel_of_dharma:"\u2638\uFE0F",white_frowning_face:"\u2639\uFE0F",relaxed:"\u263A\uFE0F",female_sign:"\u2640\uFE0F",male_sign:"\u2642\uFE0F",gemini:"\u264A",cancer:"\u264B",leo:"\u264C",virgo:"\u264D",libra:"\u264E",scorpius:"\u264F",chess_pawn:"\u265F\uFE0F",spades:"\u2660\uFE0F",clubs:"\u2663\uFE0F",hearts:"\u2665\uFE0F",diamonds:"\u2666\uFE0F",hotsprings:"\u2668\uFE0F",recycle:"\u267B\uFE0F",infinity:"\u267E\uFE0F",wheelchair:"\u267F",hammer_and_pick:"\u2692\uFE0F",crossed_swords:"\u2694\uFE0F",medical_symbol:"\u2695\uFE0F",staff_of_aesculapius:"\u2695\uFE0F",scales:"\u2696\uFE0F",alembic:"\u2697\uFE0F",gear:"\u2699\uFE0F",atom_symbol:"\u269B\uFE0F",fleur_de_lis:"\u269C\uFE0F",warning:"\u26A0\uFE0F",zap:"\u26A1",transgender_symbol:"\u26A7\uFE0F",white_circle:"\u26AA",black_circle:"\u26AB",coffin:"\u26B0\uFE0F",funeral_urn:"\u26B1\uFE0F",soccer:"\u26BD",baseball:"\u26BE",snowman_without_snow:"\u26C4",partly_sunny:"\u26C5",thunder_cloud_and_rain:"\u26C8\uFE0F",ophiuchus:"\u26CE",pick:"\u26CF\uFE0F",helmet_with_white_cross:"\u26D1\uFE0F",chains:"\u26D3\uFE0F",no_entry:"\u26D4",shinto_shrine:"\u26E9\uFE0F",church:"\u26EA",mountain:"\u26F0\uFE0F",umbrella_on_ground:"\u26F1\uFE0F",fountain:"\u26F2",golf:"\u26F3",ferry:"\u26F4\uFE0F",boat:"\u26F5",sailboat:"\u26F5",skier:"\u26F7\uFE0F",ice_skate:"\u26F8\uFE0F","woman-bouncing-ball":"\u26F9\uFE0F\u200D\u2640\uFE0F","man-bouncing-ball":"\u26F9\uFE0F\u200D\u2642\uFE0F",person_with_ball:"\u26F9\uFE0F\u200D\u2642\uFE0F",tent:"\u26FA",fuelpump:"\u26FD",scissors:"\u2702\uFE0F",airplane:"\u2708\uFE0F",email:"\u2709\uFE0F",envelope:"\u2709\uFE0F",fist:"\u270A",hand:"\u270B",raised_hand:"\u270B",v:"\u270C\uFE0F",writing_hand:"\u270D\uFE0F",pencil2:"\u270F\uFE0F",black_nib:"\u2712\uFE0F",heavy_check_mark:"\u2714\uFE0F",heavy_multiplication_x:"\u2716\uFE0F",latin_cross:"\u271D\uFE0F",star_of_david:"\u2721\uFE0F",eight_spoked_asterisk:"\u2733\uFE0F",eight_pointed_black_star:"\u2734\uFE0F",snowflake:"\u2744\uFE0F",sparkle:"\u2747\uFE0F",x:"\u274C",negative_squared_cross_mark:"\u274E",heavy_heart_exclamation_mark_ornament:"\u2763\uFE0F",heart_on_fire:"\u2764\uFE0F\u200D\u{1F525}",mending_heart:"\u2764\uFE0F\u200D\u{1FA79}",heart:"\u2764\uFE0F",arrow_right:"\u27A1\uFE0F",curly_loop:"\u27B0",loop:"\u27BF",arrow_heading_up:"\u2934\uFE0F",arrow_heading_down:"\u2935\uFE0F",arrow_left:"\u2B05\uFE0F",arrow_up:"\u2B06\uFE0F",arrow_down:"\u2B07\uFE0F",black_large_square:"\u2B1B",white_large_square:"\u2B1C",star:"\u2B50",o:"\u2B55",wavy_dash:"\u3030\uFE0F",part_alternation_mark:"\u303D\uFE0F",congratulations:"\u3297\uFE0F",secret:"\u3299\uFE0F"}});var Ss=K((x2,Is)=>{var js=Cs(),Ve=ya(),hm=/:([a-zA-Z0-9_\-\+]+):/g,gm=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function mt(e){var t=e.indexOf(":");return t>-1?t===e.length-1?(e=e.substring(0,t),mt(e)):(e=e.substr(t+1),mt(e)):e}function Ls(e){return typeof e=="string"&&e.length>0?":"+e+":":e}function xm(e){return typeof e=="string"&&e[0]!==":"?Ls(e):e}var vm=String.fromCharCode(65039),bm=new RegExp(vm,"g");function ht(e){return e.replace(bm,"")}var _a=Object.keys(Ve).reduce(function(e,t){return e[ht(Ve[t])]=t,e},{}),ce={emoji:Ve};ce._get=function(t){return _a[ht(t)]?t:Ve.hasOwnProperty(t)?Ve[t]:xm(t)};ce.get=function(t){return t=mt(t),ce._get(t)};ce.find=function(t){return ce.findByName(t)||ce.findByCode(t)};ce.findByName=function(t){var n=mt(t),a=Ve[n];return a?{emoji:a,key:n}:void 0};ce.findByCode=function(t){var n=ht(t),a=_a[n];return a?{emoji:Ve[a],key:a}:void 0};ce.hasEmoji=function(t){return ce.hasEmojiByName(t)||ce.hasEmojiByCode(t)};ce.hasEmojiByName=function(t){var n=ce.findByName(t);return!!n&&n.key===mt(t)};ce.hasEmojiByCode=function(t){var n=ce.findByCode(t);return!!n&&ht(n.emoji)===ht(t)};ce.which=function(t,n){var a=ht(t),i=_a[a];return n?Ls(i):i};ce.emojify=function(t,n,a){return t?t.split(hm).map(function(r,o){if(o%2===0)return r;var s=ce._get(r),p=s.indexOf(":")>-1;return p&&typeof n=="function"?n(r):!p&&typeof a=="function"?a(s,r):s}).join(""):""};ce.random=function(){var t=Object.keys(Ve),n=Math.floor(Math.random()*t.length),a=t[n],i=ce._get(a);return{key:a,emoji:i}};ce.search=function(t){var n=Object.keys(Ve),a=mt(t),i=n.filter(function(r){return r.toString().indexOf(a)===0});return i.map(function(r){return{key:r,emoji:ce._get(r)}})};ce.unemojify=function(t){if(!t)return"";var n=js(t);return n.map(function(a){return ce.which(a,!0)||a}).join("")};ce.replace=function(t,n,a){if(!t)return"";var i=typeof n=="function"?n:function(){return n},r=js(t),o=r.map(function(s,p){var l=ce.findByCode(s);return l&&a&&r[p+1]===" "&&(r[p+1]=""),l?i(l):s}).join("");return a?o.replace(gm,""):o};ce.strip=function(t){return ce.replace(t,"",!0)};Is.exports=ce});var Wt=K((v2,As)=>{As.exports=Ss()});var fn=K((b2,dn)=>{(function(){"use strict";var e={}.hasOwnProperty;function t(){for(var n=[],a=0;a{"use strict";Object.defineProperty(yn,"__esModule",{value:!0});function Ds(e,t){if(t)return e;throw new Error("Unhandled discriminated union member: "+JSON.stringify(e))}yn.assertNever=Ds;yn.default=Ds});var Js=K((Xs,Va)=>{(function(e){typeof Xs=="object"&&typeof Va<"u"?Va.exports=e():typeof define=="function"&&define.amd?define([],e):(typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:this).JSZip=e()})(function(){return function e(t,n,a){function i(s,p){if(!n[s]){if(!t[s]){var l=typeof require=="function"&&require;if(!p&&l)return l(s,!0);if(r)return r(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var u=n[s]={exports:{}};t[s][0].call(u.exports,function(h){var f=t[s][1][h];return i(f||h)},u,u.exports,e,t,n,a)}return n[s].exports}for(var r=typeof require=="function"&&require,o=0;o>2,u=(3&s)<<4|p>>4,h=1<_?(15&p)<<2|l>>6:64,f=2<_?63&l:64,g.push(r.charAt(c)+r.charAt(u)+r.charAt(h)+r.charAt(f));return g.join("")},n.decode=function(o){var s,p,l,c,u,h,f=0,g=0,x="data:";if(o.substr(0,x.length)===x)throw new Error("Invalid base64 input, it looks like a data url.");var b,_=3*(o=o.replace(/[^A-Za-z0-9\+\/\=]/g,"")).length/4;if(o.charAt(o.length-1)===r.charAt(64)&&_--,o.charAt(o.length-2)===r.charAt(64)&&_--,_%1!=0)throw new Error("Invalid base64 input, bad content length.");for(b=i.uint8array?new Uint8Array(0|_):new Array(0|_);f>4,p=(15&c)<<4|(u=r.indexOf(o.charAt(f++)))>>2,l=(3&u)<<6|(h=r.indexOf(o.charAt(f++))),b[g++]=s,u!==64&&(b[g++]=p),h!==64&&(b[g++]=l);return b}},{"./support":30,"./utils":32}],2:[function(e,t,n){"use strict";var a=e("./external"),i=e("./stream/DataWorker"),r=e("./stream/Crc32Probe"),o=e("./stream/DataLengthProbe");function s(p,l,c,u,h){this.compressedSize=p,this.uncompressedSize=l,this.crc32=c,this.compression=u,this.compressedContent=h}s.prototype={getContentWorker:function(){var p=new i(a.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new o("data_length")),l=this;return p.on("end",function(){if(this.streamInfo.data_length!==l.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),p},getCompressedWorker:function(){return new i(a.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},s.createWorkerFrom=function(p,l,c){return p.pipe(new r).pipe(new o("uncompressedSize")).pipe(l.compressWorker(c)).pipe(new o("compressedSize")).withStreamInfo("compression",l)},t.exports=s},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(e,t,n){"use strict";var a=e("./stream/GenericWorker");n.STORE={magic:"\0\0",compressWorker:function(i){return new a("STORE compression")},uncompressWorker:function(){return new a("STORE decompression")}},n.DEFLATE=e("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(e,t,n){"use strict";var a=e("./utils"),i=function(){for(var r,o=[],s=0;s<256;s++){r=s;for(var p=0;p<8;p++)r=1&r?3988292384^r>>>1:r>>>1;o[s]=r}return o}();t.exports=function(r,o){return r!==void 0&&r.length?a.getTypeOf(r)!=="string"?function(s,p,l,c){var u=i,h=c+l;s^=-1;for(var f=c;f>>8^u[255&(s^p[f])];return-1^s}(0|o,r,r.length,0):function(s,p,l,c){var u=i,h=c+l;s^=-1;for(var f=c;f>>8^u[255&(s^p.charCodeAt(f))];return-1^s}(0|o,r,r.length,0):0}},{"./utils":32}],5:[function(e,t,n){"use strict";n.base64=!1,n.binary=!1,n.dir=!1,n.createFolders=!0,n.date=null,n.compression=null,n.compressionOptions=null,n.comment=null,n.unixPermissions=null,n.dosPermissions=null},{}],6:[function(e,t,n){"use strict";var a=null;a=typeof Promise<"u"?Promise:e("lie"),t.exports={Promise:a}},{lie:37}],7:[function(e,t,n){"use strict";var a=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Uint32Array<"u",i=e("pako"),r=e("./utils"),o=e("./stream/GenericWorker"),s=a?"uint8array":"array";function p(l,c){o.call(this,"FlateWorker/"+l),this._pako=null,this._pakoAction=l,this._pakoOptions=c,this.meta={}}n.magic="\b\0",r.inherits(p,o),p.prototype.processChunk=function(l){this.meta=l.meta,this._pako===null&&this._createPako(),this._pako.push(r.transformTo(s,l.data),!1)},p.prototype.flush=function(){o.prototype.flush.call(this),this._pako===null&&this._createPako(),this._pako.push([],!0)},p.prototype.cleanUp=function(){o.prototype.cleanUp.call(this),this._pako=null},p.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var l=this;this._pako.onData=function(c){l.push({data:c,meta:l.meta})}},n.compressWorker=function(l){return new p("Deflate",l)},n.uncompressWorker=function(){return new p("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(e,t,n){"use strict";function a(u,h){var f,g="";for(f=0;f>>=8;return g}function i(u,h,f,g,x,b){var _,C,w=u.file,z=u.compression,F=b!==s.utf8encode,T=r.transformTo("string",b(w.name)),S=r.transformTo("string",s.utf8encode(w.name)),W=w.comment,Y=r.transformTo("string",b(W)),k=r.transformTo("string",s.utf8encode(W)),E=S.length!==w.name.length,m=k.length!==W.length,P="",J="",D="",ae=w.dir,R=w.date,te={crc32:0,compressedSize:0,uncompressedSize:0};h&&!f||(te.crc32=u.crc32,te.compressedSize=u.compressedSize,te.uncompressedSize=u.uncompressedSize);var A=0;h&&(A|=8),F||!E&&!m||(A|=2048);var I=0,ee=0;ae&&(I|=16),x==="UNIX"?(ee=798,I|=function(q,ue){var ve=q;return q||(ve=ue?16893:33204),(65535&ve)<<16}(w.unixPermissions,ae)):(ee=20,I|=function(q){return 63&(q||0)}(w.dosPermissions)),_=R.getUTCHours(),_<<=6,_|=R.getUTCMinutes(),_<<=5,_|=R.getUTCSeconds()/2,C=R.getUTCFullYear()-1980,C<<=4,C|=R.getUTCMonth()+1,C<<=5,C|=R.getUTCDate(),E&&(J=a(1,1)+a(p(T),4)+S,P+="up"+a(J.length,2)+J),m&&(D=a(1,1)+a(p(Y),4)+k,P+="uc"+a(D.length,2)+D);var G="";return G+=` +\0`,G+=a(A,2),G+=z.magic,G+=a(_,2),G+=a(C,2),G+=a(te.crc32,4),G+=a(te.compressedSize,4),G+=a(te.uncompressedSize,4),G+=a(T.length,2),G+=a(P.length,2),{fileRecord:l.LOCAL_FILE_HEADER+G+T+P,dirRecord:l.CENTRAL_FILE_HEADER+a(ee,2)+G+a(Y.length,2)+"\0\0\0\0"+a(I,4)+a(g,4)+T+P+Y}}var r=e("../utils"),o=e("../stream/GenericWorker"),s=e("../utf8"),p=e("../crc32"),l=e("../signature");function c(u,h,f,g){o.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=h,this.zipPlatform=f,this.encodeFileName=g,this.streamFiles=u,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}r.inherits(c,o),c.prototype.push=function(u){var h=u.meta.percent||0,f=this.entriesCount,g=this._sources.length;this.accumulate?this.contentBuffer.push(u):(this.bytesWritten+=u.data.length,o.prototype.push.call(this,{data:u.data,meta:{currentFile:this.currentFile,percent:f?(h+100*(f-g-1))/f:100}}))},c.prototype.openedSource=function(u){this.currentSourceOffset=this.bytesWritten,this.currentFile=u.file.name;var h=this.streamFiles&&!u.file.dir;if(h){var f=i(u,h,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:f.fileRecord,meta:{percent:0}})}else this.accumulate=!0},c.prototype.closedSource=function(u){this.accumulate=!1;var h=this.streamFiles&&!u.file.dir,f=i(u,h,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(f.dirRecord),h)this.push({data:function(g){return l.DATA_DESCRIPTOR+a(g.crc32,4)+a(g.compressedSize,4)+a(g.uncompressedSize,4)}(u),meta:{percent:100}});else for(this.push({data:f.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},c.prototype.flush=function(){for(var u=this.bytesWritten,h=0;h=this.index;o--)s=(s<<8)+this.byteAt(o);return this.index+=r,s},readString:function(r){return a.transformTo("string",this.readData(r))},readData:function(r){},lastIndexOfSignature:function(r){},readAndCheckSignature:function(r){},readDate:function(){var r=this.readInt(4);return new Date(Date.UTC(1980+(r>>25&127),(r>>21&15)-1,r>>16&31,r>>11&31,r>>5&63,(31&r)<<1))}},t.exports=i},{"../utils":32}],19:[function(e,t,n){"use strict";var a=e("./Uint8ArrayReader");function i(r){a.call(this,r)}e("../utils").inherits(i,a),i.prototype.readData=function(r){this.checkOffset(r);var o=this.data.slice(this.zero+this.index,this.zero+this.index+r);return this.index+=r,o},t.exports=i},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(e,t,n){"use strict";var a=e("./DataReader");function i(r){a.call(this,r)}e("../utils").inherits(i,a),i.prototype.byteAt=function(r){return this.data.charCodeAt(this.zero+r)},i.prototype.lastIndexOfSignature=function(r){return this.data.lastIndexOf(r)-this.zero},i.prototype.readAndCheckSignature=function(r){return r===this.readData(4)},i.prototype.readData=function(r){this.checkOffset(r);var o=this.data.slice(this.zero+this.index,this.zero+this.index+r);return this.index+=r,o},t.exports=i},{"../utils":32,"./DataReader":18}],21:[function(e,t,n){"use strict";var a=e("./ArrayReader");function i(r){a.call(this,r)}e("../utils").inherits(i,a),i.prototype.readData=function(r){if(this.checkOffset(r),r===0)return new Uint8Array(0);var o=this.data.subarray(this.zero+this.index,this.zero+this.index+r);return this.index+=r,o},t.exports=i},{"../utils":32,"./ArrayReader":17}],22:[function(e,t,n){"use strict";var a=e("../utils"),i=e("../support"),r=e("./ArrayReader"),o=e("./StringReader"),s=e("./NodeBufferReader"),p=e("./Uint8ArrayReader");t.exports=function(l){var c=a.getTypeOf(l);return a.checkSupport(c),c!=="string"||i.uint8array?c==="nodebuffer"?new s(l):i.uint8array?new p(a.transformTo("uint8array",l)):new r(a.transformTo("array",l)):new o(l)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(e,t,n){"use strict";n.LOCAL_FILE_HEADER="PK",n.CENTRAL_FILE_HEADER="PK",n.CENTRAL_DIRECTORY_END="PK",n.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\x07",n.ZIP64_CENTRAL_DIRECTORY_END="PK",n.DATA_DESCRIPTOR="PK\x07\b"},{}],24:[function(e,t,n){"use strict";var a=e("./GenericWorker"),i=e("../utils");function r(o){a.call(this,"ConvertWorker to "+o),this.destType=o}i.inherits(r,a),r.prototype.processChunk=function(o){this.push({data:i.transformTo(this.destType,o.data),meta:o.meta})},t.exports=r},{"../utils":32,"./GenericWorker":28}],25:[function(e,t,n){"use strict";var a=e("./GenericWorker"),i=e("../crc32");function r(){a.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}e("../utils").inherits(r,a),r.prototype.processChunk=function(o){this.streamInfo.crc32=i(o.data,this.streamInfo.crc32||0),this.push(o)},t.exports=r},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(e,t,n){"use strict";var a=e("../utils"),i=e("./GenericWorker");function r(o){i.call(this,"DataLengthProbe for "+o),this.propName=o,this.withStreamInfo(o,0)}a.inherits(r,i),r.prototype.processChunk=function(o){if(o){var s=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=s+o.data.length}i.prototype.processChunk.call(this,o)},t.exports=r},{"../utils":32,"./GenericWorker":28}],27:[function(e,t,n){"use strict";var a=e("../utils"),i=e("./GenericWorker");function r(o){i.call(this,"DataWorker");var s=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,o.then(function(p){s.dataIsReady=!0,s.data=p,s.max=p&&p.length||0,s.type=a.getTypeOf(p),s.isPaused||s._tickAndRepeat()},function(p){s.error(p)})}a.inherits(r,i),r.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},r.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,a.delay(this._tickAndRepeat,[],this)),!0)},r.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(a.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},r.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var o=null,s=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":o=this.data.substring(this.index,s);break;case"uint8array":o=this.data.subarray(this.index,s);break;case"array":case"nodebuffer":o=this.data.slice(this.index,s)}return this.index=s,this.push({data:o,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=r},{"../utils":32,"./GenericWorker":28}],28:[function(e,t,n){"use strict";function a(i){this.name=i||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}a.prototype={push:function(i){this.emit("data",i)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(i){this.emit("error",i)}return!0},error:function(i){return!this.isFinished&&(this.isPaused?this.generatedError=i:(this.isFinished=!0,this.emit("error",i),this.previous&&this.previous.error(i),this.cleanUp()),!0)},on:function(i,r){return this._listeners[i].push(r),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(i,r){if(this._listeners[i])for(var o=0;o "+i:i}},t.exports=a},{}],29:[function(e,t,n){"use strict";var a=e("../utils"),i=e("./ConvertWorker"),r=e("./GenericWorker"),o=e("../base64"),s=e("../support"),p=e("../external"),l=null;if(s.nodestream)try{l=e("../nodejs/NodejsStreamOutputAdapter")}catch{}function c(h,f){return new p.Promise(function(g,x){var b=[],_=h._internalType,C=h._outputType,w=h._mimeType;h.on("data",function(z,F){b.push(z),f&&f(F)}).on("error",function(z){b=[],x(z)}).on("end",function(){try{var z=function(F,T,S){switch(F){case"blob":return a.newBlob(a.transformTo("arraybuffer",T),S);case"base64":return o.encode(T);default:return a.transformTo(F,T)}}(C,function(F,T){var S,W=0,Y=null,k=0;for(S=0;S"u")n.blob=!1;else{var a=new ArrayBuffer(0);try{n.blob=new Blob([a],{type:"application/zip"}).size===0}catch{try{var i=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);i.append(a),n.blob=i.getBlob("application/zip").size===0}catch{n.blob=!1}}}try{n.nodestream=!!e("readable-stream").Readable}catch{n.nodestream=!1}},{"readable-stream":16}],31:[function(e,t,n){"use strict";for(var a=e("./utils"),i=e("./support"),r=e("./nodejsUtils"),o=e("./stream/GenericWorker"),s=new Array(256),p=0;p<256;p++)s[p]=252<=p?6:248<=p?5:240<=p?4:224<=p?3:192<=p?2:1;s[254]=s[254]=1;function l(){o.call(this,"utf-8 decode"),this.leftOver=null}function c(){o.call(this,"utf-8 encode")}n.utf8encode=function(u){return i.nodebuffer?r.newBufferFrom(u,"utf-8"):function(h){var f,g,x,b,_,C=h.length,w=0;for(b=0;b>>6:(g<65536?f[_++]=224|g>>>12:(f[_++]=240|g>>>18,f[_++]=128|g>>>12&63),f[_++]=128|g>>>6&63),f[_++]=128|63&g);return f}(u)},n.utf8decode=function(u){return i.nodebuffer?a.transformTo("nodebuffer",u).toString("utf-8"):function(h){var f,g,x,b,_=h.length,C=new Array(2*_);for(f=g=0;f<_;)if((x=h[f++])<128)C[g++]=x;else if(4<(b=s[x]))C[g++]=65533,f+=b-1;else{for(x&=b===2?31:b===3?15:7;1>10&1023,C[g++]=56320|1023&x)}return C.length!==g&&(C.subarray?C=C.subarray(0,g):C.length=g),a.applyFromCharCode(C)}(u=a.transformTo(i.uint8array?"uint8array":"array",u))},a.inherits(l,o),l.prototype.processChunk=function(u){var h=a.transformTo(i.uint8array?"uint8array":"array",u.data);if(this.leftOver&&this.leftOver.length){if(i.uint8array){var f=h;(h=new Uint8Array(f.length+this.leftOver.length)).set(this.leftOver,0),h.set(f,this.leftOver.length)}else h=this.leftOver.concat(h);this.leftOver=null}var g=function(b,_){var C;for((_=_||b.length)>b.length&&(_=b.length),C=_-1;0<=C&&(192&b[C])==128;)C--;return C<0||C===0?_:C+s[b[C]]>_?C:_}(h),x=h;g!==h.length&&(i.uint8array?(x=h.subarray(0,g),this.leftOver=h.subarray(g,h.length)):(x=h.slice(0,g),this.leftOver=h.slice(g,h.length))),this.push({data:n.utf8decode(x),meta:u.meta})},l.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:n.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},n.Utf8DecodeWorker=l,a.inherits(c,o),c.prototype.processChunk=function(u){this.push({data:n.utf8encode(u.data),meta:u.meta})},n.Utf8EncodeWorker=c},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(e,t,n){"use strict";var a=e("./support"),i=e("./base64"),r=e("./nodejsUtils"),o=e("./external");function s(f){return f}function p(f,g){for(var x=0;x>8;this.dir=!!(16&this.externalFileAttributes),u==0&&(this.dosPermissions=63&this.externalFileAttributes),u==3&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||this.fileNameStr.slice(-1)!=="/"||(this.dir=!0)},parseZIP64ExtraField:function(u){if(this.extraFields[1]){var h=a(this.extraFields[1].value);this.uncompressedSize===i.MAX_VALUE_32BITS&&(this.uncompressedSize=h.readInt(8)),this.compressedSize===i.MAX_VALUE_32BITS&&(this.compressedSize=h.readInt(8)),this.localHeaderOffset===i.MAX_VALUE_32BITS&&(this.localHeaderOffset=h.readInt(8)),this.diskNumberStart===i.MAX_VALUE_32BITS&&(this.diskNumberStart=h.readInt(4))}},readExtraFields:function(u){var h,f,g,x=u.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});u.index+4>>6:(u<65536?c[g++]=224|u>>>12:(c[g++]=240|u>>>18,c[g++]=128|u>>>12&63),c[g++]=128|u>>>6&63),c[g++]=128|63&u);return c},n.buf2binstring=function(l){return p(l,l.length)},n.binstring2buf=function(l){for(var c=new a.Buf8(l.length),u=0,h=c.length;u>10&1023,b[h++]=56320|1023&f)}return p(b,h)},n.utf8border=function(l,c){var u;for((c=c||l.length)>l.length&&(c=l.length),u=c-1;0<=u&&(192&l[u])==128;)u--;return u<0||u===0?c:u+o[l[u]]>c?u:c}},{"./common":41}],43:[function(e,t,n){"use strict";t.exports=function(a,i,r,o){for(var s=65535&a|0,p=a>>>16&65535|0,l=0;r!==0;){for(r-=l=2e3>>1:i>>>1;r[o]=i}return r}();t.exports=function(i,r,o,s){var p=a,l=s+o;i^=-1;for(var c=s;c>>8^p[255&(i^r[c])];return-1^i}},{}],46:[function(e,t,n){"use strict";var a,i=e("../utils/common"),r=e("./trees"),o=e("./adler32"),s=e("./crc32"),p=e("./messages"),l=0,c=4,u=0,h=-2,f=-1,g=4,x=2,b=8,_=9,C=286,w=30,z=19,F=2*C+1,T=15,S=3,W=258,Y=W+S+1,k=42,E=113,m=1,P=2,J=3,D=4;function ae(d,B){return d.msg=p[B],B}function R(d){return(d<<1)-(4d.avail_out&&(M=d.avail_out),M!==0&&(i.arraySet(d.output,B.pending_buf,B.pending_out,M,d.next_out),d.next_out+=M,B.pending_out+=M,d.total_out+=M,d.avail_out-=M,B.pending-=M,B.pending===0&&(B.pending_out=0))}function I(d,B){r._tr_flush_block(d,0<=d.block_start?d.block_start:-1,d.strstart-d.block_start,B),d.block_start=d.strstart,A(d.strm)}function ee(d,B){d.pending_buf[d.pending++]=B}function G(d,B){d.pending_buf[d.pending++]=B>>>8&255,d.pending_buf[d.pending++]=255&B}function q(d,B){var M,y,v=d.max_chain_length,j=d.strstart,O=d.prev_length,N=d.nice_match,L=d.strstart>d.w_size-Y?d.strstart-(d.w_size-Y):0,U=d.window,Z=d.w_mask,V=d.prev,Q=d.strstart+W,le=U[j+O-1],re=U[j+O];d.prev_length>=d.good_match&&(v>>=2),N>d.lookahead&&(N=d.lookahead);do if(U[(M=B)+O]===re&&U[M+O-1]===le&&U[M]===U[j]&&U[++M]===U[j+1]){j+=2,M++;do;while(U[++j]===U[++M]&&U[++j]===U[++M]&&U[++j]===U[++M]&&U[++j]===U[++M]&&U[++j]===U[++M]&&U[++j]===U[++M]&&U[++j]===U[++M]&&U[++j]===U[++M]&&jL&&--v!=0);return O<=d.lookahead?O:d.lookahead}function ue(d){var B,M,y,v,j,O,N,L,U,Z,V=d.w_size;do{if(v=d.window_size-d.lookahead-d.strstart,d.strstart>=V+(V-Y)){for(i.arraySet(d.window,d.window,V,V,0),d.match_start-=V,d.strstart-=V,d.block_start-=V,B=M=d.hash_size;y=d.head[--B],d.head[B]=V<=y?y-V:0,--M;);for(B=M=V;y=d.prev[--B],d.prev[B]=V<=y?y-V:0,--M;);v+=V}if(d.strm.avail_in===0)break;if(O=d.strm,N=d.window,L=d.strstart+d.lookahead,U=v,Z=void 0,Z=O.avail_in,U=S)for(j=d.strstart-d.insert,d.ins_h=d.window[j],d.ins_h=(d.ins_h<=S&&(d.ins_h=(d.ins_h<=S)if(y=r._tr_tally(d,d.strstart-d.match_start,d.match_length-S),d.lookahead-=d.match_length,d.match_length<=d.max_lazy_match&&d.lookahead>=S){for(d.match_length--;d.strstart++,d.ins_h=(d.ins_h<=S&&(d.ins_h=(d.ins_h<=S&&d.match_length<=d.prev_length){for(v=d.strstart+d.lookahead-S,y=r._tr_tally(d,d.strstart-1-d.prev_match,d.prev_length-S),d.lookahead-=d.prev_length-1,d.prev_length-=2;++d.strstart<=v&&(d.ins_h=(d.ins_h<d.pending_buf_size-5&&(M=d.pending_buf_size-5);;){if(d.lookahead<=1){if(ue(d),d.lookahead===0&&B===l)return m;if(d.lookahead===0)break}d.strstart+=d.lookahead,d.lookahead=0;var y=d.block_start+M;if((d.strstart===0||d.strstart>=y)&&(d.lookahead=d.strstart-y,d.strstart=y,I(d,!1),d.strm.avail_out===0)||d.strstart-d.block_start>=d.w_size-Y&&(I(d,!1),d.strm.avail_out===0))return m}return d.insert=0,B===c?(I(d,!0),d.strm.avail_out===0?J:D):(d.strstart>d.block_start&&(I(d,!1),d.strm.avail_out),m)}),new oe(4,4,8,4,ve),new oe(4,5,16,8,ve),new oe(4,6,32,32,ve),new oe(4,4,16,16,ie),new oe(8,16,32,32,ie),new oe(8,16,128,128,ie),new oe(8,32,128,256,ie),new oe(32,128,258,1024,ie),new oe(32,258,258,4096,ie)],n.deflateInit=function(d,B){return Ae(d,B,b,15,8,0)},n.deflateInit2=Ae,n.deflateReset=ze,n.deflateResetKeep=de,n.deflateSetHeader=function(d,B){return d&&d.state?d.state.wrap!==2?h:(d.state.gzhead=B,u):h},n.deflate=function(d,B){var M,y,v,j;if(!d||!d.state||5>8&255),ee(y,y.gzhead.time>>16&255),ee(y,y.gzhead.time>>24&255),ee(y,y.level===9?2:2<=y.strategy||y.level<2?4:0),ee(y,255&y.gzhead.os),y.gzhead.extra&&y.gzhead.extra.length&&(ee(y,255&y.gzhead.extra.length),ee(y,y.gzhead.extra.length>>8&255)),y.gzhead.hcrc&&(d.adler=s(d.adler,y.pending_buf,y.pending,0)),y.gzindex=0,y.status=69):(ee(y,0),ee(y,0),ee(y,0),ee(y,0),ee(y,0),ee(y,y.level===9?2:2<=y.strategy||y.level<2?4:0),ee(y,3),y.status=E);else{var O=b+(y.w_bits-8<<4)<<8;O|=(2<=y.strategy||y.level<2?0:y.level<6?1:y.level===6?2:3)<<6,y.strstart!==0&&(O|=32),O+=31-O%31,y.status=E,G(y,O),y.strstart!==0&&(G(y,d.adler>>>16),G(y,65535&d.adler)),d.adler=1}if(y.status===69)if(y.gzhead.extra){for(v=y.pending;y.gzindex<(65535&y.gzhead.extra.length)&&(y.pending!==y.pending_buf_size||(y.gzhead.hcrc&&y.pending>v&&(d.adler=s(d.adler,y.pending_buf,y.pending-v,v)),A(d),v=y.pending,y.pending!==y.pending_buf_size));)ee(y,255&y.gzhead.extra[y.gzindex]),y.gzindex++;y.gzhead.hcrc&&y.pending>v&&(d.adler=s(d.adler,y.pending_buf,y.pending-v,v)),y.gzindex===y.gzhead.extra.length&&(y.gzindex=0,y.status=73)}else y.status=73;if(y.status===73)if(y.gzhead.name){v=y.pending;do{if(y.pending===y.pending_buf_size&&(y.gzhead.hcrc&&y.pending>v&&(d.adler=s(d.adler,y.pending_buf,y.pending-v,v)),A(d),v=y.pending,y.pending===y.pending_buf_size)){j=1;break}j=y.gzindexv&&(d.adler=s(d.adler,y.pending_buf,y.pending-v,v)),j===0&&(y.gzindex=0,y.status=91)}else y.status=91;if(y.status===91)if(y.gzhead.comment){v=y.pending;do{if(y.pending===y.pending_buf_size&&(y.gzhead.hcrc&&y.pending>v&&(d.adler=s(d.adler,y.pending_buf,y.pending-v,v)),A(d),v=y.pending,y.pending===y.pending_buf_size)){j=1;break}j=y.gzindexv&&(d.adler=s(d.adler,y.pending_buf,y.pending-v,v)),j===0&&(y.status=103)}else y.status=103;if(y.status===103&&(y.gzhead.hcrc?(y.pending+2>y.pending_buf_size&&A(d),y.pending+2<=y.pending_buf_size&&(ee(y,255&d.adler),ee(y,d.adler>>8&255),d.adler=0,y.status=E)):y.status=E),y.pending!==0){if(A(d),d.avail_out===0)return y.last_flush=-1,u}else if(d.avail_in===0&&R(B)<=R(M)&&B!==c)return ae(d,-5);if(y.status===666&&d.avail_in!==0)return ae(d,-5);if(d.avail_in!==0||y.lookahead!==0||B!==l&&y.status!==666){var N=y.strategy===2?function(L,U){for(var Z;;){if(L.lookahead===0&&(ue(L),L.lookahead===0)){if(U===l)return m;break}if(L.match_length=0,Z=r._tr_tally(L,0,L.window[L.strstart]),L.lookahead--,L.strstart++,Z&&(I(L,!1),L.strm.avail_out===0))return m}return L.insert=0,U===c?(I(L,!0),L.strm.avail_out===0?J:D):L.last_lit&&(I(L,!1),L.strm.avail_out===0)?m:P}(y,B):y.strategy===3?function(L,U){for(var Z,V,Q,le,re=L.window;;){if(L.lookahead<=W){if(ue(L),L.lookahead<=W&&U===l)return m;if(L.lookahead===0)break}if(L.match_length=0,L.lookahead>=S&&0L.lookahead&&(L.match_length=L.lookahead)}if(L.match_length>=S?(Z=r._tr_tally(L,1,L.match_length-S),L.lookahead-=L.match_length,L.strstart+=L.match_length,L.match_length=0):(Z=r._tr_tally(L,0,L.window[L.strstart]),L.lookahead--,L.strstart++),Z&&(I(L,!1),L.strm.avail_out===0))return m}return L.insert=0,U===c?(I(L,!0),L.strm.avail_out===0?J:D):L.last_lit&&(I(L,!1),L.strm.avail_out===0)?m:P}(y,B):a[y.level].func(y,B);if(N!==J&&N!==D||(y.status=666),N===m||N===J)return d.avail_out===0&&(y.last_flush=-1),u;if(N===P&&(B===1?r._tr_align(y):B!==5&&(r._tr_stored_block(y,0,0,!1),B===3&&(te(y.head),y.lookahead===0&&(y.strstart=0,y.block_start=0,y.insert=0))),A(d),d.avail_out===0))return y.last_flush=-1,u}return B!==c?u:y.wrap<=0?1:(y.wrap===2?(ee(y,255&d.adler),ee(y,d.adler>>8&255),ee(y,d.adler>>16&255),ee(y,d.adler>>24&255),ee(y,255&d.total_in),ee(y,d.total_in>>8&255),ee(y,d.total_in>>16&255),ee(y,d.total_in>>24&255)):(G(y,d.adler>>>16),G(y,65535&d.adler)),A(d),0=M.w_size&&(j===0&&(te(M.head),M.strstart=0,M.block_start=0,M.insert=0),U=new i.Buf8(M.w_size),i.arraySet(U,B,Z-M.w_size,M.w_size,0),B=U,Z=M.w_size),O=d.avail_in,N=d.next_in,L=d.input,d.avail_in=Z,d.next_in=0,d.input=B,ue(M);M.lookahead>=S;){for(y=M.strstart,v=M.lookahead-(S-1);M.ins_h=(M.ins_h<>>=S=T>>>24,_-=S,(S=T>>>16&255)===0)P[p++]=65535&T;else{if(!(16&S)){if((64&S)==0){T=C[(65535&T)+(b&(1<>>=S,_-=S),_<15&&(b+=m[o++]<<_,_+=8,b+=m[o++]<<_,_+=8),T=w[b&F];n:for(;;){if(b>>>=S=T>>>24,_-=S,!(16&(S=T>>>16&255))){if((64&S)==0){T=w[(65535&T)+(b&(1<>>=S,_-=S,(S=p-l)>3,b&=(1<<(_-=W<<3))-1,a.next_in=o,a.next_out=p,a.avail_in=o>>24&255)+(k>>>8&65280)+((65280&k)<<8)+((255&k)<<24)}function b(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new a.Buf16(320),this.work=new a.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function _(k){var E;return k&&k.state?(E=k.state,k.total_in=k.total_out=E.total=0,k.msg="",E.wrap&&(k.adler=1&E.wrap),E.mode=h,E.last=0,E.havedict=0,E.dmax=32768,E.head=null,E.hold=0,E.bits=0,E.lencode=E.lendyn=new a.Buf32(f),E.distcode=E.distdyn=new a.Buf32(g),E.sane=1,E.back=-1,c):u}function C(k){var E;return k&&k.state?((E=k.state).wsize=0,E.whave=0,E.wnext=0,_(k)):u}function w(k,E){var m,P;return k&&k.state?(P=k.state,E<0?(m=0,E=-E):(m=1+(E>>4),E<48&&(E&=15)),E&&(E<8||15=D.wsize?(a.arraySet(D.window,E,m-D.wsize,D.wsize,0),D.wnext=0,D.whave=D.wsize):(P<(J=D.wsize-D.wnext)&&(J=P),a.arraySet(D.window,E,m-P,J,D.wnext),(P-=J)?(a.arraySet(D.window,E,m-P,P,0),D.wnext=P,D.whave=D.wsize):(D.wnext+=J,D.wnext===D.wsize&&(D.wnext=0),D.whave>>8&255,m.check=r(m.check,j,2,0),I=A=0,m.mode=2;break}if(m.flags=0,m.head&&(m.head.done=!1),!(1&m.wrap)||(((255&A)<<8)+(A>>8))%31){k.msg="incorrect header check",m.mode=30;break}if((15&A)!=8){k.msg="unknown compression method",m.mode=30;break}if(I-=4,d=8+(15&(A>>>=4)),m.wbits===0)m.wbits=d;else if(d>m.wbits){k.msg="invalid window size",m.mode=30;break}m.dmax=1<>8&1),512&m.flags&&(j[0]=255&A,j[1]=A>>>8&255,m.check=r(m.check,j,2,0)),I=A=0,m.mode=3;case 3:for(;I<32;){if(R===0)break e;R--,A+=P[D++]<>>8&255,j[2]=A>>>16&255,j[3]=A>>>24&255,m.check=r(m.check,j,4,0)),I=A=0,m.mode=4;case 4:for(;I<16;){if(R===0)break e;R--,A+=P[D++]<>8),512&m.flags&&(j[0]=255&A,j[1]=A>>>8&255,m.check=r(m.check,j,2,0)),I=A=0,m.mode=5;case 5:if(1024&m.flags){for(;I<16;){if(R===0)break e;R--,A+=P[D++]<>>8&255,m.check=r(m.check,j,2,0)),I=A=0}else m.head&&(m.head.extra=null);m.mode=6;case 6:if(1024&m.flags&&(R<(q=m.length)&&(q=R),q&&(m.head&&(d=m.head.extra_len-m.length,m.head.extra||(m.head.extra=new Array(m.head.extra_len)),a.arraySet(m.head.extra,P,D,q,d)),512&m.flags&&(m.check=r(m.check,P,q,D)),R-=q,D+=q,m.length-=q),m.length))break e;m.length=0,m.mode=7;case 7:if(2048&m.flags){if(R===0)break e;for(q=0;d=P[D+q++],m.head&&d&&m.length<65536&&(m.head.name+=String.fromCharCode(d)),d&&q>9&1,m.head.done=!0),k.adler=m.check=0,m.mode=12;break;case 10:for(;I<32;){if(R===0)break e;R--,A+=P[D++]<>>=7&I,I-=7&I,m.mode=27;break}for(;I<3;){if(R===0)break e;R--,A+=P[D++]<>>=1)){case 0:m.mode=14;break;case 1:if(W(m),m.mode=20,E!==6)break;A>>>=2,I-=2;break e;case 2:m.mode=17;break;case 3:k.msg="invalid block type",m.mode=30}A>>>=2,I-=2;break;case 14:for(A>>>=7&I,I-=7&I;I<32;){if(R===0)break e;R--,A+=P[D++]<>>16^65535)){k.msg="invalid stored block lengths",m.mode=30;break}if(m.length=65535&A,I=A=0,m.mode=15,E===6)break e;case 15:m.mode=16;case 16:if(q=m.length){if(R>>=5,I-=5,m.ndist=1+(31&A),A>>>=5,I-=5,m.ncode=4+(15&A),A>>>=4,I-=4,286>>=3,I-=3}for(;m.have<19;)m.lens[O[m.have++]]=0;if(m.lencode=m.lendyn,m.lenbits=7,M={bits:m.lenbits},B=s(0,m.lens,0,19,m.lencode,0,m.work,M),m.lenbits=M.bits,B){k.msg="invalid code lengths set",m.mode=30;break}m.have=0,m.mode=19;case 19:for(;m.have>>16&255,he=65535&v,!((ie=v>>>24)<=I);){if(R===0)break e;R--,A+=P[D++]<>>=ie,I-=ie,m.lens[m.have++]=he;else{if(he===16){for(y=ie+2;I>>=ie,I-=ie,m.have===0){k.msg="invalid bit length repeat",m.mode=30;break}d=m.lens[m.have-1],q=3+(3&A),A>>>=2,I-=2}else if(he===17){for(y=ie+3;I>>=ie)),A>>>=3,I-=3}else{for(y=ie+7;I>>=ie)),A>>>=7,I-=7}if(m.have+q>m.nlen+m.ndist){k.msg="invalid bit length repeat",m.mode=30;break}for(;q--;)m.lens[m.have++]=d}}if(m.mode===30)break;if(m.lens[256]===0){k.msg="invalid code -- missing end-of-block",m.mode=30;break}if(m.lenbits=9,M={bits:m.lenbits},B=s(p,m.lens,0,m.nlen,m.lencode,0,m.work,M),m.lenbits=M.bits,B){k.msg="invalid literal/lengths set",m.mode=30;break}if(m.distbits=6,m.distcode=m.distdyn,M={bits:m.distbits},B=s(l,m.lens,m.nlen,m.ndist,m.distcode,0,m.work,M),m.distbits=M.bits,B){k.msg="invalid distances set",m.mode=30;break}if(m.mode=20,E===6)break e;case 20:m.mode=21;case 21:if(6<=R&&258<=te){k.next_out=ae,k.avail_out=te,k.next_in=D,k.avail_in=R,m.hold=A,m.bits=I,o(k,G),ae=k.next_out,J=k.output,te=k.avail_out,D=k.next_in,P=k.input,R=k.avail_in,A=m.hold,I=m.bits,m.mode===12&&(m.back=-1);break}for(m.back=0;oe=(v=m.lencode[A&(1<>>16&255,he=65535&v,!((ie=v>>>24)<=I);){if(R===0)break e;R--,A+=P[D++]<>de)])>>>16&255,he=65535&v,!(de+(ie=v>>>24)<=I);){if(R===0)break e;R--,A+=P[D++]<>>=de,I-=de,m.back+=de}if(A>>>=ie,I-=ie,m.back+=ie,m.length=he,oe===0){m.mode=26;break}if(32&oe){m.back=-1,m.mode=12;break}if(64&oe){k.msg="invalid literal/length code",m.mode=30;break}m.extra=15&oe,m.mode=22;case 22:if(m.extra){for(y=m.extra;I>>=m.extra,I-=m.extra,m.back+=m.extra}m.was=m.length,m.mode=23;case 23:for(;oe=(v=m.distcode[A&(1<>>16&255,he=65535&v,!((ie=v>>>24)<=I);){if(R===0)break e;R--,A+=P[D++]<>de)])>>>16&255,he=65535&v,!(de+(ie=v>>>24)<=I);){if(R===0)break e;R--,A+=P[D++]<>>=de,I-=de,m.back+=de}if(A>>>=ie,I-=ie,m.back+=ie,64&oe){k.msg="invalid distance code",m.mode=30;break}m.offset=he,m.extra=15&oe,m.mode=24;case 24:if(m.extra){for(y=m.extra;I>>=m.extra,I-=m.extra,m.back+=m.extra}if(m.offset>m.dmax){k.msg="invalid distance too far back",m.mode=30;break}m.mode=25;case 25:if(te===0)break e;if(q=G-te,m.offset>q){if((q=m.offset-q)>m.whave&&m.sane){k.msg="invalid distance too far back",m.mode=30;break}ue=q>m.wnext?(q-=m.wnext,m.wsize-q):m.wnext-q,q>m.length&&(q=m.length),ve=m.window}else ve=J,ue=ae-m.offset,q=m.length;for(teF?(S=ue[ve+g[E]],I[ee+g[E]]):(S=96,0),b=1<>ae)+(_-=b)]=T<<24|S<<16|W|0,_!==0;);for(b=1<>=1;if(b!==0?(A&=b-1,A+=b):A=0,E++,--G[k]==0){if(k===P)break;k=l[c+g[E]]}if(J>>7)]}function ee(v,j){v.pending_buf[v.pending++]=255&j,v.pending_buf[v.pending++]=j>>>8&255}function G(v,j,O){v.bi_valid>x-O?(v.bi_buf|=j<>x-v.bi_valid,v.bi_valid+=O-x):(v.bi_buf|=j<>>=1,O<<=1,0<--j;);return O>>>1}function ve(v,j,O){var N,L,U=new Array(g+1),Z=0;for(N=1;N<=g;N++)U[N]=Z=Z+O[N-1]<<1;for(L=0;L<=j;L++){var V=v[2*L+1];V!==0&&(v[2*L]=ue(U[V]++,V))}}function ie(v){var j;for(j=0;j>1;1<=O;O--)de(v,U,O);for(L=Q;O=v.heap[1],v.heap[1]=v.heap[v.heap_len--],de(v,U,1),N=v.heap[1],v.heap[--v.heap_max]=O,v.heap[--v.heap_max]=N,U[2*L]=U[2*O]+U[2*N],v.depth[L]=(v.depth[O]>=v.depth[N]?v.depth[O]:v.depth[N])+1,U[2*O+1]=U[2*N+1]=L,v.heap[1]=L++,de(v,U,1),2<=v.heap_len;);v.heap[--v.heap_max]=v.heap[1],function(re,Ce){var Mt,Be,Ft,fe,rn,Qn,Re=Ce.dyn_tree,Gi=Ce.max_code,np=Ce.stat_desc.static_tree,ap=Ce.stat_desc.has_stree,ip=Ce.stat_desc.extra_bits,Zi=Ce.stat_desc.extra_base,Et=Ce.stat_desc.max_length,on=0;for(fe=0;fe<=g;fe++)re.bl_count[fe]=0;for(Re[2*re.heap[re.heap_max]+1]=0,Mt=re.heap_max+1;Mt>=7;L>>=1)if(1&le&&V.dyn_ltree[2*Q]!==0)return i;if(V.dyn_ltree[18]!==0||V.dyn_ltree[20]!==0||V.dyn_ltree[26]!==0)return r;for(Q=32;Q>>3,(U=v.static_len+3+7>>>3)<=L&&(L=U)):L=U=O+5,O+4<=L&&j!==-1?y(v,j,O,N):v.strategy===4||U===L?(G(v,2+(N?1:0),3),ze(v,Y,k)):(G(v,4+(N?1:0),3),function(V,Q,le,re){var Ce;for(G(V,Q-257,5),G(V,le-1,5),G(V,re-4,4),Ce=0;Ce>>8&255,v.pending_buf[v.d_buf+2*v.last_lit+1]=255&j,v.pending_buf[v.l_buf+v.last_lit]=255&O,v.last_lit++,j===0?v.dyn_ltree[2*O]++:(v.matches++,j--,v.dyn_ltree[2*(m[O]+l+1)]++,v.dyn_dtree[2*I(j)]++),v.last_lit===v.lit_bufsize-1},n._tr_align=function(v){G(v,2,3),q(v,_,Y),function(j){j.bi_valid===16?(ee(j,j.bi_buf),j.bi_buf=0,j.bi_valid=0):8<=j.bi_valid&&(j.pending_buf[j.pending++]=255&j.bi_buf,j.bi_buf>>=8,j.bi_valid-=8)}(v)}},{"../utils/common":41}],53:[function(e,t,n){"use strict";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,n){(function(a){(function(i,r){"use strict";if(!i.setImmediate){var o,s,p,l,c=1,u={},h=!1,f=i.document,g=Object.getPrototypeOf&&Object.getPrototypeOf(i);g=g&&g.setTimeout?g:i,o={}.toString.call(i.process)==="[object process]"?function(C){process.nextTick(function(){b(C)})}:function(){if(i.postMessage&&!i.importScripts){var C=!0,w=i.onmessage;return i.onmessage=function(){C=!1},i.postMessage("","*"),i.onmessage=w,C}}()?(l="setImmediate$"+Math.random()+"$",i.addEventListener?i.addEventListener("message",_,!1):i.attachEvent("onmessage",_),function(C){i.postMessage(l+C,"*")}):i.MessageChannel?((p=new MessageChannel).port1.onmessage=function(C){b(C.data)},function(C){p.port2.postMessage(C)}):f&&"onreadystatechange"in f.createElement("script")?(s=f.documentElement,function(C){var w=f.createElement("script");w.onreadystatechange=function(){b(C),w.onreadystatechange=null,s.removeChild(w),w=null},s.appendChild(w)}):function(C){setTimeout(b,0,C)},g.setImmediate=function(C){typeof C!="function"&&(C=new Function(""+C));for(var w=new Array(arguments.length-1),z=0;z"u"?a===void 0?this:a:self)}).call(this,typeof global<"u"?global:typeof self<"u"?self:typeof window<"u"?window:{})},{}]},{},[10])(10)})});var pc=K((Z2,lc)=>{lc.exports={aqua:/#00ffff(ff)?(?!\w)|#0ff(f)?(?!\w)/gi,azure:/#f0ffff(ff)?(?!\w)/gi,beige:/#f5f5dc(ff)?(?!\w)/gi,bisque:/#ffe4c4(ff)?(?!\w)/gi,black:/#000000(ff)?(?!\w)|#000(f)?(?!\w)/gi,blue:/#0000ff(ff)?(?!\w)|#00f(f)?(?!\w)/gi,brown:/#a52a2a(ff)?(?!\w)/gi,coral:/#ff7f50(ff)?(?!\w)/gi,cornsilk:/#fff8dc(ff)?(?!\w)/gi,crimson:/#dc143c(ff)?(?!\w)/gi,cyan:/#00ffff(ff)?(?!\w)|#0ff(f)?(?!\w)/gi,darkblue:/#00008b(ff)?(?!\w)/gi,darkcyan:/#008b8b(ff)?(?!\w)/gi,darkgrey:/#a9a9a9(ff)?(?!\w)/gi,darkred:/#8b0000(ff)?(?!\w)/gi,deeppink:/#ff1493(ff)?(?!\w)/gi,dimgrey:/#696969(ff)?(?!\w)/gi,gold:/#ffd700(ff)?(?!\w)/gi,green:/#008000(ff)?(?!\w)/gi,grey:/#808080(ff)?(?!\w)/gi,honeydew:/#f0fff0(ff)?(?!\w)/gi,hotpink:/#ff69b4(ff)?(?!\w)/gi,indigo:/#4b0082(ff)?(?!\w)/gi,ivory:/#fffff0(ff)?(?!\w)/gi,khaki:/#f0e68c(ff)?(?!\w)/gi,lavender:/#e6e6fa(ff)?(?!\w)/gi,lime:/#00ff00(ff)?(?!\w)|#0f0(f)?(?!\w)/gi,linen:/#faf0e6(ff)?(?!\w)/gi,maroon:/#800000(ff)?(?!\w)/gi,moccasin:/#ffe4b5(ff)?(?!\w)/gi,navy:/#000080(ff)?(?!\w)/gi,oldlace:/#fdf5e6(ff)?(?!\w)/gi,olive:/#808000(ff)?(?!\w)/gi,orange:/#ffa500(ff)?(?!\w)/gi,orchid:/#da70d6(ff)?(?!\w)/gi,peru:/#cd853f(ff)?(?!\w)/gi,pink:/#ffc0cb(ff)?(?!\w)/gi,plum:/#dda0dd(ff)?(?!\w)/gi,purple:/#800080(ff)?(?!\w)/gi,red:/#ff0000(ff)?(?!\w)|#f00(f)?(?!\w)/gi,salmon:/#fa8072(ff)?(?!\w)/gi,seagreen:/#2e8b57(ff)?(?!\w)/gi,seashell:/#fff5ee(ff)?(?!\w)/gi,sienna:/#a0522d(ff)?(?!\w)/gi,silver:/#c0c0c0(ff)?(?!\w)/gi,skyblue:/#87ceeb(ff)?(?!\w)/gi,snow:/#fffafa(ff)?(?!\w)/gi,tan:/#d2b48c(ff)?(?!\w)/gi,teal:/#008080(ff)?(?!\w)/gi,thistle:/#d8bfd8(ff)?(?!\w)/gi,tomato:/#ff6347(ff)?(?!\w)/gi,violet:/#ee82ee(ff)?(?!\w)/gi,wheat:/#f5deb3(ff)?(?!\w)/gi,white:/#ffffff(ff)?(?!\w)|#fff(f)?(?!\w)/gi}});var dc=K((K2,uc)=>{var Ga=pc(),Ka={whitespace:/\s+/g,urlHexPairs:/%[\dA-F]{2}/g,quotes:/"/g};function dh(e){return e.trim().replace(Ka.whitespace," ")}function fh(e){return encodeURIComponent(e).replace(Ka.urlHexPairs,hh)}function mh(e){return Object.keys(Ga).forEach(function(t){Ga[t].test(e)&&(e=e.replace(Ga[t],t))}),e}function hh(e){switch(e){case"%20":return" ";case"%3D":return"=";case"%3A":return":";case"%2F":return"/";default:return e.toLowerCase()}}function Za(e){if(typeof e!="string")throw new TypeError("Expected a string, but received "+typeof e);e.charCodeAt(0)===65279&&(e=e.slice(1));var t=mh(dh(e)).replace(Ka.quotes,"'");return"data:image/svg+xml,"+fh(t)}Za.toSrcset=function(t){return Za(t).replace(/ /g,"%20")};uc.exports=Za});var n1={};Xi(n1,{default:()=>Jn});module.exports=up(n1);var tp=require("obsidian");var st=require("@codemirror/view"),na=require("obsidian");var ln=require("@codemirror/view"),er=require("obsidian");var Qi=require("@codemirror/view"),tt=class extends Qi.WidgetType{constructor(n,a){super();this.id=n;this.plugin=a}eq(n){return n instanceof tt&&n.id===this.id}toDOM(n){let a=createSpan({cls:"cm-isc-icon",attr:{"aria-label":this.id.replace(/_/g," ")}});return this.plugin.packManager.getSVGIcon(this.id).then(i=>{i?(i.classList.forEach(r=>a.addClass(r)),a.replaceChildren(...i.childNodes)):a.append(`:${this.id}:`)}),a}ignoreEvent(){return!1}};var dp=(e,t)=>{let n=[],a=e.state.field(t.shortcodePosField);for(let{from:i,to:r}of e.visibleRanges)a.between(i,r,(o,s,{iconId:p})=>{n.push([p,o,s])});return ln.Decoration.set(n.map(([i,r,o])=>{let p={widget:new tt(i,t),side:-1,from:r,to:o};return e.state.field(er.editorLivePreviewField)?ln.Decoration.replace(p).range(r,o):ln.Decoration.widget(p).range(o)}),!0)},ta=dp;var tr=require("obsidian"),fp=(e,t,n,a)=>new tr.Menu().addItem(i=>i.setIcon("image-glyph").setTitle("Change Icon").onClick(()=>$(void 0,null,function*(){let r=yield n.api.getIconFromUser();!r||a.dispatch({changes:{from:e,to:t,insert:`:${r.id}:`}})}))).addItem(i=>i.setIcon("trash").setTitle("Delete Icon").onClick(()=>{a.dispatch({changes:{from:e,to:t,insert:""}})})),nr=fp;var mp=e=>{class t{constructor(i){this.plugin=e,this.decorations=ta(i,this.plugin)}update(i){let r=i.startState.field(na.editorLivePreviewField),o=i.state.field(na.editorLivePreviewField);(i.docChanged||i.viewportChanged||r!==o)&&(this.decorations=ta(i.view,e))}}return st.ViewPlugin.fromClass(t,{eventHandlers:{mousedown:n},decorations:a=>a.decorations,provide:a=>st.EditorView.atomicRanges.of(i=>{let r=i.plugin(a);return r?r.decorations:st.Decoration.none})});function n(a,i){let r=a.target;if(r.matchParent(".cm-isc-icon",i.contentDOM)){let o=i.posAtDOM(r),s=-1,p=-1;if(this.decorations.between(o-1,o+1,(l,c,u)=>{if(o>=l&&o<=c){l===c?(s=u.spec.from,p=u.spec.to):(s=l,p=c);return}}),s<0||p<0){console.error("no range found for",r);return}if(ar(0).then(()=>i.dispatch({selection:{anchor:s,head:p}})),a.button===0||a.button===1){let l=nr(s,p,e,i);ar(200).then(()=>l.showAtMouseEvent(a))}}}},ar=e=>new Promise(t=>setTimeout(t,e)),ir=mp;var hp=e=>{e.registerEditorExtension([e.shortcodePosField,ir(e)])},rr=hp;var Ps=require("@codemirror/language"),Ts=require("@codemirror/language"),bn=require("@codemirror/state"),Os=require("@codemirror/state");var mn=be(fr(),1),Fs=be(Wt(),1),Bs=be(fn(),1);var{toString:ym}=Object.prototype;function ka(e){return ym.call(e)==="[object RegExp]"}var Ms={global:"g",ignoreCase:"i",multiline:"m",dotAll:"s",sticky:"y",unicode:"u"};function wa(e,t={}){if(!ka(e))throw new TypeError("Expected a RegExp instance");let n=Object.keys(Ms).map(i=>(typeof t[i]=="boolean"?t[i]:e[i])?Ms[i]:"").join(""),a=new RegExp(t.source||e.source,n);return a.lastIndex=typeof t.lastIndex=="number"?t.lastIndex:e.lastIndex,a}var je=e=>{var t=e.indexOf(":");return t>-1?t===e.length-1?(e=e.substring(0,t),je(e)):(e=e.substring(t+1),je(e)):e},_m=/^([A-Za-z0-9]+?)_/,Ca=e=>{if(Fs.default.hasEmoji(e))return{pack:"emoji",name:e};let t=e.match(_m);if(!t)return console.error("No vaild pack id found in: ",e),null;let[n,a]=t;return{pack:a,name:e.substring(n.length)}},ja=e=>{let t=Ca(e);return t?`${t.pack}_${La(t.name)}`:(console.log("failed to rename icon: id %s invalid",e),null)},La=e=>e.trim().replace(/[ -]+/g,"_").replace(/\s+/g,"").toLocaleLowerCase(),hn=[".bmp",".png",".jpg",".jpeg",".gif",".svg",".webp"],Es=/^[\w-]+\.(?:bmp|png|jpg|jpeg|gif|svg|webp)$/,gn=/\.(?:bmp|png|jpg|jpeg|gif|svg|webp)$/,km=hn.map(e=>(0,mn.lookup)(e)),zs=e=>$(void 0,null,function*(){if(!e||e.length<=0)return null;let t=i=>$(void 0,null,function*(){return{name:i.name.replace(gn,""),ext:"."+(0,mn.extension)(i.type),data:yield i.arrayBuffer()}}),n=[];for(let i=0;i0?a:null}),gt=/:\+1:|:-1:|:[\w-]+:/,Rt=e=>wa(e,{global:!0}),xt=e=>(0,Bs.default)(["isc-icon",`isc-${e.pack}`]);var wm=(e,t)=>xn(e,t[0])||xn(e,t[1]),xn=(e,t)=>e[0]t,Cm=(e,t)=>{let n=xn(e,t[0])?e[0]:t[0],a=xn(e,t[1])?e[1]:t[1];return[n,a]},jm=e=>e.sort((t,n)=>t[0]-n[0]).reduce((t,n)=>{let a=t.findIndex(i=>wm(i,n));return a!==-1?t[a]=Cm(t[a],n):t.push(n),t},[]),vn=jm;var Ut=class extends bn.RangeValue{constructor(n){super();this.text=n}get iconId(){return je(this.text)}eq(n){return n instanceof Ut&&n.text===this.text}},Lm=["link-alias","comment","header","strong","em","strikethrough","quote","link","list-1","list-2","list-3","highlight","hmd-footref2","footref"],Im=["formatting","comment-start","comment-end"],Sm=e=>{let t=e.prop(Ts.tokenClassNodeProp);if(!t)return!1;let n=new Set(t==null?void 0:t.split(" "));return Im.every(a=>!n.has(a))&&Lm.some(a=>n.has(a))},Am=e=>{let t=(n,a,i,r)=>{let o=(p,l)=>{let c=n.doc.sliceString(p,l);if(!!c.trim())for(let{0:u,index:h}of c.matchAll(Rt(gt)))e.packManager.hasIcon(je(u))&&r(p+h,p+h+u.length,new Ut(u))},s=a;(0,Ps.syntaxTree)(n).iterate({from:a-1,to:i+1,enter:({type:p,from:l,to:c})=>{p.name!=="Document"&&(l!==s&&o(s,l),s=c,Sm(p)&&o(l,c))}}),s!==i&&o(s,i)};return Os.StateField.define({create:n=>{let a=new bn.RangeSetBuilder;return t(n,0,n.doc.length,a.add.bind(a)),a.finish()},update:(n,a)=>{if(!a.docChanged)return n;n=n.map(a.changes);let i=[];a.changes.iterChangedRanges((o,s,p,l)=>{i.push([a.state.doc.lineAt(p).number,a.state.doc.lineAt(l).number])});let r=[];for(let[o,s]of vn(i)){let{from:p}=a.state.doc.line(o),{to:l}=a.state.doc.line(s);n=n.update({filterFrom:p,filterTo:l,filter:()=>!1}),t(a.state,p,l,(c,u,h)=>{r.push(h.range(c,u))})}return n=n.update({add:r}),n}})},Ns=Am;var Vt=class{constructor(t){this.plugin=t;this.cache=new Map}get vault(){return this.plugin.app.vault}getIcon(t){return $(this,null,function*(){let n=yield this.vault.adapter.stat(t);if(!n||n.type!=="file")return null;if(this.cache.has(t)){let i=this.cache.get(t);if(i.ctime===n.ctime&&i.mtime===n.mtime&&i.size===n.size)return i.svg.cloneNode(!0)}return(yield this.readIntoCache(t,n)).cloneNode(!0)})}readIntoCache(t,n){return $(this,null,function*(){let a=DOMPurify.sanitize(yield this.vault.adapter.read(t)),i=new DOMParser().parseFromString(a,"image/svg+xml").documentElement;return this.cache.set(t,et(Me({},n),{svg:i})),i})}refresh(){let t=n=>$(this,null,function*(){let a=yield this.vault.adapter.stat(n);return!a||a.type!=="file"?this.cache.delete(n):yield this.readIntoCache(n,a),n});return Promise.allSettled([...this.cache.keys()].map(t))}clear(){this.cache.clear()}};var yc=be(Ia(),1);function He(e){return Array.isArray?Array.isArray(e):Gs(e)==="[object Array]"}var Mm=1/0;function Fm(e){if(typeof e=="string")return e;let t=e+"";return t=="0"&&1/e==-Mm?"-0":t}function Em(e){return e==null?"":Fm(e)}function Te(e){return typeof e=="string"}function qs(e){return typeof e=="number"}function zm(e){return e===!0||e===!1||Bm(e)&&Gs(e)=="[object Boolean]"}function $s(e){return typeof e=="object"}function Bm(e){return $s(e)&&e!==null}function ke(e){return e!=null}function Sa(e){return!e.trim().length}function Gs(e){return e==null?e===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}var Pm="Incorrect 'index' type",Tm=e=>`Invalid value for key ${e}`,Om=e=>`Pattern length exceeds max of ${e}.`,Nm=e=>`Missing ${e} property in key`,Dm=e=>`Property 'weight' in key '${e}' must be a positive integer`,Ws=Object.prototype.hasOwnProperty,Aa=class{constructor(t){this._keys=[],this._keyMap={};let n=0;t.forEach(a=>{let i=Zs(a);n+=i.weight,this._keys.push(i),this._keyMap[i.id]=i,n+=i.weight}),this._keys.forEach(a=>{a.weight/=n})}get(t){return this._keyMap[t]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}};function Zs(e){let t=null,n=null,a=null,i=1,r=null;if(Te(e)||He(e))a=e,t=Rs(e),n=Ma(e);else{if(!Ws.call(e,"name"))throw new Error(Nm("name"));let o=e.name;if(a=o,Ws.call(e,"weight")&&(i=e.weight,i<=0))throw new Error(Dm(o));t=Rs(o),n=Ma(o),r=e.getFn}return{path:t,id:n,weight:i,src:a,getFn:r}}function Rs(e){return He(e)?e:e.split(".")}function Ma(e){return He(e)?e.join("."):e}function Wm(e,t){let n=[],a=!1,i=(r,o,s)=>{if(!!ke(r))if(!o[s])n.push(r);else{let p=o[s],l=r[p];if(!ke(l))return;if(s===o.length-1&&(Te(l)||qs(l)||zm(l)))n.push(Em(l));else if(He(l)){a=!0;for(let c=0,u=l.length;ce.score===t.score?e.idx{this._keysMap[n.id]=a})}create(){this.isCreated||!this.docs.length||(this.isCreated=!0,Te(this.docs[0])?this.docs.forEach((t,n)=>{this._addString(t,n)}):this.docs.forEach((t,n)=>{this._addObject(t,n)}),this.norm.clear())}add(t){let n=this.size();Te(t)?this._addString(t,n):this._addObject(t,n)}removeAt(t){this.records.splice(t,1);for(let n=t,a=this.size();n{let o=i.getFn?i.getFn(t):this.getFn(t,i.path);if(!!ke(o)){if(He(o)){let s=[],p=[{nestedArrIndex:-1,value:o}];for(;p.length;){let{nestedArrIndex:l,value:c}=p.pop();if(!!ke(c))if(Te(c)&&!Sa(c)){let u={v:c,i:l,n:this.norm.get(c)};s.push(u)}else He(c)&&c.forEach((u,h)=>{p.push({nestedArrIndex:h,value:u})})}a.$[r]=s}else if(Te(o)&&!Sa(o)){let s={v:o,n:this.norm.get(o)};a.$[r]=s}}}),this.records.push(a)}toJSON(){return{keys:this.keys,records:this.records}}};function Ks(e,t,{getFn:n=ne.getFn,fieldNormWeight:a=ne.fieldNormWeight}={}){let i=new Ht({getFn:n,fieldNormWeight:a});return i.setKeys(e.map(Zs)),i.setSources(t),i.create(),i}function Gm(e,{getFn:t=ne.getFn,fieldNormWeight:n=ne.fieldNormWeight}={}){let{keys:a,records:i}=e,r=new Ht({getFn:t,fieldNormWeight:n});return r.setKeys(a),r.setIndexRecords(i),r}function _n(e,{errors:t=0,currentLocation:n=0,expectedLocation:a=0,distance:i=ne.distance,ignoreLocation:r=ne.ignoreLocation}={}){let o=t/e.length;if(r)return o;let s=Math.abs(a-n);return i?o+s/i:s?1:o}function Zm(e=[],t=ne.minMatchCharLength){let n=[],a=-1,i=-1,r=0;for(let o=e.length;r=t&&n.push([a,i]),a=-1)}return e[r-1]&&r-a>=t&&n.push([a,r-1]),n}var at=32;function Km(e,t,n,{location:a=ne.location,distance:i=ne.distance,threshold:r=ne.threshold,findAllMatches:o=ne.findAllMatches,minMatchCharLength:s=ne.minMatchCharLength,includeMatches:p=ne.includeMatches,ignoreLocation:l=ne.ignoreLocation}={}){if(t.length>at)throw new Error(Om(at));let c=t.length,u=e.length,h=Math.max(0,Math.min(a,u)),f=r,g=h,x=s>1||p,b=x?Array(u):[],_;for(;(_=e.indexOf(t,g))>-1;){let S=_n(t,{currentLocation:_,expectedLocation:h,distance:i,ignoreLocation:l});if(f=Math.min(S,f),g=_+c,x){let W=0;for(;W=k;J-=1){let D=J-1,ae=n[e.charAt(D)];if(x&&(b[D]=+!!ae),m[J]=(m[J+1]<<1|1)&ae,S&&(m[J]|=(C[J+1]|C[J])<<1|1|C[J+1]),m[J]&F&&(w=_n(t,{errors:S,currentLocation:D,expectedLocation:h,distance:i,ignoreLocation:l}),w<=f)){if(f=w,g=D,g<=h)break;k=Math.max(1,2*h-g)}}if(_n(t,{errors:S+1,currentLocation:h,expectedLocation:h,distance:i,ignoreLocation:l})>f)break;C=m}let T={isMatch:g>=0,score:Math.max(.001,w)};if(x){let S=Zm(b,s);S.length?p&&(T.indices=S):T.isMatch=!1}return T}function Ym(e){let t={};for(let n=0,a=e.length;n{this.chunks.push({pattern:h,alphabet:Ym(h),startIndex:f})},u=this.pattern.length;if(u>at){let h=0,f=u%at,g=u-f;for(;h{let{isMatch:_,score:C,indices:w}=Km(t,g,x,{location:i+b,distance:r,threshold:o,findAllMatches:s,minMatchCharLength:p,includeMatches:a,ignoreLocation:l});_&&(h=!0),u+=C,_&&w&&(c=[...c,...w])});let f={isMatch:h,score:h?u/this.chunks.length:1};return h&&a&&(f.indices=c),f}},Oe=class{constructor(t){this.pattern=t}static isMultiMatch(t){return Us(t,this.multiRegex)}static isSingleMatch(t){return Us(t,this.singleRegex)}search(){}};function Us(e,t){let n=e.match(t);return n?n[1]:null}var Fa=class extends Oe{constructor(t){super(t)}static get type(){return"exact"}static get multiRegex(){return/^="(.*)"$/}static get singleRegex(){return/^=(.*)$/}search(t){let n=t===this.pattern;return{isMatch:n,score:n?0:1,indices:[0,this.pattern.length-1]}}},Ea=class extends Oe{constructor(t){super(t)}static get type(){return"inverse-exact"}static get multiRegex(){return/^!"(.*)"$/}static get singleRegex(){return/^!(.*)$/}search(t){let a=t.indexOf(this.pattern)===-1;return{isMatch:a,score:a?0:1,indices:[0,t.length-1]}}},za=class extends Oe{constructor(t){super(t)}static get type(){return"prefix-exact"}static get multiRegex(){return/^\^"(.*)"$/}static get singleRegex(){return/^\^(.*)$/}search(t){let n=t.startsWith(this.pattern);return{isMatch:n,score:n?0:1,indices:[0,this.pattern.length-1]}}},Ba=class extends Oe{constructor(t){super(t)}static get type(){return"inverse-prefix-exact"}static get multiRegex(){return/^!\^"(.*)"$/}static get singleRegex(){return/^!\^(.*)$/}search(t){let n=!t.startsWith(this.pattern);return{isMatch:n,score:n?0:1,indices:[0,t.length-1]}}},Pa=class extends Oe{constructor(t){super(t)}static get type(){return"suffix-exact"}static get multiRegex(){return/^"(.*)"\$$/}static get singleRegex(){return/^(.*)\$$/}search(t){let n=t.endsWith(this.pattern);return{isMatch:n,score:n?0:1,indices:[t.length-this.pattern.length,t.length-1]}}},Ta=class extends Oe{constructor(t){super(t)}static get type(){return"inverse-suffix-exact"}static get multiRegex(){return/^!"(.*)"\$$/}static get singleRegex(){return/^!(.*)\$$/}search(t){let n=!t.endsWith(this.pattern);return{isMatch:n,score:n?0:1,indices:[0,t.length-1]}}},wn=class extends Oe{constructor(t,{location:n=ne.location,threshold:a=ne.threshold,distance:i=ne.distance,includeMatches:r=ne.includeMatches,findAllMatches:o=ne.findAllMatches,minMatchCharLength:s=ne.minMatchCharLength,isCaseSensitive:p=ne.isCaseSensitive,ignoreLocation:l=ne.ignoreLocation}={}){super(t),this._bitapSearch=new kn(t,{location:n,threshold:a,distance:i,includeMatches:r,findAllMatches:o,minMatchCharLength:s,isCaseSensitive:p,ignoreLocation:l})}static get type(){return"fuzzy"}static get multiRegex(){return/^"(.*)"$/}static get singleRegex(){return/^(.*)$/}search(t){return this._bitapSearch.searchIn(t)}},Cn=class extends Oe{constructor(t){super(t)}static get type(){return"include"}static get multiRegex(){return/^'"(.*)"$/}static get singleRegex(){return/^'(.*)$/}search(t){let n=0,a,i=[],r=this.pattern.length;for(;(a=t.indexOf(this.pattern,n))>-1;)n=a+r,i.push([a,n-1]);let o=!!i.length;return{isMatch:o,score:o?0:1,indices:i}}},Oa=[Fa,Cn,za,Ba,Ta,Pa,Ea,wn],Vs=Oa.length,Xm=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,Jm="|";function Qm(e,t={}){return e.split(Jm).map(n=>{let a=n.trim().split(Xm).filter(r=>r&&!!r.trim()),i=[];for(let r=0,o=a.length;r!!(e[jn.AND]||e[jn.OR]),nh=e=>!!e[Ra.PATH],ah=e=>!He(e)&&$s(e)&&!Ua(e),Hs=e=>({[jn.AND]:Object.keys(e).map(t=>({[t]:e[t]}))});function Ys(e,t,{auto:n=!0}={}){let a=i=>{let r=Object.keys(i),o=nh(i);if(!o&&r.length>1&&!Ua(i))return a(Hs(i));if(ah(i)){let p=o?i[Ra.PATH]:r[0],l=o?i[Ra.PATTERN]:i[p];if(!Te(l))throw new Error(Tm(p));let c={keyId:Ma(p),pattern:l};return n&&(c.searcher=Wa(l,t)),c}let s={children:[],operator:r[0]};return r.forEach(p=>{let l=i[p];He(l)&&l.forEach(c=>{s.children.push(a(c))})}),s};return Ua(e)||(e=Hs(e)),a(e)}function ih(e,{ignoreFieldNorm:t=ne.ignoreFieldNorm}){e.forEach(n=>{let a=1;n.matches.forEach(({key:i,norm:r,score:o})=>{let s=i?i.weight:null;a*=Math.pow(o===0&&s?Number.EPSILON:o,(s||1)*(t?1:r))}),n.score=a})}function rh(e,t){let n=e.matches;t.matches=[],ke(n)&&n.forEach(a=>{if(!ke(a.indices)||!a.indices.length)return;let{indices:i,value:r}=a,o={indices:i,value:r};a.key&&(o.key=a.key.src),a.idx>-1&&(o.refIndex=a.idx),t.matches.push(o)})}function oh(e,t){t.score=e.score}function sh(e,t,{includeMatches:n=ne.includeMatches,includeScore:a=ne.includeScore}={}){let i=[];return n&&i.push(rh),a&&i.push(oh),e.map(r=>{let{idx:o}=r,s={item:t[o],refIndex:o};return i.length&&i.forEach(p=>{p(r,s)}),s})}var qe=class{constructor(t,n={},a){this.options={...ne,...n},this.options.useExtendedSearch,this._keyStore=new Aa(this.options.keys),this.setCollection(t,a)}setCollection(t,n){if(this._docs=t,n&&!(n instanceof Ht))throw new Error(Pm);this._myIndex=n||Ks(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(t){!ke(t)||(this._docs.push(t),this._myIndex.add(t))}remove(t=()=>!1){let n=[];for(let a=0,i=this._docs.length;a-1&&(p=p.slice(0,n)),sh(p,this._docs,{includeMatches:a,includeScore:i})}_searchStringList(t){let n=Wa(t,this.options),{records:a}=this._myIndex,i=[];return a.forEach(({v:r,i:o,n:s})=>{if(!ke(r))return;let{isMatch:p,score:l,indices:c}=n.searchIn(r);p&&i.push({item:r,idx:o,matches:[{score:l,value:r,norm:s,indices:c}]})}),i}_searchLogical(t){let n=Ys(t,this.options),a=(s,p,l)=>{if(!s.children){let{keyId:u,searcher:h}=s,f=this._findMatches({key:this._keyStore.get(u),value:this._myIndex.getValueForItemAtKeyId(p,u),searcher:h});return f&&f.length?[{idx:l,item:p,matches:f}]:[]}let c=[];for(let u=0,h=s.children.length;u{if(ke(s)){let l=a(n,s,p);l.length&&(r[p]||(r[p]={idx:p,item:s,matches:[]},o.push(r[p])),l.forEach(({matches:c})=>{r[p].matches.push(...c)}))}}),o}_searchObjectList(t){let n=Wa(t,this.options),{keys:a,records:i}=this._myIndex,r=[];return i.forEach(({$:o,i:s})=>{if(!ke(o))return;let p=[];a.forEach((l,c)=>{p.push(...this._findMatches({key:l,value:o[c],searcher:n}))}),p.length&&r.push({idx:s,item:o,matches:p})}),r}_findMatches({key:t,value:n,searcher:a}){if(!ke(n))return[];let i=[];if(He(n))n.forEach(({v:r,i:o,n:s})=>{if(!ke(r))return;let{isMatch:p,score:l,indices:c}=a.searchIn(r);p&&i.push({score:l,key:t,value:r,idx:o,norm:s,indices:c})});else{let{v:r,n:o}=n,{isMatch:s,score:p,indices:l}=a.searchIn(r);s&&i.push({score:p,key:t,value:r,norm:o,indices:l})}return i}};qe.version="6.6.2";qe.createIndex=Ks;qe.parseIndex=Gm;qe.config=ne;qe.parseQuery=Ys;th(Na);var En=be(Js(),1),_c=be(Wt(),1),Fe=require("obsidian"),Le=be(Bt(),1);function qt(e,t){let n=In(e),a=In(t),i=n.pop(),r=a.pop(),o=Ha(n,a);return o!==0?o:i&&r?Ha(i.split("."),r.split(".")):i||r?i?-1:1:0}var ch=e=>typeof e=="string"&&/^[v\d]/.test(e)&&nc.test(e),Sn=(e,t,n)=>{ph(n);let a=qt(e,t);return ac[n].includes(a)},qa=(e,t)=>{let n=t.match(/^([<>=~^]+)/),a=n?n[1]:"=";if(a!=="^"&&a!=="~")return Sn(e,t,a);let[i,r,o]=In(e),[s,p,l]=In(t);return Ln(i,s)!==0?!1:a==="^"?Ha([r,o],[p,l])>=0:Ln(r,p)!==0?!1:Ln(o,l)>=0};qt.validate=ch;qt.compare=Sn;qt.sastisfies=qa;var nc=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,In=e=>{if(typeof e!="string")throw new TypeError("Invalid argument expected string");let t=e.match(nc);if(!t)throw new Error(`Invalid argument not valid semver ('${e}' received)`);return t.shift(),t},Qs=e=>e==="*"||e==="x"||e==="X",ec=e=>{let t=parseInt(e,10);return isNaN(t)?e:t},lh=(e,t)=>typeof e!=typeof t?[String(e),String(t)]:[e,t],Ln=(e,t)=>{if(Qs(e)||Qs(t))return 0;let[n,a]=lh(ec(e),ec(t));return n>a?1:n{for(let n=0;n":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1]},tc=Object.keys(ac),ph=e=>{if(typeof e!="string")throw new TypeError(`Invalid operator type, expected string but got ${typeof e}`);if(tc.indexOf(e)===-1)throw new Error(`Invalid operator, expected one of ${tc.join("|")}`)};var $a=be(Wt(),1);var Fn=require("obsidian");var ic="isc",rc=(e,t)=>typeof e=="string"&&e.trim().length>0?t.search(e.replace(/^\+|\+$/g,"").split(/[+]/g)):t.getAllIds();function oc(e,t){return $(this,null,function*(){let{id:n,name:a}=e.item,{matches:i}=e,r=yield this.packManager.getSVGIcon(n);if(!r)throw new TypeError("Failed to get icon for key: "+n);t.addClass("mod-complex");let o=t.createDiv("suggestion-content").createDiv("suggestion-title");if(i){let s=i.length===1?i[0].key==="name"?i[0].indices:[]:vn(i.flatMap(p=>p.key==="name"?p.indices:[]));uh(o,a.replace(/[_-]/g," "),s)}else o.setText(a.replace(/[_-]/g," "));t.createDiv("suggestion-aux").createSpan("suggestion-flair",s=>s.appendChild(r))})}var An=class extends Fn.SuggestModal{constructor(n){super(n.app);this.plugin=n;this.renderSuggestion=oc;this.resolve=null;this.modalEl.addClass(ic)}get packManager(){return this.plugin.packManager}getSuggestions(n){return rc(n,this.packManager)}open(){return super.open(),new Promise(n=>{this.resolve=n})}onClose(){this.resolve&&(this.resolve(null),this.resolve=null)}onChooseSuggestion(n){}selectSuggestion(n,a){this.resolve&&(n!=null&&n.item?this.resolve(n.item):this.resolve(null),this.resolve=null),super.selectSuggestion(n,a)}},Mn=class extends Fn.EditorSuggest{constructor(n){super(n.app);this.plugin=n;this.renderSuggestion=oc;this.suggestEl.addClass(ic)}get packManager(){return this.plugin.packManager}onTrigger(n,a){if(!this.plugin.settings.suggester)return null;let i=a.getLine(n.line).substring(0,n.ch),r=this.plugin.settings.triggerWithTrailingSpace?" ":"",o=String.raw`(?:${r}:|๏ผš๏ผš)([^:\s]+$)`,s=i.match(new RegExp(o,"i"));if(!s)return null;let p=s.input.substring(0,s.index).match(/:([^\s:]+$)/);return p&&this.packManager.hasIcon(p[1])?null:{end:n,start:{ch:s.index,line:n.line},query:s[1]}}getSuggestions(n){return rc(n.query,this.packManager)}selectSuggestion(n){if(!this.context)return;let{id:a,pack:i}=n.item;this.context.editor.replaceRange(this.plugin.settings.code2emoji&&i==="emoji"?this.packManager.getIcon(a,!0):`:${a}:`+(this.plugin.settings.spaceAfterSC?" ":""),this.context.start,this.context.end)}},uh=(e,t,n,a)=>{if(n){a===void 0&&(a=0);let i=0;for(let r=0;r=t.length)break;s<0&&(s=0),s!==i&&e.appendText(t.substring(i,s)),e.createSpan({cls:"suggestion-highlight",text:t.substring(s,p)}),i=p}}i({hasIcon:e.hasIcon.bind(e),getIcon:e.getIcon.bind(e),getIconData:e.getIconData.bind(e),getSVGIcon:e.getSVGIcon.bind(e),getIconFromUser:()=>new An(t).open(),isEmoji:$a.default.hasEmoji.bind($a.default),postProcessor:t.postProcessor.bind(t),version:{get current(){return t.manifest.version},compare:(n,a)=>Sn(t.manifest.version,a,n),satisfies:n=>qa(t.manifest.version,n)}});var hc=be(dc(),1),gc=be(ya(),1),Ja=require("obsidian");var Ya=["activity","airplay","alarm-check","alarm-clock-off","alarm-clock","alarm-minus","alarm-plus","album","alert-circle","alert-octagon","alert-triangle","align-center","align-justify","align-left","align-right","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","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","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","clock","cloud-drizzle","cloud-fog","cloud-hail","cloud-lightning","cloud-moon","cloud-off","cloud-rain-wind","cloud-rain","cloud-snow","cloud-sun","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","cross","crosshair","crown","currency","database","delete","disc","divide-circle","divide-square","divide","dollar-sign","download-cloud","download","dribbble","droplet","droplets","drumstick","edit-2","edit-3","edit","egg","equal-not","equal","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-triangle-left","flag-triangle-right","flag","flame","flashlight-off","flashlight","flask-conical","flask-round","folder-minus","folder-open","folder-plus","folder","form-input","forward","framer","frown","function-square","gamepad-2","gamepad","gauge","gavel","gem","ghost","gift","git-branch-plus","git-branch","git-commit","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","info","inspect","instagram","italic","japanese-yen","key","landmark","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","link","linkedin","list-checks","list-minus","list-ordered","list-plus","list-x","list","list.txt","loader-2","loader","locate-fixed","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","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","paperclip","pause-circle","pause-octagon","pause","pen-tool","pencil","percent","person-standing","phone-call","phone-forwarded","phone-incoming","phone-missed","phone-off","phone-outgoing","phone","pie-chart","piggy-bank","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","rocking-chair","rotate-ccw","rotate-cw","rss","ruler","russian-ruble","save","scale","scan-line","scan","scissors","screen-share-off","screen-share","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","star","stop-circle","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","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","webcam","wifi-off","wifi","wind","wrap-text","wrench","x-circle","x-octagon","x-square","x","youtube","zap-off","zap","zoom-in","zoom-out",""];var Xa=["logo-crystal","create-new","trash","search","right-triangle","document","folder","pencil","left-arrow","right-arrow","three-horizontal-bars","dot-network","audio-file","image-file","pdf-file","gear","documents","blocks","go-to-file","presentation","cross-in-box","microphone","microphone-filled","link","popup-open","checkmark","hashtag","left-arrow-with-tail","right-arrow-with-tail","up-arrow-with-tail","down-arrow-with-tail","lines-of-text","vertical-three-dots","pin","magnifying-glass","info","horizontal-split","vertical-split","calendar-with-checkmark","sheets-in-box","up-and-down-arrows","broken-link","cross","any-key","reset","star","crossed-star","dice","filled-pin","enter","help","vault","open-vault","paper-plane","bullet-list","uppercase-lowercase-a","star-list","expand-vertically","languages","switch","pane-layout","install","sync","check-in-circle","sync-small","check-small","paused","forward-arrow","stacked-levels","bracket-glyph","note-glyph","tag-glyph","price-tag-glyph","heading-glyph","bold-glyph","italic-glyph","strikethrough-glyph","highlight-glyph","code-glyph","quote-glyph","link-glyph","bullet-list-glyph","number-list-glyph","checkbox-glyph","undo-glyph","redo-glyph","up-chevron-glyph","down-chevron-glyph","left-chevron-glyph","right-chevron-glyph","percent-sign-glyph","keyboard-glyph","double-up-arrow-glyph","double-down-arrow-glyph","image-glyph","wrench-screwdriver-glyph","clock","plus-with-circle","minus-with-circle","indent-glyph","unindent-glyph","fullscreen","exit-fullscreen","cloud","run-command","compress-glyph","enlarge-glyph","scissors-glyph","up-curly-arrow-glyph","down-curly-arrow-glyph","plus-minus-glyph","links-going-out","links-coming-in","add-note-glyph","duplicate-glyph","clock-glyph","calendar-glyph","command-glyph","dice-glyph","file-explorer-glyph","graph-glyph","import-glyph","navigate-glyph","open-elsewhere-glyph","bullet-list-glyph","presentation-glyph","paper-plane-glyph","question-mark-glyph","restore-file-glyph","search-glyph","star-glyph","play-audio-glyph","stop-audio-glyph","tomorrow-glyph","wand-glyph","workspace-glyph","yesterday-glyph","box-glyph","merge-files-glyph","merge-files","two-blank-pages","scissors","paste","paste-text","split","select-all-text","wand","github-glyph","reading-glasses"];var vh=e=>e.replace(/-/g,"_"),Qa="luc",bh="obs",fc=e=>["class","height","width"].forEach(t=>{var n;return(n=e.firstElementChild)==null?void 0:n.removeAttribute(t)}),ei=class{constructor(t,n){this.pack=t;this.obsidianId=n;this.type="bulti-in";this.name=vh(n),this.id=`${t}_${this.name}`}get data(){var n;let t=createDiv();return(0,Ja.setIcon)(t,(this.pack===Qa?"lucide-":"")+this.obsidianId),fc(t),(n=t.firstElementChild)==null||n.setAttribute("xmlns","http://www.w3.org/2000/svg"),t.innerHTML}get dataUri(){return(0,hc.default)(this.data)}getDOM(t=!0){let n=createSpan({cls:xt(this)});return t?(n.addClass("isc-svg-icon"),(0,Ja.setIcon)(n,(this.pack===Qa?"lucide-":"")+this.obsidianId),fc(n)):(n.addClass("isc-img-icon"),n.createEl("img",{attr:{src:this.dataUri}})),n}},mc="emoji",yh=()=>{let e=new Map,t=[],n=[];for(let[a,i]of[[bh,Xa],[Qa,Ya]]){n.push(a);for(let r of i){let o=new ei(a,r);e.set(o.id,o),t.push(o)}}n.push(mc);for(let a of Object.keys(gc.default))t.push({pack:mc,id:a,name:a});return{packs:e,ids:t,packnames:n}},ti=yh(),ni=ti.packs,ai=ti.ids,vt=ti.packnames;var ii=be(Wt(),1);var it=class{constructor(t){this.name=t}get id(){return this.name}get pack(){return"emoji"}get type(){return"emoji"}get char(){return ii.default.get(this.name)}static getData(t){return ii.default.hasEmoji(t)?new it(t):null}getDOM(t=!0){return createSpan({cls:[xt(this),"isc-char-icon"],text:this.char})}};var xc=require("obsidian"),vc=be(Bt(),1);var Xe=class{constructor(t,n,a,i,r){this._id=t;this._name=n;this._pack=a;this.plugin=r;this.path=i.trim()}static getData(t,n,a){let i=Ca(t);return!i||i.pack==="emoji"?null:new Xe(t,i.name,i.pack,n,a)}get type(){return"file"}get vault(){return this.plugin.app.vault}get id(){return this._id}get pack(){return this._pack}get name(){return this._name}get ext(){return(0,vc.extname)(this.path)}get fsPath(){return this.vault.adapter instanceof xc.FileSystemAdapter?this.vault.adapter.getFullPath(this.path):null}get resourcePath(){return this.vault.adapter.getResourcePath(this.path)}get isSVG(){return this.ext===".svg"}getDOM(t=!0){let n=createSpan({cls:xt(this)});return t&&this.isSVG?(n.addClass("isc-svg-icon"),(()=>$(this,null,function*(){let a=yield this.plugin.fileIconCache.getIcon(this.path);return a?(this.fixFillColor(a),n.append(a)):console.error("failed to get icon data for",this.path),n}))()):(n.addClass("isc-img-icon"),n.createEl("img",{attr:{src:this.resourcePath}}),n)}fixFillColor(t){if(!!_h.includes(this.pack))for(let n of t.getElementsByTagName("path"))n.hasAttribute("fill")||n.setAttribute("fill","currentColor")}},_h=["fab","far","fas","rif","ril"];var bc=e=>!!e.ext;var kh="/icons.json",wh="icons",$t=class extends Fe.Events{constructor(n){super();this.plugin=n;this._customIcons=new Map;this._cutomsIconPacknames=new Set;this._loaded=!1;this._fuse=new qe(ai,{keys:["name","pack"],includeScore:!0,findAllMatches:!0,threshold:.5,shouldSort:!0,includeMatches:!0,useExtendedSearch:!0})}get vault(){return this.plugin.app.vault}renameIconFile(n,a,i){return $(this,null,function*(){let r=(0,Le.join)(this.customIconsDir,i+a),o=(0,Le.join)(this.customIconsDir,n+a);return yield this.vault.adapter.rename(o,r),r})}removeIconFile(n,a){let i=(0,Le.join)(this.customIconsDir,n+a);return this.vault.adapter.remove(i)}addIcon(n,a,i){return $(this,null,function*(){let r=(0,Le.join)(this.customIconsDir,n+a);return yield this.vault.adapter.writeBinary(r,i),r})}get customPacknames(){return[...this._cutomsIconPacknames]}get customIconsFilePath(){return(0,Fe.normalizePath)(this.plugin.manifest.dir+kh)}get customIconsDir(){return(0,Le.join)(this.vault.configDir,wh)}isPacknameExists(n){return vt.includes(n)||this._cutomsIconPacknames.has(n)}get enabledPacknames(){return[...vt,...this._cutomsIconPacknames].filter(n=>this.isPackEnabled(n))}hasIcon(n){return this._isBuiltIn(n)||this._customIcons.has(n)}_isBuiltIn(n){return _c.default.hasEmoji(n)||ni.has(n)}getIcon(n,a=!1){n=je(n);let i=this.getIconData(n);if(!i)return null;let r=()=>i.getDOM(!1);switch(i.type){case"emoji":return a?i.char:r();case"bulti-in":return a?i.dataUri:r();case"file":return a?i.resourcePath:r();default:(0,yc.default)(i)}}getSVGIcon(n,a=!1){return $(this,null,function*(){n=je(n);let i=this.getIconData(n);if(!i)return null;let r=()=>i.getDOM(!0);if(i.type==="emoji")return a?i.char:r();if(i.type==="bulti-in"||i.type==="file"&&i.isSVG){let o=yield r();return a?o.innerHTML:o}else return a?i.resourcePath:r()})}getIconData(n){n=je(n);let a;return(a=it.getData(n))||(a=ni.get(n))||(a=this._customIcons.get(n))?a:null}isPackEnabled(n){return n==="emoji"?!0:!this.plugin.settings.disabledPacks.has(n)}refreshPackNames(){this._cutomsIconPacknames.clear();for(let[,{pack:n}]of this._customIcons)this._cutomsIconPacknames.add(n)}loadIcons(){return $(this,null,function*(){if(this._loaded&&(this._fuse.setCollection([]),this._customIcons.clear(),this._cutomsIconPacknames.clear(),this._loaded=!1),!(yield this.vault.adapter.exists(this.customIconsDir))){yield this.vault.adapter.mkdir(this.customIconsDir);return}let n=yield this.vault.adapter.list(this.customIconsDir),a,i=n.files.map(r=>$(this,null,function*(){if(!gn.test(r))return;let o=(0,Le.basename)(r).replace(gn,""),s=Xe.getData(o,r,this.plugin);s?(this._customIcons.set(o,s),this._fuse.add(s)):console.warn("Failed to load icon data (raw value: %o) for id %s, skipping...",r,o)}));for(let r of yield Promise.allSettled(i))r.status==="rejected"&&console.error("Failed to load icon",r.reason);this._loaded=!0,this.refreshPackNames(),this.trigger("initialized",this.plugin.api)})}backupIcons(n){return $(this,null,function*(){let a=new En.default,i=yield this.vault.adapter.list(this.customIconsDir);for(let o of i.files)(!n||(0,Le.basename)(o).startsWith(n+"_"))&&a.file((0,Le.basename)(o),this.vault.adapter.readBinary(o));let r=`${n!=null?n:"custom-icons"}.zip`;yield this.vault.createBinary(r,yield a.generateAsync({type:"arraybuffer"})),Fe.Platform.isDesktopApp?this.plugin.app.openWithDefaultApp(""):new Fe.Notice(`icons have been saved to ${r}, enable 'Detect all file extension' in 'Files & Links' to visit it`)})}importIconsFromFileList(n,a=!1){return $(this,null,function*(){let i=[];for(let r=0;r$(this,null,function*(){let{name:l}=p;a&&!l.startsWith(i+"_")&&(l=i+"_"+l);let c=this.getAvailableId(l),u=(0,Le.join)(this.customIconsDir,c);return(yield this.vault.adapter.exists(u))?Promise.reject(`icon ${c} already exists, skipping..`):(yield this.vault.adapter.writeBinary(u,yield p.async("arraybuffer")),c)})),s=(yield Promise.allSettled(o)).reduce((p,l)=>(l.status==="rejected"?console.error("Failed to import icon",l.reason):p.push(l.value),p),[]);return new Fe.Notice(s.length+" icons imported"),n.name})}addFromFiles(n,a){return $(this,null,function*(){let i=yield zs(a);if(!i){new Fe.Notice("No SVG file found in dropped items");return}if(vt.includes(n)){console.error("failed to add pack: pack name %s reserved",n);return}let r=i.reduce((s,{name:p,ext:l,data:c})=>{let u=ja(`${n}_${p}`);return u?(u=this.getAvailableId(u),this._customIcons.has(u)?(s.push(Promise.reject(`icon ${u} already exists, skipping..`)),s):(s.push((()=>$(this,null,function*(){try{let h=yield this.addIcon(u,l,c);this.set(u,new Xe(u,p,n,h,this.plugin),!1)}catch(h){throw new $e("add",u,h)}return u}))()),s)):(console.warn("failed to add icon: id %s invalid, skipping...",u),s)},[]),o=[];for(let s of yield Promise.allSettled(r))s.status==="rejected"?console.error("Failed to add icon, details: ",s.reason):o.push(s.value);this.refreshPackNames(),this.trigger("changed",this.plugin.api,o),new Fe.Notice(o.length.toString()+" icons added")})}deleteMultiple(...n){return $(this,null,function*(){this._fuse.remove(r=>bc(r)&&n.includes(r.id));let a=n.map(r=>$(this,null,function*(){let o=this._customIcons.get(r);if(!o)throw new $e("delete",r,"No icon found in _customIcons");this._customIcons.delete(r);try{yield this.removeIconFile(r,o.ext)}catch(s){throw new $e("delete",r,s)}})),i=!1;for(let r of yield Promise.allSettled(a))r.status==="rejected"?console.error("Failed to remove icon file, details: ",r.reason):i||(i=!0);i&&(this.refreshPackNames(),this.trigger("changed",this.plugin.api,n))})}filter(n){return $(this,null,function*(){let a=new Map;for(let[r,o]of this._customIcons)n(r,o)||(this._customIcons.delete(r),a.set(r,o.path));if(this._fuse.remove(r=>a.has(r.id)),a.size===0)return;this.refreshPackNames(),this.trigger("changed",this.plugin.api,[...a.keys()]);let i=[...a.values()].map(r=>$(this,null,function*(){try{yield this.vault.adapter.remove(r)}catch(o){throw new $e("delete",(0,Le.basename)(r),o)}}));for(let r of yield Promise.allSettled(i))r.status==="rejected"&&console.error("Failed to remove icon file, details: ",r.reason)})}rename(n,a){return $(this,null,function*(){if(this.hasIcon(a))return console.log("failed to rename icon: id %s already exists",a),null;let i=this._customIcons.get(n);if(!i)return console.log("failed to rename icon: id %s not found in custom icons",n),null;let r=ja(a);if(!r)return console.log("failed to rename icon: id %s invalid",n),null;try{i.path=yield this.renameIconFile(n,i.ext,a)}catch(o){throw new $e("rename",n,o,a)}return this.set(r,i,!1),this.delete(n,!1,!1),this.refreshPackNames(),this.trigger("changed",this.plugin.api,[n,a]),a})}star(n){return $(this,null,function*(){let a=n.replace(/_\d?$/,"");if(a===n)return console.log("failed to star icon: no suffix found for id %s",n),null;let i=this._customIcons.get(n);if(!i)return console.log("failed to star icon: id %s not found in custom icons",n),null;if(this._isBuiltIn(a))return console.log("failed to star icon: new id %s exists in built-in icons",a),null;try{let{ext:r}=i;if(this._customIcons.has(a)){let o=this._customIcons.get(a),{ext:s}=o;yield this.renameIconFile(a,s,a+"_temp"),i.path=yield this.renameIconFile(n,r,a),this.set(a,i,!1),o.path=yield this.renameIconFile(a+"_temp",s,n),this.set(n,o,!1)}else i.path=yield this.renameIconFile(n,r,a),this.set(a,i,!1),this.delete(n,!1,!1)}catch(r){new $e("rename",n,r,a)}return this.refreshPackNames(),this.trigger("changed",this.plugin.api,[n,a]),a})}getAvailableId(n){if(!this.hasIcon(n))return n;let a=1,i=`${n}_${a}`;for(;this.hasIcon(i);)i=`${n}_${++a}`;return`${n}_${a}`}set(n,a,i=!0){this._customIcons.get(n)!==a&&(this._customIcons.set(n,a),this._fuse.remove(r=>r.id===n),this._fuse.add(a),i&&(this.refreshPackNames(),this.trigger("changed",this.plugin.api,[n])))}delete(n,a=!0,i=!0){return $(this,null,function*(){let r=this._customIcons.get(n);if(!r)return!1;if(i)try{yield this.removeIconFile(n,r.ext)}catch(s){throw new $e("delete",n,s)}let o=this._customIcons.delete(n);return this._fuse.remove(s=>s.id===n),a&&(this.refreshPackNames(),this.trigger("changed",this.plugin.api,[n])),o})}clear(){return $(this,null,function*(){let n=(yield this.vault.adapter.list(this.customIconsDir)).files.map(a=>this.vault.adapter.remove(a));for(let a of yield Promise.allSettled(n))a.status==="rejected"&&console.error("Failed to remove icon file, details: ",a.reason);this._customIcons.clear(),this._fuse.remove(a=>!ai.includes(a)),this.refreshPackNames(),this.trigger("changed",this.plugin.api)})}search(n,a,i){let r=n.map(o=>({name:o}));return a=a!=null?a:this.enabledPacknames,r.push({$or:a.map(o=>({pack:`=${o}`}))}),this._fuse.search({$and:r},{limit:i!=null?i:20})}getAllIds(n,a){let i=(n!=null?n:this.enabledPacknames).map(r=>({pack:`=${r}`}));return this._fuse.search({$or:i},{limit:a!=null?a:20})}trigger(...n){let[a,...i]=n;super.trigger(a,...i),this.plugin.app.vault.trigger(sc+a,...i)}on(...n){return super.on(...n)}},$e=class extends Error{constructor(t,n,a,i){super(`Error while ${t} on ${n}${i?"=>"+i:""}: ${a instanceof Error?`${a.name}: ${a.message}`:a}`),console.error(`${t} on ${n}${i?"=>"+i:""}`,a),this.name="SaveIconError"}};var oi=require("obsidian"),Cc=be(Bt(),1);var kc=require("obsidian"),ri=class extends kc.Modal{constructor(n){super(n);this.buttonContainerEl=this.modalEl.createDiv("modal-button-container");this.resolve=null;this.containerEl.addClass("mod-confirmation"),this.addButton("mod-cta","OK",()=>this.resolve&&this.resolve(!0)),this.addCancelButton()}open(){return super.open(),new Promise(n=>this.resolve=n)}addButton(n,a,i){return this.buttonContainerEl.createEl("button",{cls:n,text:a}).addEventListener("click",r=>$(this,null,function*(){i&&(yield i(r)),this.close()})),this}onClose(){this.resolve&&this.resolve(!1)}addCancelButton(){return this.addButton("","Cancel",this.close.bind(this))}},wc=(e,t)=>{let n=new ri(t);return n.contentEl.setText(e),n.open()};var Ch=e=>$(void 0,null,function*(){let{vault:t}=e.app,n=yield t.readJson(e.packManager.customIconsFilePath),a=e.packManager.customIconsDir;(yield t.adapter.exists(a))||(yield t.adapter.mkdir(a)),yield Promise.allSettled(Object.entries(n).reduce((i,[r,o])=>{if(typeof r=="string"&&typeof o=="string"){let s=(0,Cc.join)(a,`${r}.svg`);i.push(t.create(s,o))}return i},[]))}),jh=e=>$(void 0,null,function*(){if((yield e.app.vault.adapter.exists(e.packManager.customIconsFilePath))&&!e.settings.isMigrated&&(yield wc("Found custom icons that have not been upgraded, update icons now?",e.app)))try{yield Ch(e),e.settings.isMigrated=!0,yield e.saveSettings(),new oi.Notice("Icon update complete, you can now find icon files in "+e.packManager.customIconsDir)}catch(n){new oi.Notice("Failed to update icons, check console for more details"),console.error(n)}}),jc=jh;var Lh=e=>(t,n)=>{for(let a of t.querySelectorAll(".callout")){let i=a.querySelector(".callout-title > .callout-icon"),r=new MutationObserver(o=>$(void 0,null,function*(){if(i.childElementCount>0)return;let s=Ih(i,"--callout-icon"),p=yield e.api.getSVGIcon(s);!p||(r.disconnect(),i.className+=" "+p.className,i.replaceChildren(...p.childNodes))}));r.observe(i,{childList:!0})}},Lc=Lh,Ih=(e,t,n)=>getComputedStyle(e,n).getPropertyValue(t).trim();var Sh=e=>{switch(e.nodeName){case"CODE":case"MJX-CONTAINER":return NodeFilter.FILTER_REJECT;case"#text":return e.nodeValue&>.test(e.nodeValue)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT;default:return NodeFilter.FILTER_SKIP}},si=e=>{let t=a=>$(void 0,null,function*(){for(let i of[...a.wholeText.matchAll(Rt(gt))].sort((r,o)=>o.index-r.index).map(r=>({text:r[0],index:r.index})))yield n(a,i)}),n=(o,s)=>$(void 0,[o,s],function*(a,{text:i,index:r}){var l,c;let p=yield e.packManager.getSVGIcon(je(i));if(!p)return a;if(typeof p=="string")a.textContent&&(a.textContent=(l=a.textContent)==null?void 0:l.replace(i,p));else{let u=a.splitText(r);(c=u.parentElement)==null||c.insertBefore(p,u),u.textContent=u.wholeText.substring(i.length)}});return a=>{let i=document.createTreeWalker(a,NodeFilter.SHOW_ALL,{acceptNode:Sh}),r=i.currentNode;for(;r;){if(r.nodeType===3){let o=r;$(void 0,null,function*(){let s=[o];o.__PENDING__&&(yield o.__PENDING__,s=[...o.parentElement.childNodes].filter(l=>l instanceof Text));let p=Promise.all(s.map(t));o.__PENDING__=p,yield p,delete o.__PENDING__})}r=i.nextNode()}}},ci=e=>(t,n)=>t.replace(Rt(gt),a=>e.packManager.hasIcon(je(a))?n(a):a);var Ic=e=>{e.registerMarkdownPostProcessor(e._nodeProcessor),e.registerMarkdownPostProcessor(Lc(e))};var zn=class extends Error{},li=class extends zn{},pi=class extends zn{},Ah=(e,t=",")=>e.join(t),Mh={accept:"*",multiple:!1,strict:!1},ui=e=>{let{accept:t,multiple:n,strict:a}={...Mh,...e},i=zh({multiple:n,accept:Array.isArray(t)?Ah(t):t});return new Promise(r=>{i.onchange=()=>{r(Fh(i.files,n,a)),i.remove()},i.click()})},Fh=(e,t,n)=>new Promise((a,i)=>{if(!e)return i(new li);let r=Eh(e,t,n);if(!r)return i(new pi);a(r)}),Eh=(e,t,n)=>!t&&n?e.length===1?e[0]:null:e.length?e:null,zh=({accept:e,multiple:t})=>{let n=document.createElement("input");return n.type="file",n.multiple=t,n.accept=e,n};var me=require("obsidian");var Ol=be(Ia(),1),Nl=be(fn(),1),Vn=require("obsidian");var Kt,X,Ec,Bh,Gt,zc,Sc,Bc,Bn={},Pc=[],Ph=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function Ge(e,t){for(var n in t)e[n]=t[n];return e}function Tc(e){var t=e.parentNode;t&&t.removeChild(e)}function Ee(e,t,n){var a,i,r,o={};for(r in t)r=="key"?a=t[r]:r=="ref"?i=t[r]:o[r]=t[r];if(arguments.length>2&&(o.children=arguments.length>3?Kt.call(arguments,2):n),typeof e=="function"&&e.defaultProps!=null)for(r in e.defaultProps)o[r]===void 0&&(o[r]=e.defaultProps[r]);return Zt(e,o,a,i,null)}function Zt(e,t,n,a,i){var r={type:e,props:t,key:n,ref:a,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:i??++Ec};return i==null&&X.vnode!=null&&X.vnode(r),r}function fi(){return{current:null}}function Ne(e){return e.children}function Ie(e,t){this.props=e,this.context=t}function bt(e,t){if(t==null)return e.__?bt(e.__,e.__.__k.indexOf(e)+1):null;for(var n;t0?Zt(f.type,f.props,f.key,null,f.__v):f)!=null){if(f.__=n,f.__b=n.__b+1,(h=_[c])===null||h&&f.key==h.key&&f.type===h.type)_[c]=void 0;else for(u=0;u2&&(o.children=arguments.length>3?Kt.call(arguments,2):n),Zt(e.type,o,a||e.key,i||e.ref,null)}function Yt(e,t){var n={__c:t="__cC"+Bc++,__:e,Consumer:function(a,i){return a.children(i)},Provider:function(a){var i,r;return this.getChildContext||(i=[],(r={})[t]=this,this.getChildContext=function(){return r},this.shouldComponentUpdate=function(o){this.props.value!==o.value&&i.some(di)},this.sub=function(o){i.push(o);var s=o.componentWillUnmount;o.componentWillUnmount=function(){i.splice(i.indexOf(o),1),s&&s.call(o)}}),a.children}};return n.Provider.__=n.Consumer.contextType=n}Kt=Pc.slice,X={__e:function(e,t,n,a){for(var i,r,o;t=t.__;)if((i=t.__c)&&!i.__)try{if((r=i.constructor)&&r.getDerivedStateFromError!=null&&(i.setState(r.getDerivedStateFromError(e)),o=i.__d),i.componentDidCatch!=null&&(i.componentDidCatch(e,a||{}),o=i.__d),o)return i.__E=i}catch(s){e=s}throw e}},Ec=0,Bh=function(e){return e!=null&&e.constructor===void 0},Ie.prototype.setState=function(e,t){var n;n=this.__s!=null&&this.__s!==this.state?this.__s:this.__s=Ge({},this.state),typeof e=="function"&&(e=e(Ge({},n),this.props)),e&&Ge(n,e),e!=null&&this.__v&&(t&&this.__h.push(t),di(this))},Ie.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),di(this))},Ie.prototype.render=Ne,Gt=[],zc=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Pn.__r=0,Bc=0;var kt,ge,gi,qc,_t=0,Jc=[],$c=X.__b,Gc=X.__r,Zc=X.diffed,Kc=X.__c,Yc=X.unmount;function Xt(e,t){X.__h&&X.__h(ge,e,_t||t),_t=0;var n=ge.__H||(ge.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function _e(e){return _t=1,Nn(nl,e)}function Nn(e,t,n){var a=Xt(kt++,2);return a.t=e,a.__c||(a.__=[n?n(t):nl(void 0,t),function(i){var r=a.t(a.__[0],i);a.__[0]!==r&&(a.__=[r,a.__[1]],a.__c.setState({}))}],a.__c=ge),a.__}function Je(e,t){var n=Xt(kt++,3);!X.__s&&bi(n.__H,t)&&(n.__=e,n.__H=t,ge.__H.__h.push(n))}function vi(e,t){var n=Xt(kt++,4);!X.__s&&bi(n.__H,t)&&(n.__=e,n.__H=t,ge.__h.push(n))}function Qc(e){return _t=5,Ze(function(){return{current:e}},[])}function el(e,t,n){_t=6,vi(function(){return typeof e=="function"?(e(t()),function(){return e(null)}):e?(e.current=t(),function(){return e.current=null}):void 0},n==null?n:n.concat(e))}function Ze(e,t){var n=Xt(kt++,7);return bi(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function rt(e,t){return _t=8,Ze(function(){return e},t)}function wt(e){var t=ge.context[e.__c],n=Xt(kt++,9);return n.c=e,t?(n.__==null&&(n.__=!0,t.sub(ge)),t.props.value):e.__}function tl(e,t){X.useDebugValue&&X.useDebugValue(t?t(e):e)}function Dh(){for(var e;e=Jc.shift();)if(e.__P)try{e.__H.__h.forEach(On),e.__H.__h.forEach(xi),e.__H.__h=[]}catch(t){e.__H.__h=[],X.__e(t,e.__v)}}X.__b=function(e){ge=null,$c&&$c(e)},X.__r=function(e){Gc&&Gc(e),kt=0;var t=(ge=e.__c).__H;t&&(gi===ge?(t.__h=[],ge.__h=[],t.__.forEach(function(n){n.__H&&(n.__H=void 0)})):(t.__h.forEach(On),t.__h.forEach(xi),t.__h=[])),gi=ge},X.diffed=function(e){Zc&&Zc(e);var t=e.__c;t&&t.__H&&t.__H.__h.length&&(Jc.push(t)!==1&&qc===X.requestAnimationFrame||((qc=X.requestAnimationFrame)||function(n){var a,i=function(){clearTimeout(r),Xc&&cancelAnimationFrame(a),setTimeout(n)},r=setTimeout(i,100);Xc&&(a=requestAnimationFrame(i))})(Dh)),ge=null,gi=null},X.__c=function(e,t){t.some(function(n){try{n.__h.forEach(On),n.__h=n.__h.filter(function(a){return!a.__||xi(a)})}catch(a){t.some(function(i){i.__h&&(i.__h=[])}),t=[],X.__e(a,n.__v)}}),Kc&&Kc(e,t)},X.unmount=function(e){Yc&&Yc(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach(function(a){try{On(a)}catch(i){t=i}}),t&&X.__e(t,n.__v))};var Xc=typeof requestAnimationFrame=="function";function On(e){var t=ge,n=e.__c;typeof n=="function"&&(e.__c=void 0,n()),ge=t}function xi(e){var t=ge;e.__c=e.__(),ge=t}function bi(e,t){return!e||e.length!==t.length||t.some(function(n,a){return n!==e[a]})}function nl(e,t){return typeof t=="function"?t(e):t}function ul(e,t){for(var n in t)e[n]=t[n];return e}function yi(e,t){for(var n in e)if(n!=="__source"&&!(n in t))return!0;for(var a in t)if(a!=="__source"&&e[a]!==t[a])return!0;return!1}function _i(e){this.props=e}function Wh(e,t){function n(i){var r=this.props.ref,o=r==i.ref;return!o&&r&&(r.call?r(null):r.current=null),t?!t(this.props,i)||!o:yi(this.props,i)}function a(i){return this.shouldComponentUpdate=n,Ee(e,i)}return a.displayName="Memo("+(e.displayName||e.name)+")",a.prototype.isReactComponent=!0,a.__f=!0,a}(_i.prototype=new Ie).isPureReactComponent=!0,_i.prototype.shouldComponentUpdate=function(e,t){return yi(this.props,e)||yi(this.state,t)};var al=X.__b;X.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),al&&al(e)};var Rh=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.forward_ref")||3911;function Uh(e){function t(n){var a=ul({},n);return delete a.ref,e(a,n.ref||null)}return t.$$typeof=Rh,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName="ForwardRef("+(e.displayName||e.name)+")",t}var il=function(e,t){return e==null?null:De(De(e).map(t))},Vh={map:il,forEach:il,count:function(e){return e?De(e).length:0},only:function(e){var t=De(e);if(t.length!==1)throw"Children.only";return t[0]},toArray:De},Hh=X.__e;X.__e=function(e,t,n,a){if(e.then){for(var i,r=t;r=r.__;)if((i=r.__c)&&i.__c)return t.__e==null&&(t.__e=n.__e,t.__k=n.__k),i.__c(e,t)}Hh(e,t,n,a)};var rl=X.unmount;function Dn(){this.__u=0,this.t=null,this.__b=null}function dl(e){var t=e.__.__c;return t&&t.__e&&t.__e(e)}function qh(e){var t,n,a;function i(r){if(t||(t=e()).then(function(o){n=o.default||o},function(o){a=o}),a)throw a;if(!n)throw t;return Ee(n,r)}return i.displayName="Lazy",i.__f=!0,i}function Jt(){this.u=null,this.o=null}X.unmount=function(e){var t=e.__c;t&&t.__R&&t.__R(),t&&e.__h===!0&&(e.type=null),rl&&rl(e)},(Dn.prototype=new Ie).__c=function(e,t){var n=t.__c,a=this;a.t==null&&(a.t=[]),a.t.push(n);var i=dl(a.__v),r=!1,o=function(){r||(r=!0,n.__R=null,i?i(s):s())};n.__R=o;var s=function(){if(!--a.__u){if(a.state.__e){var l=a.state.__e;a.__v.__k[0]=function u(h,f,g){return h&&(h.__v=null,h.__k=h.__k&&h.__k.map(function(x){return u(x,f,g)}),h.__c&&h.__c.__P===f&&(h.__e&&g.insertBefore(h.__e,h.__d),h.__c.__e=!0,h.__c.__P=g)),h}(l,l.__c.__P,l.__c.__O)}var c;for(a.setState({__e:a.__b=null});c=a.t.pop();)c.forceUpdate()}},p=t.__h===!0;a.__u++||p||a.setState({__e:a.__b=a.__v.__k[0]}),e.then(o,o)},Dn.prototype.componentWillUnmount=function(){this.t=[]},Dn.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var n=document.createElement("div"),a=this.__v.__k[0].__c;this.__v.__k[0]=function r(o,s,p){return o&&(o.__c&&o.__c.__H&&(o.__c.__H.__.forEach(function(l){typeof l.__c=="function"&&l.__c()}),o.__c.__H=null),(o=ul({},o)).__c!=null&&(o.__c.__P===p&&(o.__c.__P=s),o.__c=null),o.__k=o.__k&&o.__k.map(function(l){return r(l,s,p)})),o}(this.__b,n,a.__O=a.__P)}this.__b=null}var i=t.__e&&Ee(Ne,null,e.fallback);return i&&(i.__h=null),[Ee(Ne,null,t.__e?null:e.children),i]};var ol=function(e,t,n){if(++n[1]===n[0]&&e.o.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!=="t"||!e.o.size))for(n=e.u;n;){for(;n.length>3;)n.pop()();if(n[1]>>1,1),t.i.removeChild(a)}}),yt(Ee($h,{context:t.context},e.__v),t.l)):t.l&&t.componentWillUnmount()}function Zh(e,t){var n=Ee(Gh,{__v:e,i:t});return n.containerInfo=t,n}(Jt.prototype=new Ie).__e=function(e){var t=this,n=dl(t.__v),a=t.o.get(e);return a[0]++,function(i){var r=function(){t.props.revealOrder?(a.push(i),ol(t,e,a)):i()};n?n(r):r()}},Jt.prototype.render=function(e){this.u=null,this.o=new Map;var t=De(e.children);e.revealOrder&&e.revealOrder[0]==="b"&&t.reverse();for(var n=t.length;n--;)this.o.set(t[n],this.u=[1,0,this.u]);return e.children},Jt.prototype.componentDidUpdate=Jt.prototype.componentDidMount=function(){var e=this;this.o.forEach(function(t,n){ol(e,n,t)})};var fl=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.element")||60103,Kh=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,Yh=typeof document<"u",Xh=function(e){return(typeof Symbol<"u"&&typeof Symbol()=="symbol"?/fil|che|rad/i:/fil|che|ra/i).test(e)};function Jh(e,t,n){return t.__k==null&&(t.textContent=""),yt(e,t),typeof n=="function"&&n(),e?e.__c:null}function Qh(e,t,n){return hi(e,t),typeof n=="function"&&n(),e?e.__c:null}Ie.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(e){Object.defineProperty(Ie.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var sl=X.event;function eg(){}function tg(){return this.cancelBubble}function ng(){return this.defaultPrevented}X.event=function(e){return sl&&(e=sl(e)),e.persist=eg,e.isPropagationStopped=tg,e.isDefaultPrevented=ng,e.nativeEvent=e};var ml,cl={configurable:!0,get:function(){return this.class}},ll=X.vnode;X.vnode=function(e){var t=e.type,n=e.props,a=n;if(typeof t=="string"){var i=t.indexOf("-")===-1;for(var r in a={},n){var o=n[r];Yh&&r==="children"&&t==="noscript"||r==="value"&&"defaultValue"in n&&o==null||(r==="defaultValue"&&"value"in n&&n.value==null?r="value":r==="download"&&o===!0?o="":/ondoubleclick/i.test(r)?r="ondblclick":/^onchange(textarea|input)/i.test(r+t)&&!Xh(n.type)?r="oninput":/^onfocus$/i.test(r)?r="onfocusin":/^onblur$/i.test(r)?r="onfocusout":/^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(r)?r=r.toLowerCase():i&&Kh.test(r)?r=r.replace(/[A-Z0-9]/,"-$&").toLowerCase():o===null&&(o=void 0),/^oninput/i.test(r)&&(r=r.toLowerCase(),a[r]&&(r="oninputCapture")),a[r]=o)}t=="select"&&a.multiple&&Array.isArray(a.value)&&(a.value=De(n.children).forEach(function(s){s.props.selected=a.value.indexOf(s.props.value)!=-1})),t=="select"&&a.defaultValue!=null&&(a.value=De(n.children).forEach(function(s){s.props.selected=a.multiple?a.defaultValue.indexOf(s.props.value)!=-1:a.defaultValue==s.props.value})),e.props=a,n.class!=n.className&&(cl.enumerable="className"in n,n.className!=null&&(a.class=n.className),Object.defineProperty(a,"className",cl))}e.$$typeof=fl,ll&&ll(e)};var pl=X.__r;X.__r=function(e){pl&&pl(e),ml=e.__c};var ag={ReactCurrentDispatcher:{current:{readContext:function(e){return ml.__n[e.__c].props.value}}}};function ig(e){return Ee.bind(null,e)}function hl(e){return!!e&&e.$$typeof===fl}function rg(e){return hl(e)?Hc.apply(null,arguments):e}function og(e){return!!e.__k&&(yt(null,e),!0)}function sg(e){return e&&(e.base||e.nodeType===1&&e)||null}var cg=function(e,t){return e(t)},lg=function(e,t){return e(t)};var H={useState:_e,useReducer:Nn,useEffect:Je,useLayoutEffect:vi,useRef:Qc,useImperativeHandle:el,useMemo:Ze,useCallback:rt,useContext:wt,useDebugValue:tl,version:"17.0.2",Children:Vh,render:Jh,hydrate:Qh,unmountComponentAtNode:og,createPortal:Zh,createElement:Ee,createContext:Yt,createFactory:ig,cloneElement:rg,createRef:fi,Fragment:Ne,isValidElement:hl,findDOMNode:sg,Component:Ie,PureComponent:_i,memo:Wh,forwardRef:Uh,flushSync:lg,unstable_batchedUpdates:cg,StrictMode:Ne,Suspense:Dn,SuspenseList:Jt,lazy:qh,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:ag};var ki={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},wi=H.createContext&&H.createContext(ki);var Qe=function(){return Qe=Object.assign||function(e){for(var t,n=1,a=arguments.length;n{let t={};return e.forEach((n,a)=>t[n]=a),t})(mg),hg=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,ot=String.fromCharCode.bind(String),kl=typeof Uint8Array.from=="function"?Uint8Array.from.bind(Uint8Array):(e,t=n=>n)=>new Uint8Array(Array.prototype.slice.call(e,0).map(t));var wl=e=>e.replace(/[^A-Za-z0-9\+\/]/g,"");var gg=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,xg=e=>{switch(e.length){case 4:var t=(7&e.charCodeAt(0))<<18|(63&e.charCodeAt(1))<<12|(63&e.charCodeAt(2))<<6|63&e.charCodeAt(3),n=t-65536;return ot((n>>>10)+55296)+ot((n&1023)+56320);case 3:return ot((15&e.charCodeAt(0))<<12|(63&e.charCodeAt(1))<<6|63&e.charCodeAt(2));default:return ot((31&e.charCodeAt(0))<<6|63&e.charCodeAt(1))}},vg=e=>e.replace(gg,xg),bg=e=>{if(e=e.replace(/\s+/g,""),!hg.test(e))throw new TypeError("malformed base64.");e+="==".slice(2-(e.length&3));let t,n="",a,i;for(let r=0;r>16&255):i===64?ot(t>>16&255,t>>8&255):ot(t>>16&255,t>>8&255,t&255);return n},Cl=dg?e=>atob(wl(e)):ji?e=>Buffer.from(e,"base64").toString("binary"):bg,yg=ji?e=>kl(Buffer.from(e,"base64")):e=>kl(Cl(e),t=>t.charCodeAt(0));var _g=ji?e=>Buffer.from(e,"base64").toString("utf8"):_l?e=>_l.decode(yg(e)):e=>vg(Cl(e)),kg=e=>wl(e.replace(/[-_]/g,t=>t=="-"?"+":"/")),jl=e=>_g(kg(e));var Li=require("obsidian"),Ii=(e,t="master",n=!1)=>`https://${n?"raw.staticdn.net":"raw.githubusercontent.com"}/aidenlx/obsidian-icon-shortcodes/${t}/${e}`,Rn=class extends Error{constructor(n){super("GitHub: "+n.message);this.response=n}},Ll=(e="master")=>$(void 0,null,function*(){var a;let t=`https://api.github.com/repos/aidenlx/obsidian-icon-shortcodes/git/trees/${e}?recursive=1&${Date.now()}`,n=(yield(0,Li.requestUrl)({url:t})).json;if(Array.isArray(n.tree)){let i=(a=n.tree.find(r=>r.path==="assets/manifest.json"))==null?void 0:a.url;if(i)return yield wg(i);throw console.error(n),new Error("No manifest.json for icon pack found")}else throw new Rn(n)}),wg=e=>$(void 0,null,function*(){let t=(yield(0,Li.requestUrl)({url:e})).json;if(t.encoding&&t.content){if(t.encoding==="base64")return JSON.parse(jl(t.content));throw console.error(t),new TypeError("Unsupported encoding")}else throw new Rn(t)});var Si={};Xi(Si,{balls:()=>Sl,bars:()=>Al,blank:()=>Il,bubbles:()=>Ml,cubes:()=>Fl,cylon:()=>El,spin:()=>zl,spinningBubbles:()=>Bl,spokes:()=>Pl});var Il=` +`;var Sl=` + + + + + + + + + + + + + +`;var Al=` + + + + + + + + + + + + + + + + +`;var Ml=` + + + + + + + + + + +`;var Fl=` + + + + + + + + + + + + + +`;var El=` + + + + + + + + + + +`;var zl=` + + + + + +`;var Bl=` + + + + + + + + + + + + + + + + + + + + + + + + + + + + +`;var Pl=` + + + + + + + + + + + + + + + + + + + + + + + + + +`;var zg=o=>{var s=o,{color:e="var(--interactive-accent)",delay:t=0,type:n="balls",height:a=64,width:i=64}=s,r=cn(s,["color","delay","type","height","width"]);let[p,l]=_e(t>0);return Je(()=>{let u=-1;return p&&(u=window.setTimeout(()=>l(!1),t)),()=>clearTimeout(u)},[]),H.createElement("div",Me({style:{fill:e,height:a,width:i},dangerouslySetInnerHTML:{__html:Si[p?"blank":n]}},r))},Ai=zg;var Qt=class extends Vn.Modal{constructor(n){super(n.app);this.plugin=n;this.modalEl.addClass("mod-browser-packs")}onOpen(){H.render(H.createElement(Pg,{getIconPack:this.getIconPack.bind(this)}),this.contentEl)}onClose(){H.unmountComponentAtNode(this.contentEl)}getIconPack(n,a){return $(this,null,function*(){let i=(r=!1)=>$(this,null,function*(){let o=Ii(n,a,r),s=(yield(0,Vn.requestUrl)({url:o})).arrayBuffer;yield this.plugin.packManager.importIcons({name:o.split("/").pop(),data:s},!1)});try{yield i()}catch(r){console.error("switch to alternative link",r),yield i(!0)}})}},Bg=(e="master")=>$(void 0,null,function*(){let t=yield Ll(e),n=[];for(let a of t){let i=n.last();(i==null?void 0:i.series)===a.series?(i.styles.push(a),i.count+=a.count):n.push({homepage:a.homepage,description:a.description,series:a.series,license:a.license,styles:[a],count:a.count})}return n}),Pg=({getIconPack:e})=>{var a;let[t,n]=_e(null);return Je(()=>{Bg().then(n).catch(n)},[]),t===null?H.createElement("div",{className:"loading"},H.createElement(Ai,{type:"spin",className:"loading-indicator"}),H.createElement("div",null,"Loading Icon Pack List...")):Array.isArray(t)?H.createElement("div",{className:"icon-pack-list"},t.map(i=>H.createElement(Tg,{key:i.homepage,manifest:i,onDownload:r=>e(r)}))):(console.error(t),H.createElement("div",{className:"error"},"Failed to Load Icon Pack List:",H.createElement("div",{className:"mod-warning"},(a=t.message)!=null?a:t.toString())))},Tl="pack-manifest",Tg=({manifest:{series:e,styles:t,description:n,count:a,homepage:i,license:r},onDownload:o})=>{let s=rt(p=>`${Tl}-${p}`,[]);return H.createElement("div",{className:Tl},H.createElement("div",{className:s("title")},e),H.createElement("div",{className:s("details")},H.createElement("span",{className:s("license"),"aria-label":"License: "+r},H.createElement(xl,{size:"0.9em"})),H.createElement("span",{className:s("count"),"aria-label":`${a} icons in total`},H.createElement(Ci,{size:"0.9em"}),H.createElement("span",{className:"icon-text"},a))),H.createElement("div",{className:s("desc")},H.createElement("div",{className:s("homepage"),"aria-label":i,onClick:()=>window.open(i)},H.createElement(yl,null),H.createElement("a",{className:"icon-text"},"Home Page")),n),H.createElement("div",{className:"styles-list"},t.map(p=>H.createElement(Og,{key:p.bundleName,styleInfo:p,onDownload:o}))))},Dl="style-info",Un=(...e)=>(0,Nl.default)(Dl,...e),Og=({styleInfo:{count:e,packId:t,path:n,style:a},onDownload:i})=>{var p;let r=rt(l=>`${Dl}-${l}`,[]),[o,s]=_e({state:"display"});switch(o.state){case"display":return H.createElement("div",{className:Un()},H.createElement("div",{className:r("title")},a||"regular",H.createElement("span",{className:r("pack-id"),"aria-label":"Pack id used as shortcode prefix"},t)),H.createElement("div",{className:r("details")},H.createElement("div",{className:r("count"),"aria-label":`${e} icons in total`},H.createElement(Ci,{size:"0.9em"}),H.createElement("span",{className:"icon-text"},e))),H.createElement("div",{className:r("button-container")},H.createElement("button",{className:r("download"),onClick:()=>$(void 0,null,function*(){s({state:"downloading"});try{yield i(n),s({state:"done"}),console.log("done")}catch(l){console.error(l),s({state:"error",error:l})}}),"aria-label":"Download"},H.createElement(vl,null)),H.createElement("button",{"aria-label":"Download via Browser",onClick:()=>window.open(Ii(n))},H.createElement(bl,null))));case"downloading":return H.createElement("div",{className:Un("downloading")},H.createElement(Ai,{type:"bubbles",className:"loading-indicator"}),H.createElement("div",null,"Downloading..."));case"done":return H.createElement("div",{className:Un("done")},"Downloaded");case"error":return console.error(o.error),H.createElement("div",{className:Un("error")},"Failed to Download:",H.createElement("div",{className:"mod-warning"},o.error instanceof Error?o.error.message:(p=o.error)==null?void 0:p.toString()));default:(0,Ol.default)(o)}};function Se(e){for(var t=arguments.length,n=Array(t>1?t-1:0),a=1;a3?t.i-4:t.i:Array.isArray(e)?1:Ni(e)?2:Di(e)?3:0}function Bi(e,t){return It(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function Ng(e,t){return It(e)===2?e.get(t):e[t]}function Gl(e,t,n){var a=It(e);a===2?e.set(t,n):a===3?(e.delete(t),e.add(n)):e[t]=n}function Dg(e,t){return e===t?e!==0||1/e==1/t:e!=e&&t!=t}function Ni(e){return Hg&&e instanceof Map}function Di(e){return qg&&e instanceof Set}function xe(e){return e.o||e.t}function Wi(e){if(Array.isArray(e))return Array.prototype.slice.call(e);var t=Gg(e);delete t[se];for(var n=Vi(t),a=0;a1&&(e.set=e.add=e.clear=e.delete=Wg),Object.freeze(e),t&&Lt(e,function(n,a){return St(a,!0)},!0)),e}function Wg(){Se(2)}function Ri(e){return e==null||typeof e!="object"||Object.isFrozen(e)}function We(e){var t=Ti[e];return t||Se(18,e),t}function Rg(e,t){Ti[e]||(Ti[e]=t)}function qn(){return nn}function Mi(e,t){t&&(We("Patches"),e.u=[],e.s=[],e.v=t)}function $n(e){Pi(e),e.p.forEach(Ug),e.p=null}function Pi(e){e===nn&&(nn=e.l)}function Wl(e){return nn={p:[],l:nn,h:e,m:!0,_:0}}function Ug(e){var t=e[se];t.i===0||t.i===1?t.j():t.O=!0}function Fi(e,t){t._=t.p.length;var n=t.p[0],a=e!==void 0&&e!==n;return t.h.g||We("ES5").S(t,e,a),a?(n[se].P&&($n(t),Se(4)),Ye(e)&&(e=Gn(t,e),t.l||Zn(t,e)),t.u&&We("Patches").M(n[se].t,e,t.u,t.s)):e=Gn(t,n,[]),$n(t),t.u&&t.v(t.u,t.s),e!==Kl?e:void 0}function Gn(e,t,n){if(Ri(t))return t;var a=t[se];if(!a)return Lt(t,function(r,o){return Rl(e,a,t,r,o,n)},!0),t;if(a.A!==e)return t;if(!a.P)return Zn(e,a.t,!0),a.t;if(!a.I){a.I=!0,a.A._--;var i=a.i===4||a.i===5?a.o=Wi(a.k):a.o;Lt(a.i===3?new Set(i):i,function(r,o){return Rl(e,a,i,r,o,n)}),Zn(e,i,!1),n&&e.u&&We("Patches").R(a,n,e.u,e.s)}return a.o}function Rl(e,t,n,a,i,r){if(jt(i)){var o=Gn(e,i,r&&t&&t.i!==3&&!Bi(t.D,a)?r.concat(a):void 0);if(Gl(n,a,o),!jt(o))return;e.m=!1}if(Ye(i)&&!Ri(i)){if(!e.h.F&&e._<1)return;Gn(e,i),t&&t.A.l||Zn(e,i)}}function Zn(e,t,n){n===void 0&&(n=!1),e.h.F&&e.m&&St(t,n)}function Ei(e,t){var n=e[se];return(n?xe(n):e)[t]}function Ul(e,t){if(t in e)for(var n=Object.getPrototypeOf(e);n;){var a=Object.getOwnPropertyDescriptor(n,t);if(a)return a;n=Object.getPrototypeOf(n)}}function Ke(e){e.P||(e.P=!0,e.l&&Ke(e.l))}function zi(e){e.o||(e.o=Wi(e.t))}function tn(e,t,n){var a=Ni(t)?We("MapSet").N(t,n):Di(t)?We("MapSet").T(t,n):e.g?function(i,r){var o=Array.isArray(i),s={i:o?1:0,A:r?r.A:qn(),P:!1,I:!1,D:{},l:r,t:i,k:null,o:null,j:null,C:!1},p=s,l=Oi;o&&(p=[s],l=en);var c=Proxy.revocable(p,l),u=c.revoke,h=c.proxy;return s.k=h,s.j=u,h}(t,n):We("ES5").J(t,n);return(n?n.A:qn()).p.push(a),a}function Vg(e){return jt(e)||Se(22,e),function t(n){if(!Ye(n))return n;var a,i=n[se],r=It(n);if(i){if(!i.P&&(i.i<4||!We("ES5").K(i)))return i.t;i.I=!0,a=Vl(n,r),i.I=!1}else a=Vl(n,r);return Lt(a,function(o,s){i&&Ng(i.t,o)===s||Gl(a,o,t(s))}),r===3?new Set(a):a}(e)}function Vl(e,t){switch(t){case 2:return new Map(e);case 3:return Array.from(e)}return Wi(e)}function Zl(){function e(s,p){function l(){this.constructor=s}i(s,p),s.prototype=(l.prototype=p.prototype,new l)}function t(s){s.o||(s.D=new Map,s.o=new Map(s.t))}function n(s){s.o||(s.o=new Set,s.t.forEach(function(p){if(Ye(p)){var l=tn(s.A.h,p,s);s.p.set(p,l),s.o.add(l)}else s.o.add(p)}))}function a(s){s.O&&Se(3,JSON.stringify(xe(s)))}var i=function(s,p){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(l,c){l.__proto__=c}||function(l,c){for(var u in c)c.hasOwnProperty(u)&&(l[u]=c[u])})(s,p)},r=function(){function s(l,c){return this[se]={i:2,l:c,A:c?c.A:qn(),P:!1,I:!1,o:void 0,D:void 0,t:l,k:this,C:!1,O:!1},this}e(s,Map);var p=s.prototype;return Object.defineProperty(p,"size",{get:function(){return xe(this[se]).size}}),p.has=function(l){return xe(this[se]).has(l)},p.set=function(l,c){var u=this[se];return a(u),xe(u).has(l)&&xe(u).get(l)===c||(t(u),Ke(u),u.D.set(l,!0),u.o.set(l,c),u.D.set(l,!0)),this},p.delete=function(l){if(!this.has(l))return!1;var c=this[se];return a(c),t(c),Ke(c),c.t.has(l)?c.D.set(l,!1):c.D.delete(l),c.o.delete(l),!0},p.clear=function(){var l=this[se];a(l),xe(l).size&&(t(l),Ke(l),l.D=new Map,Lt(l.t,function(c){l.D.set(c,!1)}),l.o.clear())},p.forEach=function(l,c){var u=this;xe(this[se]).forEach(function(h,f){l.call(c,u.get(f),f,u)})},p.get=function(l){var c=this[se];a(c);var u=xe(c).get(l);if(c.I||!Ye(u)||u!==c.t.get(l))return u;var h=tn(c.A.h,u,c);return t(c),c.o.set(l,h),h},p.keys=function(){return xe(this[se]).keys()},p.values=function(){var l,c=this,u=this.keys();return(l={})[Hn]=function(){return c.values()},l.next=function(){var h=u.next();return h.done?h:{done:!1,value:c.get(h.value)}},l},p.entries=function(){var l,c=this,u=this.keys();return(l={})[Hn]=function(){return c.entries()},l.next=function(){var h=u.next();if(h.done)return h;var f=c.get(h.value);return{done:!1,value:[h.value,f]}},l},p[Hn]=function(){return this.entries()},s}(),o=function(){function s(l,c){return this[se]={i:3,l:c,A:c?c.A:qn(),P:!1,I:!1,o:void 0,t:l,k:this,p:new Map,O:!1,C:!1},this}e(s,Set);var p=s.prototype;return Object.defineProperty(p,"size",{get:function(){return xe(this[se]).size}}),p.has=function(l){var c=this[se];return a(c),c.o?!!c.o.has(l)||!(!c.p.has(l)||!c.o.has(c.p.get(l))):c.t.has(l)},p.add=function(l){var c=this[se];return a(c),this.has(l)||(n(c),Ke(c),c.o.add(l)),this},p.delete=function(l){if(!this.has(l))return!1;var c=this[se];return a(c),n(c),Ke(c),c.o.delete(l)||!!c.p.has(l)&&c.o.delete(c.p.get(l))},p.clear=function(){var l=this[se];a(l),xe(l).size&&(n(l),Ke(l),l.o.clear())},p.values=function(){var l=this[se];return a(l),n(l),l.o.values()},p.entries=function(){var l=this[se];return a(l),n(l),l.o.entries()},p.keys=function(){return this.values()},p[Hn]=function(){return this.values()},p.forEach=function(l,c){for(var u=this.values(),h=u.next();!h.done;)l.call(c,h.value,h.value,this),h=u.next()},s}();Rg("MapSet",{N:function(s,p){return new r(s,p)},T:function(s,p){return new o(s,p)}})}var Hl,nn,Ui=typeof Symbol<"u"&&typeof Symbol("x")=="symbol",Hg=typeof Map<"u",qg=typeof Set<"u",ql=typeof Proxy<"u"&&Proxy.revocable!==void 0&&typeof Reflect<"u",Kl=Ui?Symbol.for("immer-nothing"):((Hl={})["immer-nothing"]=!0,Hl),$l=Ui?Symbol.for("immer-draftable"):"__$immer_draftable",se=Ui?Symbol.for("immer-state"):"__$immer_state",Hn=typeof Symbol<"u"&&Symbol.iterator||"@@iterator";var $g=""+Object.prototype.constructor,Vi=typeof Reflect<"u"&&Reflect.ownKeys?Reflect.ownKeys:Object.getOwnPropertySymbols!==void 0?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames,Gg=Object.getOwnPropertyDescriptors||function(e){var t={};return Vi(e).forEach(function(n){t[n]=Object.getOwnPropertyDescriptor(e,n)}),t},Ti={},Oi={get:function(e,t){if(t===se)return e;var n=xe(e);if(!Bi(n,t))return function(i,r,o){var s,p=Ul(r,o);return p?"value"in p?p.value:(s=p.get)===null||s===void 0?void 0:s.call(i.k):void 0}(e,n,t);var a=n[t];return e.I||!Ye(a)?a:a===Ei(e.t,t)?(zi(e),e.o[t]=tn(e.A.h,a,e)):a},has:function(e,t){return t in xe(e)},ownKeys:function(e){return Reflect.ownKeys(xe(e))},set:function(e,t,n){var a=Ul(xe(e),t);if(a?.set)return a.set.call(e.k,n),!0;if(!e.P){var i=Ei(xe(e),t),r=i?.[se];if(r&&r.t===n)return e.o[t]=n,e.D[t]=!1,!0;if(Dg(n,i)&&(n!==void 0||Bi(e.t,t)))return!0;zi(e),Ke(e)}return e.o[t]===n&&typeof n!="number"&&(n!==void 0||t in e.o)||(e.o[t]=n,e.D[t]=!0,!0)},deleteProperty:function(e,t){return Ei(e.t,t)!==void 0||t in e.t?(e.D[t]=!1,zi(e),Ke(e)):delete e.D[t],e.o&&delete e.o[t],!0},getOwnPropertyDescriptor:function(e,t){var n=xe(e),a=Reflect.getOwnPropertyDescriptor(n,t);return a&&{writable:!0,configurable:e.i!==1||t!=="length",enumerable:a.enumerable,value:n[t]}},defineProperty:function(){Se(11)},getPrototypeOf:function(e){return Object.getPrototypeOf(e.t)},setPrototypeOf:function(){Se(12)}},en={};Lt(Oi,function(e,t){en[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}}),en.deleteProperty=function(e,t){return en.set.call(this,e,t,void 0)},en.set=function(e,t,n){return Oi.set.call(this,e[0],t,n,e[0])};var Zg=function(){function e(n){var a=this;this.g=ql,this.F=!0,this.produce=function(i,r,o){if(typeof i=="function"&&typeof r!="function"){var s=r;r=i;var p=a;return function(x){var b=this;x===void 0&&(x=s);for(var _=arguments.length,C=Array(_>1?_-1:0),w=1;w<_;w++)C[w-1]=arguments[w];return p.produce(x,function(z){var F;return(F=r).call.apply(F,[b,z].concat(C))})}}var l;if(typeof r!="function"&&Se(6),o!==void 0&&typeof o!="function"&&Se(7),Ye(i)){var c=Wl(a),u=tn(a,i,void 0),h=!0;try{l=r(u),h=!1}finally{h?$n(c):Pi(c)}return typeof Promise<"u"&&l instanceof Promise?l.then(function(x){return Mi(c,o),Fi(x,c)},function(x){throw $n(c),x}):(Mi(c,o),Fi(l,c))}if(!i||typeof i!="object"){if((l=r(i))===void 0&&(l=i),l===Kl&&(l=void 0),a.F&&St(l,!0),o){var f=[],g=[];We("Patches").M(i,l,f,g),o(f,g)}return l}Se(21,i)},this.produceWithPatches=function(i,r){if(typeof i=="function")return function(l){for(var c=arguments.length,u=Array(c>1?c-1:0),h=1;h=0;i--){var r=a[i];if(r.path.length===0&&r.op==="replace"){n=r.value;break}}i>-1&&(a=a.slice(i+1));var o=We("Patches").$;return jt(n)?o(n,a):this.produce(n,function(s){return o(s,a)})},e}(),we=new Zg,Kg=we.produce,H0=we.produceWithPatches.bind(we),q0=we.setAutoFreeze.bind(we),$0=we.setUseProxies.bind(we),G0=we.applyPatches.bind(we),Z0=we.createDraft.bind(we),K0=we.finishDraft.bind(we),Yl=Kg;var Yn=require("obsidian");function Xl(e){var t=_e(function(){return St(typeof e=="function"?e():e,!0)}),n=t[1];return[t[0],rt(function(a){n(typeof a=="function"?Yl(a):St(a))},[])]}var qi=be(fn(),1),At=require("obsidian");var Yg=({iconInfo:e,updated:t})=>{let{packs:n,icons:a}=wt(Kn),{trash:i,pencil:r,star:o,checkmark:s}=a,[p,l]=_e(e.name.replace(/[-_]/g," ")),[c,u]=_e(!1),h=`${e.pack}_${La(p)}`,f=h===e.id||!n.hasIcon(h),g=Ze(()=>n.getIcon(e.id,!0),[e.id,t]),x=b=>$(void 0,null,function*(){let _=yield n.rename(e.id,b);_?(new At.Notice(`The icon is renamed to ${_}`),u(!1)):new At.Notice(`Failed to rename to ${p}, check log for details`)});return H.createElement("div",{className:"item"},H.createElement("div",{className:"icon"},H.createElement("img",{className:"isc-icon",src:g!=null?g:void 0})),H.createElement("div",{className:"name"},c?H.createElement(Xg,{className:(0,qi.default)({invalid:!f}),onChange:b=>l(b.target.value),value:p}):H.createElement("span",null,p)),H.createElement("div",{className:"buttons"},H.createElement(Hi,{btnType:"cta",icon:o,onClick:()=>$(void 0,null,function*(){let b;(b=yield n.star(e.id))&&new At.Notice(`${e.id} is now ${b}`)})}),H.createElement(Hi,{btnType:"cta",icon:c?s:r,onClick:()=>$(void 0,null,function*(){c?f?h!==e.id?yield x(h):u(!1):new At.Notice(`Unable to rename to ${p}, given id invalid`):u(!0)})}),H.createElement(Hi,{btnType:"warning",icon:i,onClick:()=>$(void 0,null,function*(){(yield n.delete(e.id))&&new At.Notice(`${e.id} is removed from the pack`)})})))},Jl=Yg,Hi=e=>{let i=e,{btnType:t,icon:n}=i,a=cn(i,["btnType","icon"]);return H.createElement("button",et(Me({},a),{className:(0,qi.default)({["mod-"+t]:!!t}),dangerouslySetInnerHTML:{__html:n}}))},Xg=e=>H.createElement("textarea",Me({spellCheck:"false",rows:2},e));Zl();var Jg=()=>{let e=createDiv(),t={};for(let n of["trash","pencil","star","checkmark"])e.empty(),(0,Yn.setIcon)(e,n,14),t[n]=e.innerHTML;return t},Kn=Yt(null),$i="%ALL%",an=class extends Yn.Modal{constructor(n,a){super(n.app);this.plugin=n;this.pack=a;this.titleEl.setText(`${a} Icons`),this.modalEl.addClasses(["isc-icon-manager","mod-community-theme"])}onOpen(){return $(this,null,function*(){this.contentEl.empty(),H.render(H.createElement(Kn.Provider,{value:{packs:this.plugin.packManager,icons:Jg()}},H.createElement(e1,{pack:this.pack})),this.contentEl)})}onClose(){H.unmountComponentAtNode(this.contentEl)}},Qg=(e,t)=>e.name.localeCompare(t.name),e1=({pack:e})=>{if(e==="emoji")throw new TypeError("Emoji not supported");let{packs:t}=wt(Kn),[n,a]=_e(""),[i,r]=Xl(new Map),o=Ze(()=>{let s=t.search(n?n.trim().split(" "):[],[e],1/0).map(({item:p})=>p);return n||s.sort(Qg),s},[n,e,i]);return Je(()=>{let s=t.on("changed",(p,l)=>r(c=>{l?l.forEach(u=>c.set(u,(c.get(u)||0)+1)):c.set($i,(c.get($i)||0)+1)}));return()=>t.offref(s)},[t]),H.createElement(H.Fragment,null,H.createElement("div",{className:"filter"},H.createElement("input",{type:"text",placeholder:"Filter",value:n,onChange:s=>a(s.target.value)})),H.createElement("div",{className:"icons"},o.map(s=>{var l,c;let p=((l=i.get(s.id))!=null?l:0)+((c=i.get($i))!=null?c:0);return H.createElement(Jl,{iconInfo:s,updated:p,key:s.id+p})})))};var Ql={code2emoji:!0,suggester:!0,disabledPacks:new Set(["obs"]),triggerWithTrailingSpace:!1,spaceAfterSC:!1,isMigrated:!1},Xn=class extends me.PluginSettingTab{constructor(n,a){super(n,a);this.plugin=a}display(){let{containerEl:n}=this;this.containerEl.empty(),new me.Setting(n).setHeading().setName("Icon Suggester"),new me.Setting(n).setDesc("If this is turned on, a Suggester will appear everytime you type :(or \uFF1A\uFF1A if full-width) followed by a letter. This will help you insert Emojis. ").addToggle(i=>{i.setValue(this.plugin.settings.suggester).onChange(r=>$(this,null,function*(){this.plugin.settings.suggester=r,yield this.plugin.saveSettings()}))}),new me.Setting(n).setName("Replace emoji shortcode with emoji character").setDesc("If this is turned on, emoji shortcodes will be immediately replaced by emoji after typing. Otherwise they are still stored as a shortcode and you only see the Emoji in Preview Mode.").addToggle(i=>{i.setValue(this.plugin.settings.code2emoji).onChange(r=>$(this,null,function*(){this.plugin.settings.code2emoji=r,yield this.plugin.saveSettings()}))}),new me.Setting(n).setName("Trigger with trailing space").setDesc("only trigger suggester if there is a trailing space before the colon").addToggle(i=>{i.setValue(this.plugin.settings.triggerWithTrailingSpace).onChange(r=>$(this,null,function*(){this.plugin.settings.triggerWithTrailingSpace=r,yield this.plugin.saveSettings()}))}),new me.Setting(n).setName("Add space after inserted shortcode").addToggle(i=>{i.setValue(this.plugin.settings.spaceAfterSC).onChange(r=>$(this,null,function*(){this.plugin.settings.spaceAfterSC=r,yield this.plugin.saveSettings()}))}),this.skipIconPack(),new me.Setting(n).setName("Icon Packs").setDesc("Browse and download icon packs").addButton(i=>i.setButtonText("Browser").onClick(()=>new Qt(this.plugin).open()));let a=createDiv({cls:["isc-settings-custom-icon","installed-plugins-container"]});new me.Setting(this.containerEl).setHeading().setName("Custom Icons").addExtraButton(i=>i.setIcon("sheets-in-box").setTooltip("Backup icons").onClick(()=>this.plugin.packManager.backupIcons())).addExtraButton(i=>i.setIcon("restore-file-glyph").setTooltip("Restore backup").onClick(()=>$(this,null,function*(){this.plugin.packManager.importIconsFromFileList(yield ui({multiple:!0,accept:".zip"}),!1),yield this.plugin.packManager.loadIcons(),this.manageCustomIcons(a)}))).addExtraButton(i=>i.setIcon("switch").setTooltip("Reload custom icons").onClick(()=>$(this,null,function*(){yield this.plugin.packManager.loadIcons(),this.manageCustomIcons(a),new me.Notice("Custom icons reloaded")}))).then(i=>me.Platform.isDesktopApp&&i.addExtraButton(r=>r.setIcon("folder").setTooltip("Open Icons Folder").onClick(()=>this.app.openWithDefaultApp(this.plugin.packManager.customIconsDir)))),this.containerEl.appendChild(a),this.manageCustomIcons(a)}_setDisabledPack(n,a){return a.addToggle(i=>{i.setValue(!this.plugin.settings.disabledPacks.has(n)).onChange(r=>$(this,null,function*(){r?this.plugin.settings.disabledPacks.delete(n):this.plugin.settings.disabledPacks.add(n),yield this.plugin.saveSettings()})),i.toggleEl.setAttr("aria-label",`Enable/Disable ${n} Icon Pack`)})}skipIconPack(){let{containerEl:n}=this,a=(i,r,o)=>this._setDisabledPack(i,new me.Setting(n).setName(r).setDesc(createFragment(o)));new me.Setting(this.containerEl).setHeading().setName("Icon Packs"),a("luc","Lucide",i=>i.createEl("a",{href:"https://lucide.dev",text:"official website"})),a("obs","Obsidian's built-in icons",i=>i.appendText("Obsidian's built-in icons are mostly used for UI components. "))}manageCustomIcons(n){n.hasChildNodes()&&n.empty();let a=i=>!/^[A-Za-z0-9]+$/.test(i)||this.plugin.packManager.isPacknameExists(i);new me.Setting(n).setName("Add new icon pack").setDesc("Reserved names: "+vt.join(", ")).then(i=>{let r=null,o=null;i.addText(s=>{s.setPlaceholder("Enter name").onChange(p=>{let l=a(p);s.inputEl.toggleClass("invalid",!!p&&l),r==null||r.setDisabled(l)}).then(p=>p.inputEl.addClass("isc-add-pack-input")),o=s}).addButton(s=>(s.setCta().setIcon("plus-with-circle").onClick(()=>{let p=o==null?void 0:o.getValue();if(!!p){if(a(p)){new me.Notice("This name is invalid.");return}this.addNewCustomIconEntry(p,n).settingEl.scrollIntoView(),o==null||o.setValue("")}}),r=s))}),this.plugin.packManager.customPacknames.forEach(i=>this.addNewCustomIconEntry(i,n))}addNewCustomIconEntry(n,a){let i=new me.Setting(a).setName(n).setDesc(createFragment(r=>{r.appendText("Drag files in to import custom icons"),r.createEl("br"),r.appendText("Supported format: "),hn.forEach((o,s,p)=>{r.createEl("code",{text:o}),p.length-1!==s&&r.appendText(", ")})})).addButton(r=>r.setIcon("sheets-in-box").setTooltip("Backup icons").onClick(()=>this.plugin.packManager.backupIcons(n))).addButton(r=>r.setIcon("go-to-file").setTooltip("select files to import").onClick(()=>$(this,null,function*(){return this.plugin.packManager.addFromFiles(n,yield ui({multiple:!0,accept:hn}))}))).addButton(r=>r.setIcon("trash").setTooltip("delete").setWarning().onClick(()=>{this.plugin.packManager.filter((o,s)=>s.pack!==n),a.removeChild(i.settingEl)})).addButton(r=>r.setIcon("popup-open").setTooltip("manage icons").setCta().onClick(()=>new an(this.plugin,n).open())).then(r=>t1(r.settingEl,o=>$(this,null,function*(){if(!o.dataTransfer){new me.Notice("Failed to get dropped items");return}this.plugin.packManager.addFromFiles(n,o.dataTransfer.files)})));return this._setDisabledPack(n,i),i}},t1=(e,t)=>{let n="dragover";e.addEventListener("dragover",a=>{a.preventDefault(),a.currentTarget.addClass(n)}),e.addEventListener("drop",a=>{a.preventDefault(),a.currentTarget.removeClass(n),t(a)}),e.addEventListener("dragleave",a=>{a.preventDefault(),a.currentTarget.removeClass(n)})};var ep="IconSCAPIv0",Jn=class extends tp.Plugin{constructor(){super(...arguments);this.settings=Ql;this.packManager=new $t(this);this._nodeProcessor=si(this);this._mdProcessor=ci(this);this.shortcodePosField=Ns(this);this.api=cc(this.packManager,this);this.fileIconCache=new Vt(this)}postProcessor(n,a){if(typeof n=="string"&&a)return this._mdProcessor(n,a);if(n instanceof HTMLElement)return this._nodeProcessor(n);throw new TypeError("Invalid args given to postProcessor")}onload(){return $(this,null,function*(){console.log("loading Icon Shortcodes"),yield this.loadSettings(),yield jc(this),yield this.packManager.loadIcons(),(window[ep]=this.api)&&this.register(()=>window[ep]=void 0),this.registerEditorSuggest(new Mn(this)),Ic(this),rr(this),this.addSettingTab(new Xn(this.app,this))})}loadSettings(){return $(this,null,function*(){let n=yield this.loadData();n&&(n.iconpack&&delete n.iconpack,this.settings=et(Me(Me({},this.settings),n),{disabledPacks:n.disabledPacks?new Set(n.disabledPacks):this.settings.disabledPacks}))})}saveSettings(){return $(this,null,function*(){yield this.saveData(et(Me({},this.settings),{disabledPacks:[...this.settings.disabledPacks]}))})}}; +/*! + +JSZip v3.10.0 - A JavaScript class for generating and reading zip files + + +(c) 2009-2016 Stuart Knightley +Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown. + +JSZip uses the library pako released under the MIT license : +https://github.com/nodeca/pako/blob/main/LICENSE +*/ +/*! + Copyright (c) 2018 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames +*/ +/*! + * mime-db + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015-2022 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * mime-types + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL21pbWUtZGJAMS41Mi4wL25vZGVfbW9kdWxlcy9taW1lLWRiL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9wYXRoLWJyb3dzZXJpZnlAMS4wLjEvbm9kZV9tb2R1bGVzL3BhdGgtYnJvd3NlcmlmeS9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vbWltZS10eXBlc0AyLjEuMzUvbm9kZV9tb2R1bGVzL21pbWUtdHlwZXMvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2ZyZWVHbG9iYWwuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3Jvb3QuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1N5bWJvbC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fY29weUFycmF5LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRSYXdUYWcuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX29iamVjdFRvU3RyaW5nLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR2V0VGFnLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzT2JqZWN0LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzRnVuY3Rpb24uanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvcmVKc0RhdGEuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzTWFza2VkLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL190b1NvdXJjZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzTmF0aXZlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRWYWx1ZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0TmF0aXZlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19EYXRhVmlldy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fTWFwLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19Qcm9taXNlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19TZXQuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1dlYWtNYXAuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFRhZy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0xlbmd0aC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FycmF5TGlrZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FycmF5LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzT2JqZWN0TGlrZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1N0cmluZy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9faXRlcmF0b3JUb0FycmF5LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBUb0FycmF5LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19zZXRUb0FycmF5LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19hc2NpaVRvQXJyYXkuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc1VuaWNvZGUuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3VuaWNvZGVUb0FycmF5LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19zdHJpbmdUb0FycmF5LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheU1hcC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVZhbHVlcy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVRpbWVzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNBcmd1bWVudHMuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNBcmd1bWVudHMuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvc3R1YkZhbHNlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQnVmZmVyLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNUeXBlZEFycmF5LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVW5hcnkuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX25vZGVVdGlsLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzVHlwZWRBcnJheS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlMaWtlS2V5cy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNQcm90b3R5cGUuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX292ZXJBcmcuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX25hdGl2ZUtleXMuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VLZXlzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2tleXMuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvdmFsdWVzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL3RvQXJyYXkuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2dpdGh1Yi5jb20rcmh5c2Qrbm9kZS1lbW9qaUA0MTQwOGNiNTg1NzU5MGI2ZTk0MmQ0MDE1ODE0ZjI2YWQyN2JlOTY0L25vZGVfbW9kdWxlcy9ub2RlLWVtb2ppL2xpYi9lbW9qaS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vZ2l0aHViLmNvbStyaHlzZCtub2RlLWVtb2ppQDQxNDA4Y2I1ODU3NTkwYjZlOTQyZDQwMTU4MTRmMjZhZDI3YmU5NjQvbm9kZV9tb2R1bGVzL25vZGUtZW1vamkvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NsYXNzbmFtZXNAMi4zLjEvbm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Fzc2VydC1uZXZlckAxLjIuMS9ub2RlX21vZHVsZXMvYXNzZXJ0LW5ldmVyL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9qc3ppcEAzLjEwLjAvbm9kZV9tb2R1bGVzL2pzemlwL2Rpc3QvanN6aXAubWluLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9taW5pLXN2Zy1kYXRhLXVyaUAxLjQuNC9ub2RlX21vZHVsZXMvbWluaS1zdmctZGF0YS11cmkvc2hvcnRlci1jc3MtY29sb3ItbmFtZXMuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL21pbmktc3ZnLWRhdGEtdXJpQDEuNC40L25vZGVfbW9kdWxlcy9taW5pLXN2Zy1kYXRhLXVyaS9pbmRleC5qcyIsICIuLi9zcmMvaXNjLW1haW4udHMiLCAiLi4vc3JjL2ljb24taW4tZWRpdG9yL3ZpZXctcGx1Z2luLnRzIiwgIi4uL3NyYy9pY29uLWluLWVkaXRvci9kZWNvLnRzIiwgIi4uL3NyYy9pY29uLWluLWVkaXRvci93aWRnZXQudHMiLCAiLi4vc3JjL2ljb24taW4tZWRpdG9yL2dldC1tZW51LnRzIiwgIi4uL3NyYy9pY29uLWluLWVkaXRvci9pbmRleC50cyIsICIuLi9zcmMvaWNvbi1pbi1lZGl0b3Ivc3RhdGUudHMiLCAiLi4vc3JjL2ljb24tcGFja3MvdXRpbHMudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2lzLXJlZ2V4cEAzLjEuMC9ub2RlX21vZHVsZXMvaXMtcmVnZXhwL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9jbG9uZS1yZWdleHBAMy4wLjAvbm9kZV9tb2R1bGVzL2Nsb25lLXJlZ2V4cC9pbmRleC5qcyIsICIuLi9zcmMvbW9kdWxlcy91bmlvbi50cyIsICIuLi9zcmMvaWNvbi1wYWNrcy9pY29uLWNhY2hlLnRzIiwgIi4uL3NyYy9pY29uLXBhY2tzL3BhY2stbWFuYWdlci50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vZnVzZS5qc0A2LjYuMi9ub2RlX21vZHVsZXMvZnVzZS5qcy9kaXN0L2Z1c2UuZXNtLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9jb21wYXJlLXZlcnNpb25zQDQuMS4zL25vZGVfbW9kdWxlcy9jb21wYXJlLXZlcnNpb25zL2luZGV4Lm1qcyIsICIuLi9zcmMvdHlwaW5ncy9hcGkudHMiLCAiLi4vc3JjL21vZHVsZXMvc3VnZ2VzdGVyLnRzIiwgIi4uL3NyYy9pY29uLXBhY2tzL2J1aWx0LWlucy50cyIsICIuLi9zcmMvaWNvbi1wYWNrcy9lbW9qaS50cyIsICIuLi9zcmMvaWNvbi1wYWNrcy9maWxlLWljb24udHMiLCAiLi4vc3JjL2ljb24tcGFja3MvdHlwZXMudHMiLCAiLi4vc3JjL21vZHVsZXMvanNvbi10by1zdmcudHMiLCAiLi4vc3JjL21vZHVsZXMvZGlhbG9nLnRzIiwgIi4uL3NyYy9wb3N0LXBzL2NhbGxvdXQtaWNvbi50cyIsICIuLi9zcmMvcG9zdC1wcy90ZXh0LnRzIiwgIi4uL3NyYy9wb3N0LXBzL2luZGV4LnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9maWxlLXNlbGVjdC1kaWFsb2dAMS41LjQvbm9kZV9tb2R1bGVzL2ZpbGUtc2VsZWN0LWRpYWxvZy9zcmMvZXJyb3IudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2ZpbGUtc2VsZWN0LWRpYWxvZ0AxLjUuNC9ub2RlX21vZHVsZXMvZmlsZS1zZWxlY3QtZGlhbG9nL3NyYy91dGlsLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9maWxlLXNlbGVjdC1kaWFsb2dAMS41LjQvbm9kZV9tb2R1bGVzL2ZpbGUtc2VsZWN0LWRpYWxvZy9zcmMvZmlsZS1kaWFsb2cudHMiLCAiLi4vc3JjL3NldHRpbmdzLnRzIiwgIi4uL3NyYy9jb21wb25lbnQvYnJvd3Nlci1wYWNrcy50c3giLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3ByZWFjdEAxMC44LjAvbm9kZV9tb2R1bGVzL3ByZWFjdC9zcmMvY29uc3RhbnRzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcmVhY3RAMTAuOC4wL25vZGVfbW9kdWxlcy9wcmVhY3Qvc3JjL3V0aWwuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3ByZWFjdEAxMC44LjAvbm9kZV9tb2R1bGVzL3ByZWFjdC9zcmMvb3B0aW9ucy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vcHJlYWN0QDEwLjguMC9ub2RlX21vZHVsZXMvcHJlYWN0L3NyYy9jcmVhdGUtZWxlbWVudC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vcHJlYWN0QDEwLjguMC9ub2RlX21vZHVsZXMvcHJlYWN0L3NyYy9jb21wb25lbnQuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3ByZWFjdEAxMC44LjAvbm9kZV9tb2R1bGVzL3ByZWFjdC9zcmMvY3JlYXRlLWNvbnRleHQuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3ByZWFjdEAxMC44LjAvbm9kZV9tb2R1bGVzL3ByZWFjdC9zcmMvZGlmZi9jaGlsZHJlbi5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vcHJlYWN0QDEwLjguMC9ub2RlX21vZHVsZXMvcHJlYWN0L3NyYy9kaWZmL3Byb3BzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcmVhY3RAMTAuOC4wL25vZGVfbW9kdWxlcy9wcmVhY3Qvc3JjL2RpZmYvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3ByZWFjdEAxMC44LjAvbm9kZV9tb2R1bGVzL3ByZWFjdC9zcmMvcmVuZGVyLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcmVhY3RAMTAuOC4wL25vZGVfbW9kdWxlcy9wcmVhY3Qvc3JjL2Nsb25lLWVsZW1lbnQuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3ByZWFjdEAxMC44LjAvbm9kZV9tb2R1bGVzL3ByZWFjdC9zcmMvZGlmZi9jYXRjaC1lcnJvci5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vcHJlYWN0QDEwLjguMC9ub2RlX21vZHVsZXMvcHJlYWN0L2hvb2tzL3NyYy9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vcHJlYWN0QDEwLjguMC9ub2RlX21vZHVsZXMvcHJlYWN0L2NvbXBhdC9zcmMvdXRpbC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vcHJlYWN0QDEwLjguMC9ub2RlX21vZHVsZXMvcHJlYWN0L2NvbXBhdC9zcmMvUHVyZUNvbXBvbmVudC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vcHJlYWN0QDEwLjguMC9ub2RlX21vZHVsZXMvcHJlYWN0L2NvbXBhdC9zcmMvbWVtby5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vcHJlYWN0QDEwLjguMC9ub2RlX21vZHVsZXMvcHJlYWN0L2NvbXBhdC9zcmMvZm9yd2FyZFJlZi5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vcHJlYWN0QDEwLjguMC9ub2RlX21vZHVsZXMvcHJlYWN0L2NvbXBhdC9zcmMvQ2hpbGRyZW4uanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3ByZWFjdEAxMC44LjAvbm9kZV9tb2R1bGVzL3ByZWFjdC9jb21wYXQvc3JjL3N1c3BlbnNlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcmVhY3RAMTAuOC4wL25vZGVfbW9kdWxlcy9wcmVhY3QvY29tcGF0L3NyYy9zdXNwZW5zZS1saXN0LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcmVhY3RAMTAuOC4wL25vZGVfbW9kdWxlcy9wcmVhY3QvY29tcGF0L3NyYy9wb3J0YWxzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcmVhY3RAMTAuOC4wL25vZGVfbW9kdWxlcy9wcmVhY3QvY29tcGF0L3NyYy9yZW5kZXIuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3ByZWFjdEAxMC44LjAvbm9kZV9tb2R1bGVzL3ByZWFjdC9jb21wYXQvc3JjL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9yZWFjdC1pY29uc0A0LjQuMF9AcHJlYWN0K2NvbXBhdEAxNy4xLjEvbm9kZV9tb2R1bGVzL3JlYWN0LWljb25zL2xpYi9lc20vaWNvbkNvbnRleHQuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3JlYWN0LWljb25zQDQuNC4wX0BwcmVhY3QrY29tcGF0QDE3LjEuMS9ub2RlX21vZHVsZXMvcmVhY3QtaWNvbnMvbGliL2VzbS9pY29uQmFzZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vcmVhY3QtaWNvbnNANC40LjBfQHByZWFjdCtjb21wYXRAMTcuMS4xL25vZGVfbW9kdWxlcy9yZWFjdC1pY29ucy9maS9pbmRleC5lc20uanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2pzLWJhc2U2NEAzLjcuMi9ub2RlX21vZHVsZXMvanMtYmFzZTY0L2Jhc2U2NC5tanMiLCAiLi4vc3JjL21vZHVsZXMvaWNvbi1wYWNrcy50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vcmVhY3QtbG9hZGluZ0AyLjAuM19AcHJlYWN0K2NvbXBhdEAxNy4xLjEvbm9kZV9tb2R1bGVzL3JlYWN0LWxvYWRpbmcvbGliL3N2Zy9pbmRleC5qcyIsICIuLi9zcmMvY29tcG9uZW50L2xvYWRpbmcudHN4IiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9pbW1lckA5LjAuMTUvbm9kZV9tb2R1bGVzL2ltbWVyL3NyYy91dGlscy9lcnJvcnMudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2ltbWVyQDkuMC4xNS9ub2RlX21vZHVsZXMvaW1tZXIvc3JjL3V0aWxzL2NvbW1vbi50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vaW1tZXJAOS4wLjE1L25vZGVfbW9kdWxlcy9pbW1lci9zcmMvdXRpbHMvcGx1Z2lucy50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vaW1tZXJAOS4wLjE1L25vZGVfbW9kdWxlcy9pbW1lci9zcmMvY29yZS9zY29wZS50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vaW1tZXJAOS4wLjE1L25vZGVfbW9kdWxlcy9pbW1lci9zcmMvY29yZS9maW5hbGl6ZS50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vaW1tZXJAOS4wLjE1L25vZGVfbW9kdWxlcy9pbW1lci9zcmMvY29yZS9wcm94eS50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vaW1tZXJAOS4wLjE1L25vZGVfbW9kdWxlcy9pbW1lci9zcmMvY29yZS9pbW1lckNsYXNzLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9pbW1lckA5LjAuMTUvbm9kZV9tb2R1bGVzL2ltbWVyL3NyYy9jb3JlL2N1cnJlbnQudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2ltbWVyQDkuMC4xNS9ub2RlX21vZHVsZXMvaW1tZXIvc3JjL3BsdWdpbnMvZXM1LnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9pbW1lckA5LjAuMTUvbm9kZV9tb2R1bGVzL2ltbWVyL3NyYy9wbHVnaW5zL3BhdGNoZXMudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2ltbWVyQDkuMC4xNS9ub2RlX21vZHVsZXMvaW1tZXIvc3JjL3BsdWdpbnMvbWFwc2V0LnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9pbW1lckA5LjAuMTUvbm9kZV9tb2R1bGVzL2ltbWVyL3NyYy9wbHVnaW5zL2FsbC50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vaW1tZXJAOS4wLjE1L25vZGVfbW9kdWxlcy9pbW1lci9zcmMvaW1tZXIudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2ltbWVyQDkuMC4xNS9ub2RlX21vZHVsZXMvaW1tZXIvc3JjL3V0aWxzL2Vudi50cyIsICIuLi9zcmMvY29tcG9uZW50L2ljb24tbWFuYWdlci50c3giLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VzZS1pbW1lckAwLjYuMF9rb3Y1d3R1bGY1Zzc1Z2x2N3QydWR2c256ZS9ub2RlX21vZHVsZXMvdXNlLWltbWVyL3NyYy9pbmRleC50cyIsICIuLi9zcmMvY29tcG9uZW50L2ljb24tcHJldmlldy50c3giXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qIVxuICogbWltZS1kYlxuICogQ29weXJpZ2h0KGMpIDIwMTQgSm9uYXRoYW4gT25nXG4gKiBDb3B5cmlnaHQoYykgMjAxNS0yMDIyIERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9kYi5qc29uJylcbiIsICIvLyAncGF0aCcgbW9kdWxlIGV4dHJhY3RlZCBmcm9tIE5vZGUuanMgdjguMTEuMSAob25seSB0aGUgcG9zaXggcGFydClcbi8vIHRyYW5zcGxpdGVkIHdpdGggQmFiZWxcblxuLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gYXNzZXJ0UGF0aChwYXRoKSB7XG4gIGlmICh0eXBlb2YgcGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQYXRoIG11c3QgYmUgYSBzdHJpbmcuIFJlY2VpdmVkICcgKyBKU09OLnN0cmluZ2lmeShwYXRoKSk7XG4gIH1cbn1cblxuLy8gUmVzb2x2ZXMgLiBhbmQgLi4gZWxlbWVudHMgaW4gYSBwYXRoIHdpdGggZGlyZWN0b3J5IG5hbWVzXG5mdW5jdGlvbiBub3JtYWxpemVTdHJpbmdQb3NpeChwYXRoLCBhbGxvd0Fib3ZlUm9vdCkge1xuICB2YXIgcmVzID0gJyc7XG4gIHZhciBsYXN0U2VnbWVudExlbmd0aCA9IDA7XG4gIHZhciBsYXN0U2xhc2ggPSAtMTtcbiAgdmFyIGRvdHMgPSAwO1xuICB2YXIgY29kZTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPD0gcGF0aC5sZW5ndGg7ICsraSkge1xuICAgIGlmIChpIDwgcGF0aC5sZW5ndGgpXG4gICAgICBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KGkpO1xuICAgIGVsc2UgaWYgKGNvZGUgPT09IDQ3IC8qLyovKVxuICAgICAgYnJlYWs7XG4gICAgZWxzZVxuICAgICAgY29kZSA9IDQ3IC8qLyovO1xuICAgIGlmIChjb2RlID09PSA0NyAvKi8qLykge1xuICAgICAgaWYgKGxhc3RTbGFzaCA9PT0gaSAtIDEgfHwgZG90cyA9PT0gMSkge1xuICAgICAgICAvLyBOT09QXG4gICAgICB9IGVsc2UgaWYgKGxhc3RTbGFzaCAhPT0gaSAtIDEgJiYgZG90cyA9PT0gMikge1xuICAgICAgICBpZiAocmVzLmxlbmd0aCA8IDIgfHwgbGFzdFNlZ21lbnRMZW5ndGggIT09IDIgfHwgcmVzLmNoYXJDb2RlQXQocmVzLmxlbmd0aCAtIDEpICE9PSA0NiAvKi4qLyB8fCByZXMuY2hhckNvZGVBdChyZXMubGVuZ3RoIC0gMikgIT09IDQ2IC8qLiovKSB7XG4gICAgICAgICAgaWYgKHJlcy5sZW5ndGggPiAyKSB7XG4gICAgICAgICAgICB2YXIgbGFzdFNsYXNoSW5kZXggPSByZXMubGFzdEluZGV4T2YoJy8nKTtcbiAgICAgICAgICAgIGlmIChsYXN0U2xhc2hJbmRleCAhPT0gcmVzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgaWYgKGxhc3RTbGFzaEluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIHJlcyA9ICcnO1xuICAgICAgICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gMDtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXMgPSByZXMuc2xpY2UoMCwgbGFzdFNsYXNoSW5kZXgpO1xuICAgICAgICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gcmVzLmxlbmd0aCAtIDEgLSByZXMubGFzdEluZGV4T2YoJy8nKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBsYXN0U2xhc2ggPSBpO1xuICAgICAgICAgICAgICBkb3RzID0gMDtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChyZXMubGVuZ3RoID09PSAyIHx8IHJlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHJlcyA9ICcnO1xuICAgICAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSAwO1xuICAgICAgICAgICAgbGFzdFNsYXNoID0gaTtcbiAgICAgICAgICAgIGRvdHMgPSAwO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChhbGxvd0Fib3ZlUm9vdCkge1xuICAgICAgICAgIGlmIChyZXMubGVuZ3RoID4gMClcbiAgICAgICAgICAgIHJlcyArPSAnLy4uJztcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXMgPSAnLi4nO1xuICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gMjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHJlcy5sZW5ndGggPiAwKVxuICAgICAgICAgIHJlcyArPSAnLycgKyBwYXRoLnNsaWNlKGxhc3RTbGFzaCArIDEsIGkpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgcmVzID0gcGF0aC5zbGljZShsYXN0U2xhc2ggKyAxLCBpKTtcbiAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSBpIC0gbGFzdFNsYXNoIC0gMTtcbiAgICAgIH1cbiAgICAgIGxhc3RTbGFzaCA9IGk7XG4gICAgICBkb3RzID0gMDtcbiAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDQ2IC8qLiovICYmIGRvdHMgIT09IC0xKSB7XG4gICAgICArK2RvdHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvdHMgPSAtMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gX2Zvcm1hdChzZXAsIHBhdGhPYmplY3QpIHtcbiAgdmFyIGRpciA9IHBhdGhPYmplY3QuZGlyIHx8IHBhdGhPYmplY3Qucm9vdDtcbiAgdmFyIGJhc2UgPSBwYXRoT2JqZWN0LmJhc2UgfHwgKHBhdGhPYmplY3QubmFtZSB8fCAnJykgKyAocGF0aE9iamVjdC5leHQgfHwgJycpO1xuICBpZiAoIWRpcikge1xuICAgIHJldHVybiBiYXNlO1xuICB9XG4gIGlmIChkaXIgPT09IHBhdGhPYmplY3Qucm9vdCkge1xuICAgIHJldHVybiBkaXIgKyBiYXNlO1xuICB9XG4gIHJldHVybiBkaXIgKyBzZXAgKyBiYXNlO1xufVxuXG52YXIgcG9zaXggPSB7XG4gIC8vIHBhdGgucmVzb2x2ZShbZnJvbSAuLi5dLCB0bylcbiAgcmVzb2x2ZTogZnVuY3Rpb24gcmVzb2x2ZSgpIHtcbiAgICB2YXIgcmVzb2x2ZWRQYXRoID0gJyc7XG4gICAgdmFyIHJlc29sdmVkQWJzb2x1dGUgPSBmYWxzZTtcbiAgICB2YXIgY3dkO1xuXG4gICAgZm9yICh2YXIgaSA9IGFyZ3VtZW50cy5sZW5ndGggLSAxOyBpID49IC0xICYmICFyZXNvbHZlZEFic29sdXRlOyBpLS0pIHtcbiAgICAgIHZhciBwYXRoO1xuICAgICAgaWYgKGkgPj0gMClcbiAgICAgICAgcGF0aCA9IGFyZ3VtZW50c1tpXTtcbiAgICAgIGVsc2Uge1xuICAgICAgICBpZiAoY3dkID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgY3dkID0gcHJvY2Vzcy5jd2QoKTtcbiAgICAgICAgcGF0aCA9IGN3ZDtcbiAgICAgIH1cblxuICAgICAgYXNzZXJ0UGF0aChwYXRoKTtcblxuICAgICAgLy8gU2tpcCBlbXB0eSBlbnRyaWVzXG4gICAgICBpZiAocGF0aC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHJlc29sdmVkUGF0aCA9IHBhdGggKyAnLycgKyByZXNvbHZlZFBhdGg7XG4gICAgICByZXNvbHZlZEFic29sdXRlID0gcGF0aC5jaGFyQ29kZUF0KDApID09PSA0NyAvKi8qLztcbiAgICB9XG5cbiAgICAvLyBBdCB0aGlzIHBvaW50IHRoZSBwYXRoIHNob3VsZCBiZSByZXNvbHZlZCB0byBhIGZ1bGwgYWJzb2x1dGUgcGF0aCwgYnV0XG4gICAgLy8gaGFuZGxlIHJlbGF0aXZlIHBhdGhzIHRvIGJlIHNhZmUgKG1pZ2h0IGhhcHBlbiB3aGVuIHByb2Nlc3MuY3dkKCkgZmFpbHMpXG5cbiAgICAvLyBOb3JtYWxpemUgdGhlIHBhdGhcbiAgICByZXNvbHZlZFBhdGggPSBub3JtYWxpemVTdHJpbmdQb3NpeChyZXNvbHZlZFBhdGgsICFyZXNvbHZlZEFic29sdXRlKTtcblxuICAgIGlmIChyZXNvbHZlZEFic29sdXRlKSB7XG4gICAgICBpZiAocmVzb2x2ZWRQYXRoLmxlbmd0aCA+IDApXG4gICAgICAgIHJldHVybiAnLycgKyByZXNvbHZlZFBhdGg7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiAnLyc7XG4gICAgfSBlbHNlIGlmIChyZXNvbHZlZFBhdGgubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHJlc29sdmVkUGF0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcuJztcbiAgICB9XG4gIH0sXG5cbiAgbm9ybWFsaXplOiBmdW5jdGlvbiBub3JtYWxpemUocGF0aCkge1xuICAgIGFzc2VydFBhdGgocGF0aCk7XG5cbiAgICBpZiAocGF0aC5sZW5ndGggPT09IDApIHJldHVybiAnLic7XG5cbiAgICB2YXIgaXNBYnNvbHV0ZSA9IHBhdGguY2hhckNvZGVBdCgwKSA9PT0gNDcgLyovKi87XG4gICAgdmFyIHRyYWlsaW5nU2VwYXJhdG9yID0gcGF0aC5jaGFyQ29kZUF0KHBhdGgubGVuZ3RoIC0gMSkgPT09IDQ3IC8qLyovO1xuXG4gICAgLy8gTm9ybWFsaXplIHRoZSBwYXRoXG4gICAgcGF0aCA9IG5vcm1hbGl6ZVN0cmluZ1Bvc2l4KHBhdGgsICFpc0Fic29sdXRlKTtcblxuICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gMCAmJiAhaXNBYnNvbHV0ZSkgcGF0aCA9ICcuJztcbiAgICBpZiAocGF0aC5sZW5ndGggPiAwICYmIHRyYWlsaW5nU2VwYXJhdG9yKSBwYXRoICs9ICcvJztcblxuICAgIGlmIChpc0Fic29sdXRlKSByZXR1cm4gJy8nICsgcGF0aDtcbiAgICByZXR1cm4gcGF0aDtcbiAgfSxcblxuICBpc0Fic29sdXRlOiBmdW5jdGlvbiBpc0Fic29sdXRlKHBhdGgpIHtcbiAgICBhc3NlcnRQYXRoKHBhdGgpO1xuICAgIHJldHVybiBwYXRoLmxlbmd0aCA+IDAgJiYgcGF0aC5jaGFyQ29kZUF0KDApID09PSA0NyAvKi8qLztcbiAgfSxcblxuICBqb2luOiBmdW5jdGlvbiBqb2luKCkge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKVxuICAgICAgcmV0dXJuICcuJztcbiAgICB2YXIgam9pbmVkO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIgYXJnID0gYXJndW1lbnRzW2ldO1xuICAgICAgYXNzZXJ0UGF0aChhcmcpO1xuICAgICAgaWYgKGFyZy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmIChqb2luZWQgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICBqb2luZWQgPSBhcmc7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBqb2luZWQgKz0gJy8nICsgYXJnO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoam9pbmVkID09PSB1bmRlZmluZWQpXG4gICAgICByZXR1cm4gJy4nO1xuICAgIHJldHVybiBwb3NpeC5ub3JtYWxpemUoam9pbmVkKTtcbiAgfSxcblxuICByZWxhdGl2ZTogZnVuY3Rpb24gcmVsYXRpdmUoZnJvbSwgdG8pIHtcbiAgICBhc3NlcnRQYXRoKGZyb20pO1xuICAgIGFzc2VydFBhdGgodG8pO1xuXG4gICAgaWYgKGZyb20gPT09IHRvKSByZXR1cm4gJyc7XG5cbiAgICBmcm9tID0gcG9zaXgucmVzb2x2ZShmcm9tKTtcbiAgICB0byA9IHBvc2l4LnJlc29sdmUodG8pO1xuXG4gICAgaWYgKGZyb20gPT09IHRvKSByZXR1cm4gJyc7XG5cbiAgICAvLyBUcmltIGFueSBsZWFkaW5nIGJhY2tzbGFzaGVzXG4gICAgdmFyIGZyb21TdGFydCA9IDE7XG4gICAgZm9yICg7IGZyb21TdGFydCA8IGZyb20ubGVuZ3RoOyArK2Zyb21TdGFydCkge1xuICAgICAgaWYgKGZyb20uY2hhckNvZGVBdChmcm9tU3RhcnQpICE9PSA0NyAvKi8qLylcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHZhciBmcm9tRW5kID0gZnJvbS5sZW5ndGg7XG4gICAgdmFyIGZyb21MZW4gPSBmcm9tRW5kIC0gZnJvbVN0YXJ0O1xuXG4gICAgLy8gVHJpbSBhbnkgbGVhZGluZyBiYWNrc2xhc2hlc1xuICAgIHZhciB0b1N0YXJ0ID0gMTtcbiAgICBmb3IgKDsgdG9TdGFydCA8IHRvLmxlbmd0aDsgKyt0b1N0YXJ0KSB7XG4gICAgICBpZiAodG8uY2hhckNvZGVBdCh0b1N0YXJ0KSAhPT0gNDcgLyovKi8pXG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB2YXIgdG9FbmQgPSB0by5sZW5ndGg7XG4gICAgdmFyIHRvTGVuID0gdG9FbmQgLSB0b1N0YXJ0O1xuXG4gICAgLy8gQ29tcGFyZSBwYXRocyB0byBmaW5kIHRoZSBsb25nZXN0IGNvbW1vbiBwYXRoIGZyb20gcm9vdFxuICAgIHZhciBsZW5ndGggPSBmcm9tTGVuIDwgdG9MZW4gPyBmcm9tTGVuIDogdG9MZW47XG4gICAgdmFyIGxhc3RDb21tb25TZXAgPSAtMTtcbiAgICB2YXIgaSA9IDA7XG4gICAgZm9yICg7IGkgPD0gbGVuZ3RoOyArK2kpIHtcbiAgICAgIGlmIChpID09PSBsZW5ndGgpIHtcbiAgICAgICAgaWYgKHRvTGVuID4gbGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKHRvLmNoYXJDb2RlQXQodG9TdGFydCArIGkpID09PSA0NyAvKi8qLykge1xuICAgICAgICAgICAgLy8gV2UgZ2V0IGhlcmUgaWYgYGZyb21gIGlzIHRoZSBleGFjdCBiYXNlIHBhdGggZm9yIGB0b2AuXG4gICAgICAgICAgICAvLyBGb3IgZXhhbXBsZTogZnJvbT0nL2Zvby9iYXInOyB0bz0nL2Zvby9iYXIvYmF6J1xuICAgICAgICAgICAgcmV0dXJuIHRvLnNsaWNlKHRvU3RhcnQgKyBpICsgMSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgICAvLyBXZSBnZXQgaGVyZSBpZiBgZnJvbWAgaXMgdGhlIHJvb3RcbiAgICAgICAgICAgIC8vIEZvciBleGFtcGxlOiBmcm9tPScvJzsgdG89Jy9mb28nXG4gICAgICAgICAgICByZXR1cm4gdG8uc2xpY2UodG9TdGFydCArIGkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChmcm9tTGVuID4gbGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKGZyb20uY2hhckNvZGVBdChmcm9tU3RhcnQgKyBpKSA9PT0gNDcgLyovKi8pIHtcbiAgICAgICAgICAgIC8vIFdlIGdldCBoZXJlIGlmIGB0b2AgaXMgdGhlIGV4YWN0IGJhc2UgcGF0aCBmb3IgYGZyb21gLlxuICAgICAgICAgICAgLy8gRm9yIGV4YW1wbGU6IGZyb209Jy9mb28vYmFyL2Jheic7IHRvPScvZm9vL2JhcidcbiAgICAgICAgICAgIGxhc3RDb21tb25TZXAgPSBpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgLy8gV2UgZ2V0IGhlcmUgaWYgYHRvYCBpcyB0aGUgcm9vdC5cbiAgICAgICAgICAgIC8vIEZvciBleGFtcGxlOiBmcm9tPScvZm9vJzsgdG89Jy8nXG4gICAgICAgICAgICBsYXN0Q29tbW9uU2VwID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB2YXIgZnJvbUNvZGUgPSBmcm9tLmNoYXJDb2RlQXQoZnJvbVN0YXJ0ICsgaSk7XG4gICAgICB2YXIgdG9Db2RlID0gdG8uY2hhckNvZGVBdCh0b1N0YXJ0ICsgaSk7XG4gICAgICBpZiAoZnJvbUNvZGUgIT09IHRvQ29kZSlcbiAgICAgICAgYnJlYWs7XG4gICAgICBlbHNlIGlmIChmcm9tQ29kZSA9PT0gNDcgLyovKi8pXG4gICAgICAgIGxhc3RDb21tb25TZXAgPSBpO1xuICAgIH1cblxuICAgIHZhciBvdXQgPSAnJztcbiAgICAvLyBHZW5lcmF0ZSB0aGUgcmVsYXRpdmUgcGF0aCBiYXNlZCBvbiB0aGUgcGF0aCBkaWZmZXJlbmNlIGJldHdlZW4gYHRvYFxuICAgIC8vIGFuZCBgZnJvbWBcbiAgICBmb3IgKGkgPSBmcm9tU3RhcnQgKyBsYXN0Q29tbW9uU2VwICsgMTsgaSA8PSBmcm9tRW5kOyArK2kpIHtcbiAgICAgIGlmIChpID09PSBmcm9tRW5kIHx8IGZyb20uY2hhckNvZGVBdChpKSA9PT0gNDcgLyovKi8pIHtcbiAgICAgICAgaWYgKG91dC5sZW5ndGggPT09IDApXG4gICAgICAgICAgb3V0ICs9ICcuLic7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBvdXQgKz0gJy8uLic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTGFzdGx5LCBhcHBlbmQgdGhlIHJlc3Qgb2YgdGhlIGRlc3RpbmF0aW9uIChgdG9gKSBwYXRoIHRoYXQgY29tZXMgYWZ0ZXJcbiAgICAvLyB0aGUgY29tbW9uIHBhdGggcGFydHNcbiAgICBpZiAob3V0Lmxlbmd0aCA+IDApXG4gICAgICByZXR1cm4gb3V0ICsgdG8uc2xpY2UodG9TdGFydCArIGxhc3RDb21tb25TZXApO1xuICAgIGVsc2Uge1xuICAgICAgdG9TdGFydCArPSBsYXN0Q29tbW9uU2VwO1xuICAgICAgaWYgKHRvLmNoYXJDb2RlQXQodG9TdGFydCkgPT09IDQ3IC8qLyovKVxuICAgICAgICArK3RvU3RhcnQ7XG4gICAgICByZXR1cm4gdG8uc2xpY2UodG9TdGFydCk7XG4gICAgfVxuICB9LFxuXG4gIF9tYWtlTG9uZzogZnVuY3Rpb24gX21ha2VMb25nKHBhdGgpIHtcbiAgICByZXR1cm4gcGF0aDtcbiAgfSxcblxuICBkaXJuYW1lOiBmdW5jdGlvbiBkaXJuYW1lKHBhdGgpIHtcbiAgICBhc3NlcnRQYXRoKHBhdGgpO1xuICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcuJztcbiAgICB2YXIgY29kZSA9IHBhdGguY2hhckNvZGVBdCgwKTtcbiAgICB2YXIgaGFzUm9vdCA9IGNvZGUgPT09IDQ3IC8qLyovO1xuICAgIHZhciBlbmQgPSAtMTtcbiAgICB2YXIgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgICBmb3IgKHZhciBpID0gcGF0aC5sZW5ndGggLSAxOyBpID49IDE7IC0taSkge1xuICAgICAgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICAgIGlmIChjb2RlID09PSA0NyAvKi8qLykge1xuICAgICAgICAgIGlmICghbWF0Y2hlZFNsYXNoKSB7XG4gICAgICAgICAgICBlbmQgPSBpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvclxuICAgICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZW5kID09PSAtMSkgcmV0dXJuIGhhc1Jvb3QgPyAnLycgOiAnLic7XG4gICAgaWYgKGhhc1Jvb3QgJiYgZW5kID09PSAxKSByZXR1cm4gJy8vJztcbiAgICByZXR1cm4gcGF0aC5zbGljZSgwLCBlbmQpO1xuICB9LFxuXG4gIGJhc2VuYW1lOiBmdW5jdGlvbiBiYXNlbmFtZShwYXRoLCBleHQpIHtcbiAgICBpZiAoZXh0ICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGV4dCAhPT0gJ3N0cmluZycpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiZXh0XCIgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZycpO1xuICAgIGFzc2VydFBhdGgocGF0aCk7XG5cbiAgICB2YXIgc3RhcnQgPSAwO1xuICAgIHZhciBlbmQgPSAtMTtcbiAgICB2YXIgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgICB2YXIgaTtcblxuICAgIGlmIChleHQgIT09IHVuZGVmaW5lZCAmJiBleHQubGVuZ3RoID4gMCAmJiBleHQubGVuZ3RoIDw9IHBhdGgubGVuZ3RoKSB7XG4gICAgICBpZiAoZXh0Lmxlbmd0aCA9PT0gcGF0aC5sZW5ndGggJiYgZXh0ID09PSBwYXRoKSByZXR1cm4gJyc7XG4gICAgICB2YXIgZXh0SWR4ID0gZXh0Lmxlbmd0aCAtIDE7XG4gICAgICB2YXIgZmlyc3ROb25TbGFzaEVuZCA9IC0xO1xuICAgICAgZm9yIChpID0gcGF0aC5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICAgICAgaWYgKGNvZGUgPT09IDQ3IC8qLyovKSB7XG4gICAgICAgICAgICAvLyBJZiB3ZSByZWFjaGVkIGEgcGF0aCBzZXBhcmF0b3IgdGhhdCB3YXMgbm90IHBhcnQgb2YgYSBzZXQgb2YgcGF0aFxuICAgICAgICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93XG4gICAgICAgICAgICBpZiAoIW1hdGNoZWRTbGFzaCkge1xuICAgICAgICAgICAgICBzdGFydCA9IGkgKyAxO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChmaXJzdE5vblNsYXNoRW5kID09PSAtMSkge1xuICAgICAgICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3IsIHJlbWVtYmVyIHRoaXMgaW5kZXggaW4gY2FzZVxuICAgICAgICAgICAgLy8gd2UgbmVlZCBpdCBpZiB0aGUgZXh0ZW5zaW9uIGVuZHMgdXAgbm90IG1hdGNoaW5nXG4gICAgICAgICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgICAgICAgIGZpcnN0Tm9uU2xhc2hFbmQgPSBpICsgMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGV4dElkeCA+PSAwKSB7XG4gICAgICAgICAgICAvLyBUcnkgdG8gbWF0Y2ggdGhlIGV4cGxpY2l0IGV4dGVuc2lvblxuICAgICAgICAgICAgaWYgKGNvZGUgPT09IGV4dC5jaGFyQ29kZUF0KGV4dElkeCkpIHtcbiAgICAgICAgICAgICAgaWYgKC0tZXh0SWR4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIC8vIFdlIG1hdGNoZWQgdGhlIGV4dGVuc2lvbiwgc28gbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyIHBhdGhcbiAgICAgICAgICAgICAgICAvLyBjb21wb25lbnRcbiAgICAgICAgICAgICAgICBlbmQgPSBpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBFeHRlbnNpb24gZG9lcyBub3QgbWF0Y2gsIHNvIG91ciByZXN1bHQgaXMgdGhlIGVudGlyZSBwYXRoXG4gICAgICAgICAgICAgIC8vIGNvbXBvbmVudFxuICAgICAgICAgICAgICBleHRJZHggPSAtMTtcbiAgICAgICAgICAgICAgZW5kID0gZmlyc3ROb25TbGFzaEVuZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXJ0ID09PSBlbmQpIGVuZCA9IGZpcnN0Tm9uU2xhc2hFbmQ7ZWxzZSBpZiAoZW5kID09PSAtMSkgZW5kID0gcGF0aC5sZW5ndGg7XG4gICAgICByZXR1cm4gcGF0aC5zbGljZShzdGFydCwgZW5kKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChpID0gcGF0aC5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICBpZiAocGF0aC5jaGFyQ29kZUF0KGkpID09PSA0NyAvKi8qLykge1xuICAgICAgICAgICAgLy8gSWYgd2UgcmVhY2hlZCBhIHBhdGggc2VwYXJhdG9yIHRoYXQgd2FzIG5vdCBwYXJ0IG9mIGEgc2V0IG9mIHBhdGhcbiAgICAgICAgICAgIC8vIHNlcGFyYXRvcnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCBzdG9wIG5vd1xuICAgICAgICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgICAgICAgc3RhcnQgPSBpICsgMTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChlbmQgPT09IC0xKSB7XG4gICAgICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3IsIG1hcmsgdGhpcyBhcyB0aGUgZW5kIG9mIG91clxuICAgICAgICAgIC8vIHBhdGggY29tcG9uZW50XG4gICAgICAgICAgbWF0Y2hlZFNsYXNoID0gZmFsc2U7XG4gICAgICAgICAgZW5kID0gaSArIDE7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGVuZCA9PT0gLTEpIHJldHVybiAnJztcbiAgICAgIHJldHVybiBwYXRoLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICAgIH1cbiAgfSxcblxuICBleHRuYW1lOiBmdW5jdGlvbiBleHRuYW1lKHBhdGgpIHtcbiAgICBhc3NlcnRQYXRoKHBhdGgpO1xuICAgIHZhciBzdGFydERvdCA9IC0xO1xuICAgIHZhciBzdGFydFBhcnQgPSAwO1xuICAgIHZhciBlbmQgPSAtMTtcbiAgICB2YXIgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgICAvLyBUcmFjayB0aGUgc3RhdGUgb2YgY2hhcmFjdGVycyAoaWYgYW55KSB3ZSBzZWUgYmVmb3JlIG91ciBmaXJzdCBkb3QgYW5kXG4gICAgLy8gYWZ0ZXIgYW55IHBhdGggc2VwYXJhdG9yIHdlIGZpbmRcbiAgICB2YXIgcHJlRG90U3RhdGUgPSAwO1xuICAgIGZvciAodmFyIGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICB2YXIgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICAgIGlmIChjb2RlID09PSA0NyAvKi8qLykge1xuICAgICAgICAgIC8vIElmIHdlIHJlYWNoZWQgYSBwYXRoIHNlcGFyYXRvciB0aGF0IHdhcyBub3QgcGFydCBvZiBhIHNldCBvZiBwYXRoXG4gICAgICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93XG4gICAgICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgICAgIHN0YXJ0UGFydCA9IGkgKyAxO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICBpZiAoZW5kID09PSAtMSkge1xuICAgICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvciwgbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyXG4gICAgICAgIC8vIGV4dGVuc2lvblxuICAgICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgICAgZW5kID0gaSArIDE7XG4gICAgICB9XG4gICAgICBpZiAoY29kZSA9PT0gNDYgLyouKi8pIHtcbiAgICAgICAgICAvLyBJZiB0aGlzIGlzIG91ciBmaXJzdCBkb3QsIG1hcmsgaXQgYXMgdGhlIHN0YXJ0IG9mIG91ciBleHRlbnNpb25cbiAgICAgICAgICBpZiAoc3RhcnREb3QgPT09IC0xKVxuICAgICAgICAgICAgc3RhcnREb3QgPSBpO1xuICAgICAgICAgIGVsc2UgaWYgKHByZURvdFN0YXRlICE9PSAxKVxuICAgICAgICAgICAgcHJlRG90U3RhdGUgPSAxO1xuICAgICAgfSBlbHNlIGlmIChzdGFydERvdCAhPT0gLTEpIHtcbiAgICAgICAgLy8gV2Ugc2F3IGEgbm9uLWRvdCBhbmQgbm9uLXBhdGggc2VwYXJhdG9yIGJlZm9yZSBvdXIgZG90LCBzbyB3ZSBzaG91bGRcbiAgICAgICAgLy8gaGF2ZSBhIGdvb2QgY2hhbmNlIGF0IGhhdmluZyBhIG5vbi1lbXB0eSBleHRlbnNpb25cbiAgICAgICAgcHJlRG90U3RhdGUgPSAtMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3RhcnREb3QgPT09IC0xIHx8IGVuZCA9PT0gLTEgfHxcbiAgICAgICAgLy8gV2Ugc2F3IGEgbm9uLWRvdCBjaGFyYWN0ZXIgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBkb3RcbiAgICAgICAgcHJlRG90U3RhdGUgPT09IDAgfHxcbiAgICAgICAgLy8gVGhlIChyaWdodC1tb3N0KSB0cmltbWVkIHBhdGggY29tcG9uZW50IGlzIGV4YWN0bHkgJy4uJ1xuICAgICAgICBwcmVEb3RTdGF0ZSA9PT0gMSAmJiBzdGFydERvdCA9PT0gZW5kIC0gMSAmJiBzdGFydERvdCA9PT0gc3RhcnRQYXJ0ICsgMSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICByZXR1cm4gcGF0aC5zbGljZShzdGFydERvdCwgZW5kKTtcbiAgfSxcblxuICBmb3JtYXQ6IGZ1bmN0aW9uIGZvcm1hdChwYXRoT2JqZWN0KSB7XG4gICAgaWYgKHBhdGhPYmplY3QgPT09IG51bGwgfHwgdHlwZW9mIHBhdGhPYmplY3QgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJwYXRoT2JqZWN0XCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAnICsgdHlwZW9mIHBhdGhPYmplY3QpO1xuICAgIH1cbiAgICByZXR1cm4gX2Zvcm1hdCgnLycsIHBhdGhPYmplY3QpO1xuICB9LFxuXG4gIHBhcnNlOiBmdW5jdGlvbiBwYXJzZShwYXRoKSB7XG4gICAgYXNzZXJ0UGF0aChwYXRoKTtcblxuICAgIHZhciByZXQgPSB7IHJvb3Q6ICcnLCBkaXI6ICcnLCBiYXNlOiAnJywgZXh0OiAnJywgbmFtZTogJycgfTtcbiAgICBpZiAocGF0aC5sZW5ndGggPT09IDApIHJldHVybiByZXQ7XG4gICAgdmFyIGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoMCk7XG4gICAgdmFyIGlzQWJzb2x1dGUgPSBjb2RlID09PSA0NyAvKi8qLztcbiAgICB2YXIgc3RhcnQ7XG4gICAgaWYgKGlzQWJzb2x1dGUpIHtcbiAgICAgIHJldC5yb290ID0gJy8nO1xuICAgICAgc3RhcnQgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGFydCA9IDA7XG4gICAgfVxuICAgIHZhciBzdGFydERvdCA9IC0xO1xuICAgIHZhciBzdGFydFBhcnQgPSAwO1xuICAgIHZhciBlbmQgPSAtMTtcbiAgICB2YXIgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgICB2YXIgaSA9IHBhdGgubGVuZ3RoIC0gMTtcblxuICAgIC8vIFRyYWNrIHRoZSBzdGF0ZSBvZiBjaGFyYWN0ZXJzIChpZiBhbnkpIHdlIHNlZSBiZWZvcmUgb3VyIGZpcnN0IGRvdCBhbmRcbiAgICAvLyBhZnRlciBhbnkgcGF0aCBzZXBhcmF0b3Igd2UgZmluZFxuICAgIHZhciBwcmVEb3RTdGF0ZSA9IDA7XG5cbiAgICAvLyBHZXQgbm9uLWRpciBpbmZvXG4gICAgZm9yICg7IGkgPj0gc3RhcnQ7IC0taSkge1xuICAgICAgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICAgIGlmIChjb2RlID09PSA0NyAvKi8qLykge1xuICAgICAgICAgIC8vIElmIHdlIHJlYWNoZWQgYSBwYXRoIHNlcGFyYXRvciB0aGF0IHdhcyBub3QgcGFydCBvZiBhIHNldCBvZiBwYXRoXG4gICAgICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93XG4gICAgICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgICAgIHN0YXJ0UGFydCA9IGkgKyAxO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICBpZiAoZW5kID09PSAtMSkge1xuICAgICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvciwgbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyXG4gICAgICAgIC8vIGV4dGVuc2lvblxuICAgICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgICAgZW5kID0gaSArIDE7XG4gICAgICB9XG4gICAgICBpZiAoY29kZSA9PT0gNDYgLyouKi8pIHtcbiAgICAgICAgICAvLyBJZiB0aGlzIGlzIG91ciBmaXJzdCBkb3QsIG1hcmsgaXQgYXMgdGhlIHN0YXJ0IG9mIG91ciBleHRlbnNpb25cbiAgICAgICAgICBpZiAoc3RhcnREb3QgPT09IC0xKSBzdGFydERvdCA9IGk7ZWxzZSBpZiAocHJlRG90U3RhdGUgIT09IDEpIHByZURvdFN0YXRlID0gMTtcbiAgICAgICAgfSBlbHNlIGlmIChzdGFydERvdCAhPT0gLTEpIHtcbiAgICAgICAgLy8gV2Ugc2F3IGEgbm9uLWRvdCBhbmQgbm9uLXBhdGggc2VwYXJhdG9yIGJlZm9yZSBvdXIgZG90LCBzbyB3ZSBzaG91bGRcbiAgICAgICAgLy8gaGF2ZSBhIGdvb2QgY2hhbmNlIGF0IGhhdmluZyBhIG5vbi1lbXB0eSBleHRlbnNpb25cbiAgICAgICAgcHJlRG90U3RhdGUgPSAtMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3RhcnREb3QgPT09IC0xIHx8IGVuZCA9PT0gLTEgfHxcbiAgICAvLyBXZSBzYXcgYSBub24tZG90IGNoYXJhY3RlciBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIGRvdFxuICAgIHByZURvdFN0YXRlID09PSAwIHx8XG4gICAgLy8gVGhlIChyaWdodC1tb3N0KSB0cmltbWVkIHBhdGggY29tcG9uZW50IGlzIGV4YWN0bHkgJy4uJ1xuICAgIHByZURvdFN0YXRlID09PSAxICYmIHN0YXJ0RG90ID09PSBlbmQgLSAxICYmIHN0YXJ0RG90ID09PSBzdGFydFBhcnQgKyAxKSB7XG4gICAgICBpZiAoZW5kICE9PSAtMSkge1xuICAgICAgICBpZiAoc3RhcnRQYXJ0ID09PSAwICYmIGlzQWJzb2x1dGUpIHJldC5iYXNlID0gcmV0Lm5hbWUgPSBwYXRoLnNsaWNlKDEsIGVuZCk7ZWxzZSByZXQuYmFzZSA9IHJldC5uYW1lID0gcGF0aC5zbGljZShzdGFydFBhcnQsIGVuZCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzdGFydFBhcnQgPT09IDAgJiYgaXNBYnNvbHV0ZSkge1xuICAgICAgICByZXQubmFtZSA9IHBhdGguc2xpY2UoMSwgc3RhcnREb3QpO1xuICAgICAgICByZXQuYmFzZSA9IHBhdGguc2xpY2UoMSwgZW5kKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldC5uYW1lID0gcGF0aC5zbGljZShzdGFydFBhcnQsIHN0YXJ0RG90KTtcbiAgICAgICAgcmV0LmJhc2UgPSBwYXRoLnNsaWNlKHN0YXJ0UGFydCwgZW5kKTtcbiAgICAgIH1cbiAgICAgIHJldC5leHQgPSBwYXRoLnNsaWNlKHN0YXJ0RG90LCBlbmQpO1xuICAgIH1cblxuICAgIGlmIChzdGFydFBhcnQgPiAwKSByZXQuZGlyID0gcGF0aC5zbGljZSgwLCBzdGFydFBhcnQgLSAxKTtlbHNlIGlmIChpc0Fic29sdXRlKSByZXQuZGlyID0gJy8nO1xuXG4gICAgcmV0dXJuIHJldDtcbiAgfSxcblxuICBzZXA6ICcvJyxcbiAgZGVsaW1pdGVyOiAnOicsXG4gIHdpbjMyOiBudWxsLFxuICBwb3NpeDogbnVsbFxufTtcblxucG9zaXgucG9zaXggPSBwb3NpeDtcblxubW9kdWxlLmV4cG9ydHMgPSBwb3NpeDtcbiIsICIvKiFcbiAqIG1pbWUtdHlwZXNcbiAqIENvcHlyaWdodChjKSAyMDE0IEpvbmF0aGFuIE9uZ1xuICogQ29weXJpZ2h0KGMpIDIwMTUgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG4vKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBkYiA9IHJlcXVpcmUoJ21pbWUtZGInKVxudmFyIGV4dG5hbWUgPSByZXF1aXJlKCdwYXRoJykuZXh0bmFtZVxuXG4vKipcbiAqIE1vZHVsZSB2YXJpYWJsZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBFWFRSQUNUX1RZUEVfUkVHRVhQID0gL15cXHMqKFteO1xcc10qKSg/Ojt8XFxzfCQpL1xudmFyIFRFWFRfVFlQRV9SRUdFWFAgPSAvXnRleHRcXC8vaVxuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICogQHB1YmxpY1xuICovXG5cbmV4cG9ydHMuY2hhcnNldCA9IGNoYXJzZXRcbmV4cG9ydHMuY2hhcnNldHMgPSB7IGxvb2t1cDogY2hhcnNldCB9XG5leHBvcnRzLmNvbnRlbnRUeXBlID0gY29udGVudFR5cGVcbmV4cG9ydHMuZXh0ZW5zaW9uID0gZXh0ZW5zaW9uXG5leHBvcnRzLmV4dGVuc2lvbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpXG5leHBvcnRzLmxvb2t1cCA9IGxvb2t1cFxuZXhwb3J0cy50eXBlcyA9IE9iamVjdC5jcmVhdGUobnVsbClcblxuLy8gUG9wdWxhdGUgdGhlIGV4dGVuc2lvbnMvdHlwZXMgbWFwc1xucG9wdWxhdGVNYXBzKGV4cG9ydHMuZXh0ZW5zaW9ucywgZXhwb3J0cy50eXBlcylcblxuLyoqXG4gKiBHZXQgdGhlIGRlZmF1bHQgY2hhcnNldCBmb3IgYSBNSU1FIHR5cGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHR5cGVcbiAqIEByZXR1cm4ge2Jvb2xlYW58c3RyaW5nfVxuICovXG5cbmZ1bmN0aW9uIGNoYXJzZXQgKHR5cGUpIHtcbiAgaWYgKCF0eXBlIHx8IHR5cGVvZiB0eXBlICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLy8gVE9ETzogdXNlIG1lZGlhLXR5cGVyXG4gIHZhciBtYXRjaCA9IEVYVFJBQ1RfVFlQRV9SRUdFWFAuZXhlYyh0eXBlKVxuICB2YXIgbWltZSA9IG1hdGNoICYmIGRiW21hdGNoWzFdLnRvTG93ZXJDYXNlKCldXG5cbiAgaWYgKG1pbWUgJiYgbWltZS5jaGFyc2V0KSB7XG4gICAgcmV0dXJuIG1pbWUuY2hhcnNldFxuICB9XG5cbiAgLy8gZGVmYXVsdCB0ZXh0LyogdG8gdXRmLThcbiAgaWYgKG1hdGNoICYmIFRFWFRfVFlQRV9SRUdFWFAudGVzdChtYXRjaFsxXSkpIHtcbiAgICByZXR1cm4gJ1VURi04J1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59XG5cbi8qKlxuICogQ3JlYXRlIGEgZnVsbCBDb250ZW50LVR5cGUgaGVhZGVyIGdpdmVuIGEgTUlNRSB0eXBlIG9yIGV4dGVuc2lvbi5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtib29sZWFufHN0cmluZ31cbiAqL1xuXG5mdW5jdGlvbiBjb250ZW50VHlwZSAoc3RyKSB7XG4gIC8vIFRPRE86IHNob3VsZCB0aGlzIGV2ZW4gYmUgaW4gdGhpcyBtb2R1bGU/XG4gIGlmICghc3RyIHx8IHR5cGVvZiBzdHIgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICB2YXIgbWltZSA9IHN0ci5pbmRleE9mKCcvJykgPT09IC0xXG4gICAgPyBleHBvcnRzLmxvb2t1cChzdHIpXG4gICAgOiBzdHJcblxuICBpZiAoIW1pbWUpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8vIFRPRE86IHVzZSBjb250ZW50LXR5cGUgb3Igb3RoZXIgbW9kdWxlXG4gIGlmIChtaW1lLmluZGV4T2YoJ2NoYXJzZXQnKSA9PT0gLTEpIHtcbiAgICB2YXIgY2hhcnNldCA9IGV4cG9ydHMuY2hhcnNldChtaW1lKVxuICAgIGlmIChjaGFyc2V0KSBtaW1lICs9ICc7IGNoYXJzZXQ9JyArIGNoYXJzZXQudG9Mb3dlckNhc2UoKVxuICB9XG5cbiAgcmV0dXJuIG1pbWVcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGRlZmF1bHQgZXh0ZW5zaW9uIGZvciBhIE1JTUUgdHlwZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZVxuICogQHJldHVybiB7Ym9vbGVhbnxzdHJpbmd9XG4gKi9cblxuZnVuY3Rpb24gZXh0ZW5zaW9uICh0eXBlKSB7XG4gIGlmICghdHlwZSB8fCB0eXBlb2YgdHlwZSAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8vIFRPRE86IHVzZSBtZWRpYS10eXBlclxuICB2YXIgbWF0Y2ggPSBFWFRSQUNUX1RZUEVfUkVHRVhQLmV4ZWModHlwZSlcblxuICAvLyBnZXQgZXh0ZW5zaW9uc1xuICB2YXIgZXh0cyA9IG1hdGNoICYmIGV4cG9ydHMuZXh0ZW5zaW9uc1ttYXRjaFsxXS50b0xvd2VyQ2FzZSgpXVxuXG4gIGlmICghZXh0cyB8fCAhZXh0cy5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHJldHVybiBleHRzWzBdXG59XG5cbi8qKlxuICogTG9va3VwIHRoZSBNSU1FIHR5cGUgZm9yIGEgZmlsZSBwYXRoL2V4dGVuc2lvbi5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aFxuICogQHJldHVybiB7Ym9vbGVhbnxzdHJpbmd9XG4gKi9cblxuZnVuY3Rpb24gbG9va3VwIChwYXRoKSB7XG4gIGlmICghcGF0aCB8fCB0eXBlb2YgcGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8vIGdldCB0aGUgZXh0ZW5zaW9uIChcImV4dFwiIG9yIFwiLmV4dFwiIG9yIGZ1bGwgcGF0aClcbiAgdmFyIGV4dGVuc2lvbiA9IGV4dG5hbWUoJ3guJyArIHBhdGgpXG4gICAgLnRvTG93ZXJDYXNlKClcbiAgICAuc3Vic3RyKDEpXG5cbiAgaWYgKCFleHRlbnNpb24pIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHJldHVybiBleHBvcnRzLnR5cGVzW2V4dGVuc2lvbl0gfHwgZmFsc2Vcbn1cblxuLyoqXG4gKiBQb3B1bGF0ZSB0aGUgZXh0ZW5zaW9ucyBhbmQgdHlwZXMgbWFwcy5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcG9wdWxhdGVNYXBzIChleHRlbnNpb25zLCB0eXBlcykge1xuICAvLyBzb3VyY2UgcHJlZmVyZW5jZSAobGVhc3QgLT4gbW9zdClcbiAgdmFyIHByZWZlcmVuY2UgPSBbJ25naW54JywgJ2FwYWNoZScsIHVuZGVmaW5lZCwgJ2lhbmEnXVxuXG4gIE9iamVjdC5rZXlzKGRiKS5mb3JFYWNoKGZ1bmN0aW9uIGZvckVhY2hNaW1lVHlwZSAodHlwZSkge1xuICAgIHZhciBtaW1lID0gZGJbdHlwZV1cbiAgICB2YXIgZXh0cyA9IG1pbWUuZXh0ZW5zaW9uc1xuXG4gICAgaWYgKCFleHRzIHx8ICFleHRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gbWltZSAtPiBleHRlbnNpb25zXG4gICAgZXh0ZW5zaW9uc1t0eXBlXSA9IGV4dHNcblxuICAgIC8vIGV4dGVuc2lvbiAtPiBtaW1lXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZXh0ZW5zaW9uID0gZXh0c1tpXVxuXG4gICAgICBpZiAodHlwZXNbZXh0ZW5zaW9uXSkge1xuICAgICAgICB2YXIgZnJvbSA9IHByZWZlcmVuY2UuaW5kZXhPZihkYlt0eXBlc1tleHRlbnNpb25dXS5zb3VyY2UpXG4gICAgICAgIHZhciB0byA9IHByZWZlcmVuY2UuaW5kZXhPZihtaW1lLnNvdXJjZSlcblxuICAgICAgICBpZiAodHlwZXNbZXh0ZW5zaW9uXSAhPT0gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScgJiZcbiAgICAgICAgICAoZnJvbSA+IHRvIHx8IChmcm9tID09PSB0byAmJiB0eXBlc1tleHRlbnNpb25dLnN1YnN0cigwLCAxMikgPT09ICdhcHBsaWNhdGlvbi8nKSkpIHtcbiAgICAgICAgICAvLyBza2lwIHRoZSByZW1hcHBpbmdcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIHNldCB0aGUgZXh0ZW5zaW9uIC0+IG1pbWVcbiAgICAgIHR5cGVzW2V4dGVuc2lvbl0gPSB0eXBlXG4gICAgfVxuICB9KVxufVxuIiwgIi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZ2xvYmFsYCBmcm9tIE5vZGUuanMuICovXG52YXIgZnJlZUdsb2JhbCA9IHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsICYmIGdsb2JhbC5PYmplY3QgPT09IE9iamVjdCAmJiBnbG9iYWw7XG5cbm1vZHVsZS5leHBvcnRzID0gZnJlZUdsb2JhbDtcbiIsICJ2YXIgZnJlZUdsb2JhbCA9IHJlcXVpcmUoJy4vX2ZyZWVHbG9iYWwnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbnZhciBmcmVlU2VsZiA9IHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmO1xuXG4vKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbnZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJvb3Q7XG4iLCAidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIFN5bWJvbCA9IHJvb3QuU3ltYm9sO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bWJvbDtcbiIsICIvKipcbiAqIENvcGllcyB0aGUgdmFsdWVzIG9mIGBzb3VyY2VgIHRvIGBhcnJheWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IHNvdXJjZSBUaGUgYXJyYXkgdG8gY29weSB2YWx1ZXMgZnJvbS5cbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheT1bXV0gVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIHRvLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGNvcHlBcnJheShzb3VyY2UsIGFycmF5KSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gc291cmNlLmxlbmd0aDtcblxuICBhcnJheSB8fCAoYXJyYXkgPSBBcnJheShsZW5ndGgpKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBhcnJheVtpbmRleF0gPSBzb3VyY2VbaW5kZXhdO1xuICB9XG4gIHJldHVybiBhcnJheTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb3B5QXJyYXk7XG4iLCAidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgbmF0aXZlT2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3ltVG9TdHJpbmdUYWcgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlR2V0VGFnYCB3aGljaCBpZ25vcmVzIGBTeW1ib2wudG9TdHJpbmdUYWdgIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSByYXcgYHRvU3RyaW5nVGFnYC5cbiAqL1xuZnVuY3Rpb24gZ2V0UmF3VGFnKHZhbHVlKSB7XG4gIHZhciBpc093biA9IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIHN5bVRvU3RyaW5nVGFnKSxcbiAgICAgIHRhZyA9IHZhbHVlW3N5bVRvU3RyaW5nVGFnXTtcblxuICB0cnkge1xuICAgIHZhbHVlW3N5bVRvU3RyaW5nVGFnXSA9IHVuZGVmaW5lZDtcbiAgICB2YXIgdW5tYXNrZWQgPSB0cnVlO1xuICB9IGNhdGNoIChlKSB7fVxuXG4gIHZhciByZXN1bHQgPSBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgaWYgKHVubWFza2VkKSB7XG4gICAgaWYgKGlzT3duKSB7XG4gICAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB0YWc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlbGV0ZSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0UmF3VGFnO1xuIiwgIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZVxuICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBuYXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcgdXNpbmcgYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG9iamVjdFRvU3RyaW5nO1xuIiwgInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKSxcbiAgICBnZXRSYXdUYWcgPSByZXF1aXJlKCcuL19nZXRSYXdUYWcnKSxcbiAgICBvYmplY3RUb1N0cmluZyA9IHJlcXVpcmUoJy4vX29iamVjdFRvU3RyaW5nJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBudWxsVGFnID0gJ1tvYmplY3QgTnVsbF0nLFxuICAgIHVuZGVmaW5lZFRhZyA9ICdbb2JqZWN0IFVuZGVmaW5lZF0nO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1Ub1N0cmluZ1RhZyA9IFN5bWJvbCA/IFN5bWJvbC50b1N0cmluZ1RhZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgZ2V0VGFnYCB3aXRob3V0IGZhbGxiYWNrcyBmb3IgYnVnZ3kgZW52aXJvbm1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGJhc2VHZXRUYWcodmFsdWUpIHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZFRhZyA6IG51bGxUYWc7XG4gIH1cbiAgcmV0dXJuIChzeW1Ub1N0cmluZ1RhZyAmJiBzeW1Ub1N0cmluZ1RhZyBpbiBPYmplY3QodmFsdWUpKVxuICAgID8gZ2V0UmF3VGFnKHZhbHVlKVxuICAgIDogb2JqZWN0VG9TdHJpbmcodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VHZXRUYWc7XG4iLCAiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyB0aGVcbiAqIFtsYW5ndWFnZSB0eXBlXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtZWNtYXNjcmlwdC1sYW5ndWFnZS10eXBlcylcbiAqIG9mIGBPYmplY3RgLiAoZS5nLiBhcnJheXMsIGZ1bmN0aW9ucywgb2JqZWN0cywgcmVnZXhlcywgYG5ldyBOdW1iZXIoMClgLCBhbmQgYG5ldyBTdHJpbmcoJycpYClcbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdCh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoXy5ub29wKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3QodmFsdWUpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmICh0eXBlID09ICdvYmplY3QnIHx8IHR5cGUgPT0gJ2Z1bmN0aW9uJyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNPYmplY3Q7XG4iLCAidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhc3luY1RhZyA9ICdbb2JqZWN0IEFzeW5jRnVuY3Rpb25dJyxcbiAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBnZW5UYWcgPSAnW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0nLFxuICAgIHByb3h5VGFnID0gJ1tvYmplY3QgUHJveHldJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYEZ1bmN0aW9uYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBmdW5jdGlvbiwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzRnVuY3Rpb24oXyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0Z1bmN0aW9uKC9hYmMvKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gVGhlIHVzZSBvZiBgT2JqZWN0I3RvU3RyaW5nYCBhdm9pZHMgaXNzdWVzIHdpdGggdGhlIGB0eXBlb2ZgIG9wZXJhdG9yXG4gIC8vIGluIFNhZmFyaSA5IHdoaWNoIHJldHVybnMgJ29iamVjdCcgZm9yIHR5cGVkIGFycmF5cyBhbmQgb3RoZXIgY29uc3RydWN0b3JzLlxuICB2YXIgdGFnID0gYmFzZUdldFRhZyh2YWx1ZSk7XG4gIHJldHVybiB0YWcgPT0gZnVuY1RhZyB8fCB0YWcgPT0gZ2VuVGFnIHx8IHRhZyA9PSBhc3luY1RhZyB8fCB0YWcgPT0gcHJveHlUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNGdW5jdGlvbjtcbiIsICJ2YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG92ZXJyZWFjaGluZyBjb3JlLWpzIHNoaW1zLiAqL1xudmFyIGNvcmVKc0RhdGEgPSByb290WydfX2NvcmUtanNfc2hhcmVkX18nXTtcblxubW9kdWxlLmV4cG9ydHMgPSBjb3JlSnNEYXRhO1xuIiwgInZhciBjb3JlSnNEYXRhID0gcmVxdWlyZSgnLi9fY29yZUpzRGF0YScpO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgbWV0aG9kcyBtYXNxdWVyYWRpbmcgYXMgbmF0aXZlLiAqL1xudmFyIG1hc2tTcmNLZXkgPSAoZnVuY3Rpb24oKSB7XG4gIHZhciB1aWQgPSAvW14uXSskLy5leGVjKGNvcmVKc0RhdGEgJiYgY29yZUpzRGF0YS5rZXlzICYmIGNvcmVKc0RhdGEua2V5cy5JRV9QUk9UTyB8fCAnJyk7XG4gIHJldHVybiB1aWQgPyAoJ1N5bWJvbChzcmMpXzEuJyArIHVpZCkgOiAnJztcbn0oKSk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBmdW5jYCBoYXMgaXRzIHNvdXJjZSBtYXNrZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBmdW5jYCBpcyBtYXNrZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNNYXNrZWQoZnVuYykge1xuICByZXR1cm4gISFtYXNrU3JjS2V5ICYmIChtYXNrU3JjS2V5IGluIGZ1bmMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTWFza2VkO1xuIiwgIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbi8qKlxuICogQ29udmVydHMgYGZ1bmNgIHRvIGl0cyBzb3VyY2UgY29kZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHNvdXJjZSBjb2RlLlxuICovXG5mdW5jdGlvbiB0b1NvdXJjZShmdW5jKSB7XG4gIGlmIChmdW5jICE9IG51bGwpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGZ1bmNUb1N0cmluZy5jYWxsKGZ1bmMpO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiAoZnVuYyArICcnKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICB9XG4gIHJldHVybiAnJztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b1NvdXJjZTtcbiIsICJ2YXIgaXNGdW5jdGlvbiA9IHJlcXVpcmUoJy4vaXNGdW5jdGlvbicpLFxuICAgIGlzTWFza2VkID0gcmVxdWlyZSgnLi9faXNNYXNrZWQnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICB0b1NvdXJjZSA9IHJlcXVpcmUoJy4vX3RvU291cmNlJyk7XG5cbi8qKlxuICogVXNlZCB0byBtYXRjaCBgUmVnRXhwYFxuICogW3N5bnRheCBjaGFyYWN0ZXJzXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1wYXR0ZXJucykuXG4gKi9cbnZhciByZVJlZ0V4cENoYXIgPSAvW1xcXFxeJC4qKz8oKVtcXF17fXxdL2c7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBob3N0IGNvbnN0cnVjdG9ycyAoU2FmYXJpKS4gKi9cbnZhciByZUlzSG9zdEN0b3IgPSAvXlxcW29iamVjdCAuKz9Db25zdHJ1Y3RvclxcXSQvO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuICAgIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGlmIGEgbWV0aG9kIGlzIG5hdGl2ZS4gKi9cbnZhciByZUlzTmF0aXZlID0gUmVnRXhwKCdeJyArXG4gIGZ1bmNUb1N0cmluZy5jYWxsKGhhc093blByb3BlcnR5KS5yZXBsYWNlKHJlUmVnRXhwQ2hhciwgJ1xcXFwkJicpXG4gIC5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcXFxcKCl8IGZvciAuKz8oPz1cXFxcXFxdKS9nLCAnJDEuKj8nKSArICckJ1xuKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc05hdGl2ZWAgd2l0aG91dCBiYWQgc2hpbSBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBuYXRpdmUgZnVuY3Rpb24sXG4gKiAgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNOYXRpdmUodmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkgfHwgaXNNYXNrZWQodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBwYXR0ZXJuID0gaXNGdW5jdGlvbih2YWx1ZSkgPyByZUlzTmF0aXZlIDogcmVJc0hvc3RDdG9yO1xuICByZXR1cm4gcGF0dGVybi50ZXN0KHRvU291cmNlKHZhbHVlKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzTmF0aXZlO1xuIiwgIi8qKlxuICogR2V0cyB0aGUgdmFsdWUgYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcHJvcGVydHkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGdldFZhbHVlKG9iamVjdCwga2V5KSB7XG4gIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFZhbHVlO1xuIiwgInZhciBiYXNlSXNOYXRpdmUgPSByZXF1aXJlKCcuL19iYXNlSXNOYXRpdmUnKSxcbiAgICBnZXRWYWx1ZSA9IHJlcXVpcmUoJy4vX2dldFZhbHVlJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgbmF0aXZlIGZ1bmN0aW9uIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIG1ldGhvZCB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZnVuY3Rpb24gaWYgaXQncyBuYXRpdmUsIGVsc2UgYHVuZGVmaW5lZGAuXG4gKi9cbmZ1bmN0aW9uIGdldE5hdGl2ZShvYmplY3QsIGtleSkge1xuICB2YXIgdmFsdWUgPSBnZXRWYWx1ZShvYmplY3QsIGtleSk7XG4gIHJldHVybiBiYXNlSXNOYXRpdmUodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0TmF0aXZlO1xuIiwgInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgRGF0YVZpZXcgPSBnZXROYXRpdmUocm9vdCwgJ0RhdGFWaWV3Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gRGF0YVZpZXc7XG4iLCAidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBNYXAgPSBnZXROYXRpdmUocm9vdCwgJ01hcCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1hcDtcbiIsICJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIFByb21pc2UgPSBnZXROYXRpdmUocm9vdCwgJ1Byb21pc2UnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBQcm9taXNlO1xuIiwgInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgU2V0ID0gZ2V0TmF0aXZlKHJvb3QsICdTZXQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTZXQ7XG4iLCAidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBXZWFrTWFwID0gZ2V0TmF0aXZlKHJvb3QsICdXZWFrTWFwJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gV2Vha01hcDtcbiIsICJ2YXIgRGF0YVZpZXcgPSByZXF1aXJlKCcuL19EYXRhVmlldycpLFxuICAgIE1hcCA9IHJlcXVpcmUoJy4vX01hcCcpLFxuICAgIFByb21pc2UgPSByZXF1aXJlKCcuL19Qcm9taXNlJyksXG4gICAgU2V0ID0gcmVxdWlyZSgnLi9fU2V0JyksXG4gICAgV2Vha01hcCA9IHJlcXVpcmUoJy4vX1dlYWtNYXAnKSxcbiAgICBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIHRvU291cmNlID0gcmVxdWlyZSgnLi9fdG9Tb3VyY2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nLFxuICAgIHByb21pc2VUYWcgPSAnW29iamVjdCBQcm9taXNlXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgd2Vha01hcFRhZyA9ICdbb2JqZWN0IFdlYWtNYXBdJztcblxudmFyIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG1hcHMsIHNldHMsIGFuZCB3ZWFrbWFwcy4gKi9cbnZhciBkYXRhVmlld0N0b3JTdHJpbmcgPSB0b1NvdXJjZShEYXRhVmlldyksXG4gICAgbWFwQ3RvclN0cmluZyA9IHRvU291cmNlKE1hcCksXG4gICAgcHJvbWlzZUN0b3JTdHJpbmcgPSB0b1NvdXJjZShQcm9taXNlKSxcbiAgICBzZXRDdG9yU3RyaW5nID0gdG9Tb3VyY2UoU2V0KSxcbiAgICB3ZWFrTWFwQ3RvclN0cmluZyA9IHRvU291cmNlKFdlYWtNYXApO1xuXG4vKipcbiAqIEdldHMgdGhlIGB0b1N0cmluZ1RhZ2Agb2YgYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBgdG9TdHJpbmdUYWdgLlxuICovXG52YXIgZ2V0VGFnID0gYmFzZUdldFRhZztcblxuLy8gRmFsbGJhY2sgZm9yIGRhdGEgdmlld3MsIG1hcHMsIHNldHMsIGFuZCB3ZWFrIG1hcHMgaW4gSUUgMTEgYW5kIHByb21pc2VzIGluIE5vZGUuanMgPCA2LlxuaWYgKChEYXRhVmlldyAmJiBnZXRUYWcobmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigxKSkpICE9IGRhdGFWaWV3VGFnKSB8fFxuICAgIChNYXAgJiYgZ2V0VGFnKG5ldyBNYXApICE9IG1hcFRhZykgfHxcbiAgICAoUHJvbWlzZSAmJiBnZXRUYWcoUHJvbWlzZS5yZXNvbHZlKCkpICE9IHByb21pc2VUYWcpIHx8XG4gICAgKFNldCAmJiBnZXRUYWcobmV3IFNldCkgIT0gc2V0VGFnKSB8fFxuICAgIChXZWFrTWFwICYmIGdldFRhZyhuZXcgV2Vha01hcCkgIT0gd2Vha01hcFRhZykpIHtcbiAgZ2V0VGFnID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgICB2YXIgcmVzdWx0ID0gYmFzZUdldFRhZyh2YWx1ZSksXG4gICAgICAgIEN0b3IgPSByZXN1bHQgPT0gb2JqZWN0VGFnID8gdmFsdWUuY29uc3RydWN0b3IgOiB1bmRlZmluZWQsXG4gICAgICAgIGN0b3JTdHJpbmcgPSBDdG9yID8gdG9Tb3VyY2UoQ3RvcikgOiAnJztcblxuICAgIGlmIChjdG9yU3RyaW5nKSB7XG4gICAgICBzd2l0Y2ggKGN0b3JTdHJpbmcpIHtcbiAgICAgICAgY2FzZSBkYXRhVmlld0N0b3JTdHJpbmc6IHJldHVybiBkYXRhVmlld1RhZztcbiAgICAgICAgY2FzZSBtYXBDdG9yU3RyaW5nOiByZXR1cm4gbWFwVGFnO1xuICAgICAgICBjYXNlIHByb21pc2VDdG9yU3RyaW5nOiByZXR1cm4gcHJvbWlzZVRhZztcbiAgICAgICAgY2FzZSBzZXRDdG9yU3RyaW5nOiByZXR1cm4gc2V0VGFnO1xuICAgICAgICBjYXNlIHdlYWtNYXBDdG9yU3RyaW5nOiByZXR1cm4gd2Vha01hcFRhZztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRUYWc7XG4iLCAiLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGxlbmd0aC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvblxuICogW2BUb0xlbmd0aGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvbGVuZ3RoKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGxlbmd0aCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzTGVuZ3RoKDMpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNMZW5ndGgoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoSW5maW5pdHkpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzTGVuZ3RoKCczJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0xlbmd0aCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmXG4gICAgdmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8PSBNQVhfU0FGRV9JTlRFR0VSO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTGVuZ3RoO1xuIiwgInZhciBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi9pc0Z1bmN0aW9uJyksXG4gICAgaXNMZW5ndGggPSByZXF1aXJlKCcuL2lzTGVuZ3RoJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZS4gQSB2YWx1ZSBpcyBjb25zaWRlcmVkIGFycmF5LWxpa2UgaWYgaXQnc1xuICogbm90IGEgZnVuY3Rpb24gYW5kIGhhcyBhIGB2YWx1ZS5sZW5ndGhgIHRoYXQncyBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBvclxuICogZXF1YWwgdG8gYDBgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYE51bWJlci5NQVhfU0FGRV9JTlRFR0VSYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoJ2FiYycpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgIWlzRnVuY3Rpb24odmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJyYXlMaWtlO1xuIiwgIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhbiBgQXJyYXlgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXkoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXkoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheSgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJyYXk7XG4iLCAiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZS4gQSB2YWx1ZSBpcyBvYmplY3QtbGlrZSBpZiBpdCdzIG5vdCBgbnVsbGBcbiAqIGFuZCBoYXMgYSBgdHlwZW9mYCByZXN1bHQgb2YgXCJvYmplY3RcIi5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZSh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNPYmplY3RMaWtlO1xuIiwgInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTdHJpbmdgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzdHJpbmcsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1N0cmluZygnYWJjJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1N0cmluZygxKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHxcbiAgICAoIWlzQXJyYXkodmFsdWUpICYmIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gc3RyaW5nVGFnKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1N0cmluZztcbiIsICIvKipcbiAqIENvbnZlcnRzIGBpdGVyYXRvcmAgdG8gYW4gYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBpdGVyYXRvciBUaGUgaXRlcmF0b3IgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBpdGVyYXRvclRvQXJyYXkoaXRlcmF0b3IpIHtcbiAgdmFyIGRhdGEsXG4gICAgICByZXN1bHQgPSBbXTtcblxuICB3aGlsZSAoIShkYXRhID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgcmVzdWx0LnB1c2goZGF0YS52YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpdGVyYXRvclRvQXJyYXk7XG4iLCAiLyoqXG4gKiBDb252ZXJ0cyBgbWFwYCB0byBpdHMga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUga2V5LXZhbHVlIHBhaXJzLlxuICovXG5mdW5jdGlvbiBtYXBUb0FycmF5KG1hcCkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IEFycmF5KG1hcC5zaXplKTtcblxuICBtYXAuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgcmVzdWx0WysraW5kZXhdID0gW2tleSwgdmFsdWVdO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBUb0FycmF5O1xuIiwgIi8qKlxuICogQ29udmVydHMgYHNldGAgdG8gYW4gYXJyYXkgb2YgaXRzIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNldCBUaGUgc2V0IHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gc2V0VG9BcnJheShzZXQpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBBcnJheShzZXQuc2l6ZSk7XG5cbiAgc2V0LmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXN1bHRbKytpbmRleF0gPSB2YWx1ZTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0VG9BcnJheTtcbiIsICIvKipcbiAqIENvbnZlcnRzIGFuIEFTQ0lJIGBzdHJpbmdgIHRvIGFuIGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBhc2NpaVRvQXJyYXkoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcuc3BsaXQoJycpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFzY2lpVG9BcnJheTtcbiIsICIvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2hhcmFjdGVyIGNsYXNzZXMuICovXG52YXIgcnNBc3RyYWxSYW5nZSA9ICdcXFxcdWQ4MDAtXFxcXHVkZmZmJyxcbiAgICByc0NvbWJvTWFya3NSYW5nZSA9ICdcXFxcdTAzMDAtXFxcXHUwMzZmJyxcbiAgICByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgPSAnXFxcXHVmZTIwLVxcXFx1ZmUyZicsXG4gICAgcnNDb21ib1N5bWJvbHNSYW5nZSA9ICdcXFxcdTIwZDAtXFxcXHUyMGZmJyxcbiAgICByc0NvbWJvUmFuZ2UgPSByc0NvbWJvTWFya3NSYW5nZSArIHJlQ29tYm9IYWxmTWFya3NSYW5nZSArIHJzQ29tYm9TeW1ib2xzUmFuZ2UsXG4gICAgcnNWYXJSYW5nZSA9ICdcXFxcdWZlMGVcXFxcdWZlMGYnO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2FwdHVyZSBncm91cHMuICovXG52YXIgcnNaV0ogPSAnXFxcXHUyMDBkJztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IHN0cmluZ3Mgd2l0aCBbemVyby13aWR0aCBqb2luZXJzIG9yIGNvZGUgcG9pbnRzIGZyb20gdGhlIGFzdHJhbCBwbGFuZXNdKGh0dHA6Ly9lZXYuZWUvYmxvZy8yMDE1LzA5LzEyL2RhcmstY29ybmVycy1vZi11bmljb2RlLykuICovXG52YXIgcmVIYXNVbmljb2RlID0gUmVnRXhwKCdbJyArIHJzWldKICsgcnNBc3RyYWxSYW5nZSAgKyByc0NvbWJvUmFuZ2UgKyByc1ZhclJhbmdlICsgJ10nKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHN0cmluZ2AgY29udGFpbnMgVW5pY29kZSBzeW1ib2xzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhIHN5bWJvbCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBoYXNVbmljb2RlKHN0cmluZykge1xuICByZXR1cm4gcmVIYXNVbmljb2RlLnRlc3Qoc3RyaW5nKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNVbmljb2RlO1xuIiwgIi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjaGFyYWN0ZXIgY2xhc3Nlcy4gKi9cbnZhciByc0FzdHJhbFJhbmdlID0gJ1xcXFx1ZDgwMC1cXFxcdWRmZmYnLFxuICAgIHJzQ29tYm9NYXJrc1JhbmdlID0gJ1xcXFx1MDMwMC1cXFxcdTAzNmYnLFxuICAgIHJlQ29tYm9IYWxmTWFya3NSYW5nZSA9ICdcXFxcdWZlMjAtXFxcXHVmZTJmJyxcbiAgICByc0NvbWJvU3ltYm9sc1JhbmdlID0gJ1xcXFx1MjBkMC1cXFxcdTIwZmYnLFxuICAgIHJzQ29tYm9SYW5nZSA9IHJzQ29tYm9NYXJrc1JhbmdlICsgcmVDb21ib0hhbGZNYXJrc1JhbmdlICsgcnNDb21ib1N5bWJvbHNSYW5nZSxcbiAgICByc1ZhclJhbmdlID0gJ1xcXFx1ZmUwZVxcXFx1ZmUwZic7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjYXB0dXJlIGdyb3Vwcy4gKi9cbnZhciByc0FzdHJhbCA9ICdbJyArIHJzQXN0cmFsUmFuZ2UgKyAnXScsXG4gICAgcnNDb21ibyA9ICdbJyArIHJzQ29tYm9SYW5nZSArICddJyxcbiAgICByc0ZpdHogPSAnXFxcXHVkODNjW1xcXFx1ZGZmYi1cXFxcdWRmZmZdJyxcbiAgICByc01vZGlmaWVyID0gJyg/OicgKyByc0NvbWJvICsgJ3wnICsgcnNGaXR6ICsgJyknLFxuICAgIHJzTm9uQXN0cmFsID0gJ1teJyArIHJzQXN0cmFsUmFuZ2UgKyAnXScsXG4gICAgcnNSZWdpb25hbCA9ICcoPzpcXFxcdWQ4M2NbXFxcXHVkZGU2LVxcXFx1ZGRmZl0pezJ9JyxcbiAgICByc1N1cnJQYWlyID0gJ1tcXFxcdWQ4MDAtXFxcXHVkYmZmXVtcXFxcdWRjMDAtXFxcXHVkZmZmXScsXG4gICAgcnNaV0ogPSAnXFxcXHUyMDBkJztcblxuLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIHJlZ2V4ZXMuICovXG52YXIgcmVPcHRNb2QgPSByc01vZGlmaWVyICsgJz8nLFxuICAgIHJzT3B0VmFyID0gJ1snICsgcnNWYXJSYW5nZSArICddPycsXG4gICAgcnNPcHRKb2luID0gJyg/OicgKyByc1pXSiArICcoPzonICsgW3JzTm9uQXN0cmFsLCByc1JlZ2lvbmFsLCByc1N1cnJQYWlyXS5qb2luKCd8JykgKyAnKScgKyByc09wdFZhciArIHJlT3B0TW9kICsgJykqJyxcbiAgICByc1NlcSA9IHJzT3B0VmFyICsgcmVPcHRNb2QgKyByc09wdEpvaW4sXG4gICAgcnNTeW1ib2wgPSAnKD86JyArIFtyc05vbkFzdHJhbCArIHJzQ29tYm8gKyAnPycsIHJzQ29tYm8sIHJzUmVnaW9uYWwsIHJzU3VyclBhaXIsIHJzQXN0cmFsXS5qb2luKCd8JykgKyAnKSc7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIFtzdHJpbmcgc3ltYm9sc10oaHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2phdmFzY3JpcHQtdW5pY29kZSkuICovXG52YXIgcmVVbmljb2RlID0gUmVnRXhwKHJzRml0eiArICcoPz0nICsgcnNGaXR6ICsgJyl8JyArIHJzU3ltYm9sICsgcnNTZXEsICdnJyk7XG5cbi8qKlxuICogQ29udmVydHMgYSBVbmljb2RlIGBzdHJpbmdgIHRvIGFuIGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiB1bmljb2RlVG9BcnJheShzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZy5tYXRjaChyZVVuaWNvZGUpIHx8IFtdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHVuaWNvZGVUb0FycmF5O1xuIiwgInZhciBhc2NpaVRvQXJyYXkgPSByZXF1aXJlKCcuL19hc2NpaVRvQXJyYXknKSxcbiAgICBoYXNVbmljb2RlID0gcmVxdWlyZSgnLi9faGFzVW5pY29kZScpLFxuICAgIHVuaWNvZGVUb0FycmF5ID0gcmVxdWlyZSgnLi9fdW5pY29kZVRvQXJyYXknKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBgc3RyaW5nYCB0byBhbiBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gc3RyaW5nVG9BcnJheShzdHJpbmcpIHtcbiAgcmV0dXJuIGhhc1VuaWNvZGUoc3RyaW5nKVxuICAgID8gdW5pY29kZVRvQXJyYXkoc3RyaW5nKVxuICAgIDogYXNjaWlUb0FycmF5KHN0cmluZyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RyaW5nVG9BcnJheTtcbiIsICIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5tYXBgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZVxuICogc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlNYXAoYXJyYXksIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5TWFwO1xuIiwgInZhciBhcnJheU1hcCA9IHJlcXVpcmUoJy4vX2FycmF5TWFwJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udmFsdWVzYCBhbmQgYF8udmFsdWVzSW5gIHdoaWNoIGNyZWF0ZXMgYW5cbiAqIGFycmF5IG9mIGBvYmplY3RgIHByb3BlcnR5IHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBwcm9wZXJ0eSBuYW1lc1xuICogb2YgYHByb3BzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IG5hbWVzIHRvIGdldCB2YWx1ZXMgZm9yLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBiYXNlVmFsdWVzKG9iamVjdCwgcHJvcHMpIHtcbiAgcmV0dXJuIGFycmF5TWFwKHByb3BzLCBmdW5jdGlvbihrZXkpIHtcbiAgICByZXR1cm4gb2JqZWN0W2tleV07XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VWYWx1ZXM7XG4iLCAiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50aW1lc2Agd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzXG4gKiBvciBtYXggYXJyYXkgbGVuZ3RoIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byBpbnZva2UgYGl0ZXJhdGVlYC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHJlc3VsdHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VUaW1lcyhuLCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IEFycmF5KG4pO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbikge1xuICAgIHJlc3VsdFtpbmRleF0gPSBpdGVyYXRlZShpbmRleCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVGltZXM7XG4iLCAidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0FyZ3VtZW50c2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LFxuICovXG5mdW5jdGlvbiBiYXNlSXNBcmd1bWVudHModmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gYXJnc1RhZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNBcmd1bWVudHM7XG4iLCAidmFyIGJhc2VJc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vX2Jhc2VJc0FyZ3VtZW50cycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlID0gb2JqZWN0UHJvdG8ucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGFuIGBhcmd1bWVudHNgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcmd1bWVudHMoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0FyZ3VtZW50cyA9IGJhc2VJc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA/IGJhc2VJc0FyZ3VtZW50cyA6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdjYWxsZWUnKSAmJlxuICAgICFwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHZhbHVlLCAnY2FsbGVlJyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJndW1lbnRzO1xuIiwgIi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyBgZmFsc2VgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4xMy4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50aW1lcygyLCBfLnN0dWJGYWxzZSk7XG4gKiAvLyA9PiBbZmFsc2UsIGZhbHNlXVxuICovXG5mdW5jdGlvbiBzdHViRmFsc2UoKSB7XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdHViRmFsc2U7XG4iLCAidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290JyksXG4gICAgc3R1YkZhbHNlID0gcmVxdWlyZSgnLi9zdHViRmFsc2UnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBleHBvcnRzYC4gKi9cbnZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBtb2R1bGVgLiAqL1xudmFyIGZyZWVNb2R1bGUgPSBmcmVlRXhwb3J0cyAmJiB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblxuLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbnZhciBtb2R1bGVFeHBvcnRzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLmV4cG9ydHMgPT09IGZyZWVFeHBvcnRzO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBCdWZmZXIgPSBtb2R1bGVFeHBvcnRzID8gcm9vdC5CdWZmZXIgOiB1bmRlZmluZWQ7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVJc0J1ZmZlciA9IEJ1ZmZlciA/IEJ1ZmZlci5pc0J1ZmZlciA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMy4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlciwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQnVmZmVyKG5ldyBCdWZmZXIoMikpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNCdWZmZXIobmV3IFVpbnQ4QXJyYXkoMikpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQnVmZmVyID0gbmF0aXZlSXNCdWZmZXIgfHwgc3R1YkZhbHNlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQnVmZmVyO1xuIiwgIi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgdW5zaWduZWQgaW50ZWdlciB2YWx1ZXMuICovXG52YXIgcmVJc1VpbnQgPSAvXig/OjB8WzEtOV1cXGQqKSQvO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBpbmRleC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD1NQVhfU0FGRV9JTlRFR0VSXSBUaGUgdXBwZXIgYm91bmRzIG9mIGEgdmFsaWQgaW5kZXguXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGluZGV4LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzSW5kZXgodmFsdWUsIGxlbmd0aCkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgbGVuZ3RoID0gbGVuZ3RoID09IG51bGwgPyBNQVhfU0FGRV9JTlRFR0VSIDogbGVuZ3RoO1xuXG4gIHJldHVybiAhIWxlbmd0aCAmJlxuICAgICh0eXBlID09ICdudW1iZXInIHx8XG4gICAgICAodHlwZSAhPSAnc3ltYm9sJyAmJiByZUlzVWludC50ZXN0KHZhbHVlKSkpICYmXG4gICAgICAgICh2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDwgbGVuZ3RoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0luZGV4O1xuIiwgInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzTGVuZ3RoID0gcmVxdWlyZSgnLi9pc0xlbmd0aCcpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXScsXG4gICAgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nLFxuICAgIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsXG4gICAgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJyxcbiAgICBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXScsXG4gICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XScsXG4gICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXScsXG4gICAgd2Vha01hcFRhZyA9ICdbb2JqZWN0IFdlYWtNYXBdJztcblxudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJyxcbiAgICBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XScsXG4gICAgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJyxcbiAgICBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG5cbi8qKiBVc2VkIHRvIGlkZW50aWZ5IGB0b1N0cmluZ1RhZ2AgdmFsdWVzIG9mIHR5cGVkIGFycmF5cy4gKi9cbnZhciB0eXBlZEFycmF5VGFncyA9IHt9O1xudHlwZWRBcnJheVRhZ3NbZmxvYXQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1tmbG9hdDY0VGFnXSA9XG50eXBlZEFycmF5VGFnc1tpbnQ4VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2ludDE2VGFnXSA9XG50eXBlZEFycmF5VGFnc1tpbnQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50OFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbdWludDhDbGFtcGVkVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQxNlRhZ10gPVxudHlwZWRBcnJheVRhZ3NbdWludDMyVGFnXSA9IHRydWU7XG50eXBlZEFycmF5VGFnc1thcmdzVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2FycmF5VGFnXSA9XG50eXBlZEFycmF5VGFnc1thcnJheUJ1ZmZlclRhZ10gPSB0eXBlZEFycmF5VGFnc1tib29sVGFnXSA9XG50eXBlZEFycmF5VGFnc1tkYXRhVmlld1RhZ10gPSB0eXBlZEFycmF5VGFnc1tkYXRlVGFnXSA9XG50eXBlZEFycmF5VGFnc1tlcnJvclRhZ10gPSB0eXBlZEFycmF5VGFnc1tmdW5jVGFnXSA9XG50eXBlZEFycmF5VGFnc1ttYXBUYWddID0gdHlwZWRBcnJheVRhZ3NbbnVtYmVyVGFnXSA9XG50eXBlZEFycmF5VGFnc1tvYmplY3RUYWddID0gdHlwZWRBcnJheVRhZ3NbcmVnZXhwVGFnXSA9XG50eXBlZEFycmF5VGFnc1tzZXRUYWddID0gdHlwZWRBcnJheVRhZ3Nbc3RyaW5nVGFnXSA9XG50eXBlZEFycmF5VGFnc1t3ZWFrTWFwVGFnXSA9IGZhbHNlO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzVHlwZWRBcnJheWAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB0eXBlZCBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNUeXBlZEFycmF5KHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmXG4gICAgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhIXR5cGVkQXJyYXlUYWdzW2Jhc2VHZXRUYWcodmFsdWUpXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNUeXBlZEFycmF5O1xuIiwgIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5hcnlgIHdpdGhvdXQgc3VwcG9ydCBmb3Igc3RvcmluZyBtZXRhZGF0YS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2FwIGFyZ3VtZW50cyBmb3IuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjYXBwZWQgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VVbmFyeShmdW5jKSB7XG4gIHJldHVybiBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiBmdW5jKHZhbHVlKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVW5hcnk7XG4iLCAidmFyIGZyZWVHbG9iYWwgPSByZXF1aXJlKCcuL19mcmVlR2xvYmFsJyk7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbi8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG52YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBwcm9jZXNzYCBmcm9tIE5vZGUuanMuICovXG52YXIgZnJlZVByb2Nlc3MgPSBtb2R1bGVFeHBvcnRzICYmIGZyZWVHbG9iYWwucHJvY2VzcztcblxuLyoqIFVzZWQgdG8gYWNjZXNzIGZhc3RlciBOb2RlLmpzIGhlbHBlcnMuICovXG52YXIgbm9kZVV0aWwgPSAoZnVuY3Rpb24oKSB7XG4gIHRyeSB7XG4gICAgLy8gVXNlIGB1dGlsLnR5cGVzYCBmb3IgTm9kZS5qcyAxMCsuXG4gICAgdmFyIHR5cGVzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLnJlcXVpcmUgJiYgZnJlZU1vZHVsZS5yZXF1aXJlKCd1dGlsJykudHlwZXM7XG5cbiAgICBpZiAodHlwZXMpIHtcbiAgICAgIHJldHVybiB0eXBlcztcbiAgICB9XG5cbiAgICAvLyBMZWdhY3kgYHByb2Nlc3MuYmluZGluZygndXRpbCcpYCBmb3IgTm9kZS5qcyA8IDEwLlxuICAgIHJldHVybiBmcmVlUHJvY2VzcyAmJiBmcmVlUHJvY2Vzcy5iaW5kaW5nICYmIGZyZWVQcm9jZXNzLmJpbmRpbmcoJ3V0aWwnKTtcbiAgfSBjYXRjaCAoZSkge31cbn0oKSk7XG5cbm1vZHVsZS5leHBvcnRzID0gbm9kZVV0aWw7XG4iLCAidmFyIGJhc2VJc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL19iYXNlSXNUeXBlZEFycmF5JyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgbm9kZVV0aWwgPSByZXF1aXJlKCcuL19ub2RlVXRpbCcpO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc1R5cGVkQXJyYXkgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1R5cGVkQXJyYXk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIHR5cGVkIGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1R5cGVkQXJyYXkobmV3IFVpbnQ4QXJyYXkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KFtdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc1R5cGVkQXJyYXkgPSBub2RlSXNUeXBlZEFycmF5ID8gYmFzZVVuYXJ5KG5vZGVJc1R5cGVkQXJyYXkpIDogYmFzZUlzVHlwZWRBcnJheTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc1R5cGVkQXJyYXk7XG4iLCAidmFyIGJhc2VUaW1lcyA9IHJlcXVpcmUoJy4vX2Jhc2VUaW1lcycpLFxuICAgIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0J1ZmZlciA9IHJlcXVpcmUoJy4vaXNCdWZmZXInKSxcbiAgICBpc0luZGV4ID0gcmVxdWlyZSgnLi9faXNJbmRleCcpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5Jyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiB0aGUgYXJyYXktbGlrZSBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5oZXJpdGVkIFNwZWNpZnkgcmV0dXJuaW5nIGluaGVyaXRlZCBwcm9wZXJ0eSBuYW1lcy5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGFycmF5TGlrZUtleXModmFsdWUsIGluaGVyaXRlZCkge1xuICB2YXIgaXNBcnIgPSBpc0FycmF5KHZhbHVlKSxcbiAgICAgIGlzQXJnID0gIWlzQXJyICYmIGlzQXJndW1lbnRzKHZhbHVlKSxcbiAgICAgIGlzQnVmZiA9ICFpc0FyciAmJiAhaXNBcmcgJiYgaXNCdWZmZXIodmFsdWUpLFxuICAgICAgaXNUeXBlID0gIWlzQXJyICYmICFpc0FyZyAmJiAhaXNCdWZmICYmIGlzVHlwZWRBcnJheSh2YWx1ZSksXG4gICAgICBza2lwSW5kZXhlcyA9IGlzQXJyIHx8IGlzQXJnIHx8IGlzQnVmZiB8fCBpc1R5cGUsXG4gICAgICByZXN1bHQgPSBza2lwSW5kZXhlcyA/IGJhc2VUaW1lcyh2YWx1ZS5sZW5ndGgsIFN0cmluZykgOiBbXSxcbiAgICAgIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGg7XG5cbiAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgaWYgKChpbmhlcml0ZWQgfHwgaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwga2V5KSkgJiZcbiAgICAgICAgIShza2lwSW5kZXhlcyAmJiAoXG4gICAgICAgICAgIC8vIFNhZmFyaSA5IGhhcyBlbnVtZXJhYmxlIGBhcmd1bWVudHMubGVuZ3RoYCBpbiBzdHJpY3QgbW9kZS5cbiAgICAgICAgICAga2V5ID09ICdsZW5ndGgnIHx8XG4gICAgICAgICAgIC8vIE5vZGUuanMgMC4xMCBoYXMgZW51bWVyYWJsZSBub24taW5kZXggcHJvcGVydGllcyBvbiBidWZmZXJzLlxuICAgICAgICAgICAoaXNCdWZmICYmIChrZXkgPT0gJ29mZnNldCcgfHwga2V5ID09ICdwYXJlbnQnKSkgfHxcbiAgICAgICAgICAgLy8gUGhhbnRvbUpTIDIgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gdHlwZWQgYXJyYXlzLlxuICAgICAgICAgICAoaXNUeXBlICYmIChrZXkgPT0gJ2J1ZmZlcicgfHwga2V5ID09ICdieXRlTGVuZ3RoJyB8fCBrZXkgPT0gJ2J5dGVPZmZzZXQnKSkgfHxcbiAgICAgICAgICAgLy8gU2tpcCBpbmRleCBwcm9wZXJ0aWVzLlxuICAgICAgICAgICBpc0luZGV4KGtleSwgbGVuZ3RoKVxuICAgICAgICApKSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheUxpa2VLZXlzO1xuIiwgIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGEgcHJvdG90eXBlIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHByb3RvdHlwZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc1Byb3RvdHlwZSh2YWx1ZSkge1xuICB2YXIgQ3RvciA9IHZhbHVlICYmIHZhbHVlLmNvbnN0cnVjdG9yLFxuICAgICAgcHJvdG8gPSAodHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yLnByb3RvdHlwZSkgfHwgb2JqZWN0UHJvdG87XG5cbiAgcmV0dXJuIHZhbHVlID09PSBwcm90bztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1Byb3RvdHlwZTtcbiIsICIvKipcbiAqIENyZWF0ZXMgYSB1bmFyeSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggaXRzIGFyZ3VtZW50IHRyYW5zZm9ybWVkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtIFRoZSBhcmd1bWVudCB0cmFuc2Zvcm0uXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gb3ZlckFyZyhmdW5jLCB0cmFuc2Zvcm0pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiBmdW5jKHRyYW5zZm9ybShhcmcpKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBvdmVyQXJnO1xuIiwgInZhciBvdmVyQXJnID0gcmVxdWlyZSgnLi9fb3ZlckFyZycpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlS2V5cyA9IG92ZXJBcmcoT2JqZWN0LmtleXMsIE9iamVjdCk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlS2V5cztcbiIsICJ2YXIgaXNQcm90b3R5cGUgPSByZXF1aXJlKCcuL19pc1Byb3RvdHlwZScpLFxuICAgIG5hdGl2ZUtleXMgPSByZXF1aXJlKCcuL19uYXRpdmVLZXlzJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ua2V5c2Agd2hpY2ggZG9lc24ndCB0cmVhdCBzcGFyc2UgYXJyYXlzIGFzIGRlbnNlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBiYXNlS2V5cyhvYmplY3QpIHtcbiAgaWYgKCFpc1Byb3RvdHlwZShvYmplY3QpKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUtleXMob2JqZWN0KTtcbiAgfVxuICB2YXIgcmVzdWx0ID0gW107XG4gIGZvciAodmFyIGtleSBpbiBPYmplY3Qob2JqZWN0KSkge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSAmJiBrZXkgIT0gJ2NvbnN0cnVjdG9yJykge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlS2V5cztcbiIsICJ2YXIgYXJyYXlMaWtlS2V5cyA9IHJlcXVpcmUoJy4vX2FycmF5TGlrZUtleXMnKSxcbiAgICBiYXNlS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VLZXlzJyksXG4gICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuIFNlZSB0aGVcbiAqIFtFUyBzcGVjXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAqIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5rZXlzKG5ldyBGb28pO1xuICogLy8gPT4gWydhJywgJ2InXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICpcbiAqIF8ua2V5cygnaGknKTtcbiAqIC8vID0+IFsnMCcsICcxJ11cbiAqL1xuZnVuY3Rpb24ga2V5cyhvYmplY3QpIHtcbiAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCkgOiBiYXNlS2V5cyhvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGtleXM7XG4iLCAidmFyIGJhc2VWYWx1ZXMgPSByZXF1aXJlKCcuL19iYXNlVmFsdWVzJyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0eSB2YWx1ZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSB2YWx1ZXMuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8udmFsdWVzKG5ldyBGb28pO1xuICogLy8gPT4gWzEsIDJdIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gKlxuICogXy52YWx1ZXMoJ2hpJyk7XG4gKiAvLyA9PiBbJ2gnLCAnaSddXG4gKi9cbmZ1bmN0aW9uIHZhbHVlcyhvYmplY3QpIHtcbiAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gW10gOiBiYXNlVmFsdWVzKG9iamVjdCwga2V5cyhvYmplY3QpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB2YWx1ZXM7XG4iLCAidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLFxuICAgIGNvcHlBcnJheSA9IHJlcXVpcmUoJy4vX2NvcHlBcnJheScpLFxuICAgIGdldFRhZyA9IHJlcXVpcmUoJy4vX2dldFRhZycpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLFxuICAgIGlzU3RyaW5nID0gcmVxdWlyZSgnLi9pc1N0cmluZycpLFxuICAgIGl0ZXJhdG9yVG9BcnJheSA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9yVG9BcnJheScpLFxuICAgIG1hcFRvQXJyYXkgPSByZXF1aXJlKCcuL19tYXBUb0FycmF5JyksXG4gICAgc2V0VG9BcnJheSA9IHJlcXVpcmUoJy4vX3NldFRvQXJyYXknKSxcbiAgICBzdHJpbmdUb0FycmF5ID0gcmVxdWlyZSgnLi9fc3RyaW5nVG9BcnJheScpLFxuICAgIHZhbHVlcyA9IHJlcXVpcmUoJy4vdmFsdWVzJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3ltSXRlcmF0b3IgPSBTeW1ib2wgPyBTeW1ib2wuaXRlcmF0b3IgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhbiBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvQXJyYXkoeyAnYSc6IDEsICdiJzogMiB9KTtcbiAqIC8vID0+IFsxLCAyXVxuICpcbiAqIF8udG9BcnJheSgnYWJjJyk7XG4gKiAvLyA9PiBbJ2EnLCAnYicsICdjJ11cbiAqXG4gKiBfLnRvQXJyYXkoMSk7XG4gKiAvLyA9PiBbXVxuICpcbiAqIF8udG9BcnJheShudWxsKTtcbiAqIC8vID0+IFtdXG4gKi9cbmZ1bmN0aW9uIHRvQXJyYXkodmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBpZiAoaXNBcnJheUxpa2UodmFsdWUpKSB7XG4gICAgcmV0dXJuIGlzU3RyaW5nKHZhbHVlKSA/IHN0cmluZ1RvQXJyYXkodmFsdWUpIDogY29weUFycmF5KHZhbHVlKTtcbiAgfVxuICBpZiAoc3ltSXRlcmF0b3IgJiYgdmFsdWVbc3ltSXRlcmF0b3JdKSB7XG4gICAgcmV0dXJuIGl0ZXJhdG9yVG9BcnJheSh2YWx1ZVtzeW1JdGVyYXRvcl0oKSk7XG4gIH1cbiAgdmFyIHRhZyA9IGdldFRhZyh2YWx1ZSksXG4gICAgICBmdW5jID0gdGFnID09IG1hcFRhZyA/IG1hcFRvQXJyYXkgOiAodGFnID09IHNldFRhZyA/IHNldFRvQXJyYXkgOiB2YWx1ZXMpO1xuXG4gIHJldHVybiBmdW5jKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b0FycmF5O1xuIiwgIi8qanNsaW50IG5vZGU6IHRydWUqL1xudmFyIHRvQXJyYXkgPSByZXF1aXJlKCdsb2Rhc2gvdG9BcnJheScpO1xudmFyIGVtb2ppQnlOYW1lID0gcmVxdWlyZSgnLi9lbW9qaS5qc29uJyk7XG5cblwidXNlIHN0cmljdFwiO1xuXG4vKipcbiAqIHJlZ2V4IHRvIHBhcnNlIGVtb2ppIGluIGEgc3RyaW5nIC0gZmluZHMgZW1vamksIGUuZy4gOmNvZmZlZTpcbiAqL1xudmFyIGVtb2ppTmFtZVJlZ2V4ID0gLzooW2EtekEtWjAtOV9cXC1cXCtdKyk6L2c7XG5cbi8qKlxuICogcmVnZXggdG8gdHJpbSB3aGl0ZXNwYWNlXG4gKiB1c2UgaW5zdGVhZCBvZiBTdHJpbmcucHJvdG90eXBlLnRyaW0oKSBmb3IgSUU4IHN1cHBvcnRcbiAqL1xudmFyIHRyaW1TcGFjZVJlZ2V4ID0gL15bXFxzXFx1RkVGRlxceEEwXSt8W1xcc1xcdUZFRkZcXHhBMF0rJC9nO1xuXG4vKipcbiAqIFJlbW92ZXMgY29sb25zIG9uIGVpdGhlciBzaWRlXG4gKiBvZiB0aGUgc3RyaW5nIGlmIHByZXNlbnRcbiAqIEBwYXJhbSAge3N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIHN0cmlwQ29sb25zIChzdHIpIHtcbiAgdmFyIGNvbG9uSW5kZXggPSBzdHIuaW5kZXhPZignOicpO1xuICBpZiAoY29sb25JbmRleCA+IC0xKSB7XG4gICAgLy8gOmVtb2ppOiAoaHR0cDovL3d3dy5lbW9qaS1jaGVhdC1zaGVldC5jb20vKVxuICAgIGlmIChjb2xvbkluZGV4ID09PSBzdHIubGVuZ3RoIC0gMSkge1xuICAgICAgc3RyID0gc3RyLnN1YnN0cmluZygwLCBjb2xvbkluZGV4KTtcbiAgICAgIHJldHVybiBzdHJpcENvbG9ucyhzdHIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHIgPSBzdHIuc3Vic3RyKGNvbG9uSW5kZXggKyAxKTtcbiAgICAgIHJldHVybiBzdHJpcENvbG9ucyhzdHIpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdHI7XG59XG5cbi8qKlxuICogQWRkcyBjb2xvbnMgdG8gZWl0aGVyIHNpZGVcbiAqIG9mIHRoZSBzdHJpbmdcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gd3JhcENvbG9ucyAoc3RyKSB7XG4gIHJldHVybiAodHlwZW9mIHN0ciA9PT0gJ3N0cmluZycgJiYgc3RyLmxlbmd0aCA+IDApID8gJzonICsgc3RyICsgJzonIDogc3RyO1xufVxuXG4vKipcbiAqIEVuc3VyZSB0aGF0IHRoZSB3b3JkIGlzIHdyYXBwZWQgaW4gY29sb25zXG4gKiBieSBvbmx5IGFkZGluZyB0aGVtLCBpZiB0aGV5IGFyZSBub3QgdGhlcmUuXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGVuc3VyZUNvbG9ucyAoc3RyKSB7XG4gIHJldHVybiAodHlwZW9mIHN0ciA9PT0gJ3N0cmluZycgJiYgc3RyWzBdICE9PSAnOicpID8gd3JhcENvbG9ucyhzdHIpIDogc3RyO1xufVxuXG4vLyBOb24gc3BhY2luZyBtYXJrLCBzb21lIGVtb3RpY29ucyBoYXZlIHRoZW0uIEl0J3MgdGhlICdWYXJpYW50IEZvcm0nLFxuLy8gd2hpY2ggcHJvdmlkZXMgbW9yZSBpbmZvcm1hdGlvbiBzbyB0aGF0IGVtb3RpY29ucyBjYW4gYmUgcmVuZGVyZWQgYXNcbi8vIG1vcmUgY29sb3JmdWwgZ3JhcGhpY3MuIEZFMEUgaXMgYSB1bmljb2RlIHRleHQgdmVyc2lvbiwgd2hlcmUgYXMgRkUwRlxuLy8gc2hvdWxkIGJlIHJlbmRlcmVkIGFzIGEgZ3JhcGhpY2FsIHZlcnNpb24uIFRoZSBjb2RlIGdyYWNlZnVsbHkgZGVncmFkZXMuXG52YXIgTk9OX1NQQUNJTkdfTUFSSyA9IFN0cmluZy5mcm9tQ2hhckNvZGUoNjUwMzkpOyAvLyA2NTAzOSAtICdcdUZFMEYnIC0gMHhGRTBGO1xudmFyIG5vblNwYWNpbmdSZWdleCA9IG5ldyBSZWdFeHAoTk9OX1NQQUNJTkdfTUFSSywgJ2cnKVxuXG4vLyBSZW1vdmUgdGhlIG5vbi1zcGFjaW5nLW1hcmsgZnJvbSB0aGUgY29kZSwgbmV2ZXIgc2VuZCBhIHN0cmlwcGVkIHZlcnNpb25cbi8vIHRvIHRoZSBjbGllbnQsIGFzIGl0IGtpbGxzIGdyYXBoaWNhbCBlbW90aWNvbnMuXG5mdW5jdGlvbiBzdHJpcE5TQiAoY29kZSkge1xuICByZXR1cm4gY29kZS5yZXBsYWNlKG5vblNwYWNpbmdSZWdleCwgJycpO1xufTtcblxuLy8gUmV2ZXJzZWQgaGFzaCB0YWJsZSwgd2hlcmUgYXMgZW1vamlCeU5hbWUgY29udGFpbnMgYSB7IGhlYXJ0OiAnXHUyNzY0JyB9XG4vLyBkaWN0aW9uYXJ5IGVtb2ppQnlDb2RlIGNvbnRhaW5zIHsgXHUyNzY0OiAnaGVhcnQnIH0uIFRoZSBjb2RlcyBhcmUgbm9ybWFsaXplZFxuLy8gdG8gdGhlIHRleHQgdmVyc2lvbi5cbnZhciBlbW9qaUJ5Q29kZSA9IE9iamVjdC5rZXlzKGVtb2ppQnlOYW1lKS5yZWR1Y2UoZnVuY3Rpb24oaCxrKSB7XG4gIGhbc3RyaXBOU0IoZW1vamlCeU5hbWVba10pXSA9IGs7XG4gIHJldHVybiBoO1xufSwge30pO1xuXG4vKipcbiAqIEVtb2ppIG5hbWVzcGFjZVxuICovXG52YXIgRW1vamkgPSB7XG4gIGVtb2ppOiBlbW9qaUJ5TmFtZSxcbn07XG5cbi8qKlxuICogZ2V0IGVtb2ppIGNvZGUgZnJvbSBuYW1lLiByZXR1cm4gZW1vamkgY29kZSBiYWNrIGlmIGNvZGUgaXMgcGFzc2VkIGluLlxuICogQHBhcmFtICB7c3RyaW5nfSBlbW9qaVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5FbW9qaS5fZ2V0ID0gZnVuY3Rpb24gX2dldCAoZW1vamkpIHtcbiAgaWYgKGVtb2ppQnlDb2RlW3N0cmlwTlNCKGVtb2ppKV0pIHtcbiAgICByZXR1cm4gZW1vamk7XG4gIH0gZWxzZSBpZiAoZW1vamlCeU5hbWUuaGFzT3duUHJvcGVydHkoZW1vamkpKSB7XG4gICAgcmV0dXJuIGVtb2ppQnlOYW1lW2Vtb2ppXTtcbiAgfVxuXG4gIHJldHVybiBlbnN1cmVDb2xvbnMoZW1vamkpO1xufTtcblxuLyoqXG4gKiBnZXQgZW1vamkgY29kZSBmcm9tIDplbW9qaTogc3RyaW5nIG9yIG5hbWVcbiAqIEBwYXJhbSAge3N0cmluZ30gZW1vamlcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuRW1vamkuZ2V0ID0gZnVuY3Rpb24gZ2V0IChlbW9qaSkge1xuICBlbW9qaSA9IHN0cmlwQ29sb25zKGVtb2ppKTtcblxuICByZXR1cm4gRW1vamkuX2dldChlbW9qaSk7XG59O1xuXG4vKipcbiAqIGZpbmQgdGhlIGVtb2ppIGJ5IGVpdGhlciBjb2RlIG9yIG5hbWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lT3JDb2RlIFRoZSBlbW9qaSB0byBmaW5kLCBlaXRoZXIgYGNvZmZlZWAsIGA6Y29mZmVlOmAgb3IgYFx1MjYxNWA7XG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbkVtb2ppLmZpbmQgPSBmdW5jdGlvbiBmaW5kIChuYW1lT3JDb2RlKSB7XG4gIHJldHVybiBFbW9qaS5maW5kQnlOYW1lKG5hbWVPckNvZGUpIHx8IEVtb2ppLmZpbmRCeUNvZGUobmFtZU9yQ29kZSk7XG59O1xuXG4vKipcbiAqIGZpbmQgdGhlIGVtb2ppIGJ5IG5hbWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBlbW9qaSB0byBmaW5kIGVpdGhlciBgY29mZmVlYCBvciBgOmNvZmZlZTpgO1xuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5FbW9qaS5maW5kQnlOYW1lID0gZnVuY3Rpb24gZmluZEJ5TmFtZSAobmFtZSkge1xuICB2YXIgc3RyaXBwZWQgPSBzdHJpcENvbG9ucyhuYW1lKTtcbiAgdmFyIGVtb2ppID0gZW1vamlCeU5hbWVbc3RyaXBwZWRdO1xuXG4gIHJldHVybiBlbW9qaSA/ICh7IGVtb2ppOiBlbW9qaSwga2V5OiBzdHJpcHBlZCB9KSA6IHVuZGVmaW5lZDtcbn07XG5cbi8qKlxuICogZmluZCB0aGUgZW1vamkgYnkgY29kZSAoZW1vamkpXG4gKiBAcGFyYW0ge3N0cmluZ30gY29kZSBUaGUgZW1vamkgdG8gZmluZDsgZm9yIGV4YW1wbGUgYFx1MjYxNWAgb3IgYFx1MjYxNGBcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuRW1vamkuZmluZEJ5Q29kZSA9IGZ1bmN0aW9uIGZpbmRCeUNvZGUgKGNvZGUpIHtcbiAgdmFyIHN0cmlwcGVkID0gc3RyaXBOU0IoY29kZSk7XG4gIHZhciBuYW1lID0gZW1vamlCeUNvZGVbc3RyaXBwZWRdO1xuXG4gIC8vIGxvb2t1cCBlbW9qaSB0byBlbnN1cmUgdGhlIFZhcmlhbnQgRm9ybSBpcyByZXR1cm5lZFxuICByZXR1cm4gbmFtZSA/ICh7IGVtb2ppOiBlbW9qaUJ5TmFtZVtuYW1lXSwga2V5OiBuYW1lIH0pIDogdW5kZWZpbmVkO1xufTtcblxuXG4vKipcbiAqIENoZWNrIGlmIGFuIGVtb2ppIGlzIGtub3duIGJ5IHRoaXMgbGlicmFyeVxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVPckNvZGUgVGhlIGVtb2ppIHRvIHZhbGlkYXRlLCBlaXRoZXIgYGNvZmZlZWAsIGA6Y29mZmVlOmAgb3IgYFx1MjYxNWA7XG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbkVtb2ppLmhhc0Vtb2ppID0gZnVuY3Rpb24gaGFzRW1vamkgKG5hbWVPckNvZGUpIHtcbiAgcmV0dXJuIEVtb2ppLmhhc0Vtb2ppQnlOYW1lKG5hbWVPckNvZGUpIHx8IEVtb2ppLmhhc0Vtb2ppQnlDb2RlKG5hbWVPckNvZGUpO1xufTtcblxuLyoqXG4gKiBDaGVjayBpZiBhbiBlbW9qaSB3aXRoIGdpdmVuIG5hbWUgaXMga25vd24gYnkgdGhpcyBsaWJyYXJ5XG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgZW1vamkgdG8gdmFsaWRhdGUgZWl0aGVyIGBjb2ZmZWVgIG9yIGA6Y29mZmVlOmA7XG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbkVtb2ppLmhhc0Vtb2ppQnlOYW1lID0gZnVuY3Rpb24gaGFzRW1vamlCeU5hbWUgKG5hbWUpIHtcbiAgdmFyIHJlc3VsdCA9IEVtb2ppLmZpbmRCeU5hbWUobmFtZSk7XG4gIHJldHVybiAhIXJlc3VsdCAmJiByZXN1bHQua2V5ID09PSBzdHJpcENvbG9ucyhuYW1lKTtcbn07XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBnaXZlbiBlbW9qaSBpcyBrbm93biBieSB0aGlzIGxpYnJhcnlcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb2RlIFRoZSBlbW9qaSB0byB2YWxpZGF0ZTsgZm9yIGV4YW1wbGUgYFx1MjYxNWAgb3IgYFx1MjYxNGBcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuRW1vamkuaGFzRW1vamlCeUNvZGUgPSBmdW5jdGlvbiBoYXNFbW9qaUJ5Q29kZSAoY29kZSkge1xuICB2YXIgcmVzdWx0ID0gRW1vamkuZmluZEJ5Q29kZShjb2RlKTtcbiAgcmV0dXJuICEhcmVzdWx0ICYmIHN0cmlwTlNCKHJlc3VsdC5lbW9qaSkgPT09IHN0cmlwTlNCKGNvZGUpO1xufTtcblxuLyoqXG4gKiBnZXQgZW1vamkgbmFtZSBmcm9tIGNvZGVcbiAqIEBwYXJhbSAge3N0cmluZ30gZW1vamlcbiAqIEBwYXJhbSAge2Jvb2xlYW59IGluY2x1ZGVDb2xvbnMgc2hvdWxkIHRoZSByZXN1bHQgaW5jbHVkZSB0aGUgOjpcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuRW1vamkud2hpY2ggPSBmdW5jdGlvbiB3aGljaCAoZW1vamlfY29kZSwgaW5jbHVkZUNvbG9ucykge1xuICB2YXIgY29kZSA9IHN0cmlwTlNCKGVtb2ppX2NvZGUpO1xuICB2YXIgd29yZCA9IGVtb2ppQnlDb2RlW2NvZGVdO1xuXG4gIHJldHVybiBpbmNsdWRlQ29sb25zID8gd3JhcENvbG9ucyh3b3JkKSA6IHdvcmQ7XG59O1xuXG4vKipcbiAqIGVtb2ppZnkgYSBzdHJpbmcgKHJlcGxhY2UgOmVtb2ppOiB3aXRoIGFuIGVtb2ppKVxuICogQHBhcmFtICB7c3RyaW5nfSBzdHJcbiAqIEBwYXJhbSAge2Z1bmN0aW9ufSBvbl9taXNzaW5nIChnZXRzIGVtb2ppIG5hbWUgd2l0aG91dCA6OiBhbmQgcmV0dXJucyBhIHByb3BlciBlbW9qaSBpZiBubyBlbW9qaSB3YXMgZm91bmQpXG4gKiBAcGFyYW0gIHtmdW5jdGlvbn0gZm9ybWF0ICh3cmFwIHRoZSByZXR1cm5lZCBlbW9qaSBpbiBhIGN1c3RvbSBlbGVtZW50KVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5FbW9qaS5lbW9qaWZ5ID0gZnVuY3Rpb24gZW1vamlmeSAoc3RyLCBvbl9taXNzaW5nLCBmb3JtYXQpIHtcbiAgaWYgKCFzdHIpIHJldHVybiAnJztcblxuICByZXR1cm4gc3RyLnNwbGl0KGVtb2ppTmFtZVJlZ2V4KSAvLyBwYXJzZSBlbW9qaSB2aWEgcmVnZXhcbiAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gcGFyc2VFbW9qaShzLCBpKSB7XG4gICAgICAgICAgICAgIC8vIGV2ZXJ5IHNlY29uZCBlbGVtZW50IGlzIGFuIGVtb2ppLCBlLmcuIFwidGVzdCA6ZmFzdF9mb3J3YXJkOlwiIC0+IFsgXCJ0ZXN0IFwiLCBcImZhc3RfZm9yd2FyZFwiIF1cbiAgICAgICAgICAgICAgaWYgKGkgJSAyID09PSAwKSByZXR1cm4gcztcbiAgICAgICAgICAgICAgdmFyIGVtb2ppID0gRW1vamkuX2dldChzKTtcbiAgICAgICAgICAgICAgdmFyIGlzTWlzc2luZyA9IGVtb2ppLmluZGV4T2YoJzonKSA+IC0xO1xuXG4gICAgICAgICAgICAgIGlmIChpc01pc3NpbmcgJiYgdHlwZW9mIG9uX21pc3NpbmcgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb25fbWlzc2luZyhzKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICghaXNNaXNzaW5nICYmIHR5cGVvZiBmb3JtYXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0KGVtb2ppLCBzKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBlbW9qaTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuam9pbignJykgLy8gY29udmVydCBiYWNrIHRvIHN0cmluZ1xuICA7XG59O1xuXG4vKipcbiAqIHJldHVybiBhIHJhbmRvbSBlbW9qaVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5FbW9qaS5yYW5kb20gPSBmdW5jdGlvbiByYW5kb20gKCkge1xuICB2YXIgZW1vamlLZXlzID0gT2JqZWN0LmtleXMoZW1vamlCeU5hbWUpO1xuICB2YXIgcmFuZG9tSW5kZXggPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBlbW9qaUtleXMubGVuZ3RoKTtcbiAgdmFyIGtleSA9IGVtb2ppS2V5c1tyYW5kb21JbmRleF07XG4gIHZhciBlbW9qaSA9IEVtb2ppLl9nZXQoa2V5KTtcbiAgcmV0dXJuIHsga2V5OiBrZXksIGVtb2ppOiBlbW9qaSB9O1xufVxuXG4vKipcbiAqICByZXR1cm4gYW4gY29sbGVjdGlvbiBvZiBwb3RlbnRpYWwgZW1vamkgbWF0Y2hlc1xuICogIEBwYXJhbSB7c3RyaW5nfSBzdHJcbiAqICBAcmV0dXJuIHtBcnJheS48T2JqZWN0Pn1cbiAqL1xuRW1vamkuc2VhcmNoID0gZnVuY3Rpb24gc2VhcmNoIChzdHIpIHtcbiAgdmFyIGVtb2ppS2V5cyA9IE9iamVjdC5rZXlzKGVtb2ppQnlOYW1lKTtcbiAgdmFyIG1hdGNoZXIgPSBzdHJpcENvbG9ucyhzdHIpXG4gIHZhciBtYXRjaGluZ0tleXMgPSBlbW9qaUtleXMuZmlsdGVyKGZ1bmN0aW9uKGtleSkge1xuICAgIHJldHVybiBrZXkudG9TdHJpbmcoKS5pbmRleE9mKG1hdGNoZXIpID09PSAwO1xuICB9KTtcbiAgcmV0dXJuIG1hdGNoaW5nS2V5cy5tYXAoZnVuY3Rpb24oa2V5KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtleToga2V5LFxuICAgICAgZW1vamk6IEVtb2ppLl9nZXQoa2V5KSxcbiAgICB9O1xuICB9KTtcbn1cblxuLyoqXG4gKiB1bmVtb2ppZnkgYSBzdHJpbmcgKHJlcGxhY2UgZW1vamkgd2l0aCA6ZW1vamk6KVxuICogQHBhcmFtICB7c3RyaW5nfSBzdHJcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuRW1vamkudW5lbW9qaWZ5ID0gZnVuY3Rpb24gdW5lbW9qaWZ5IChzdHIpIHtcbiAgaWYgKCFzdHIpIHJldHVybiAnJztcbiAgdmFyIHdvcmRzID0gdG9BcnJheShzdHIpO1xuXG4gIHJldHVybiB3b3Jkcy5tYXAoZnVuY3Rpb24od29yZCkge1xuICAgIHJldHVybiBFbW9qaS53aGljaCh3b3JkLCB0cnVlKSB8fCB3b3JkO1xuICB9KS5qb2luKCcnKTtcbn07XG5cbi8qKlxuICogcmVwbGFjZSBlbW9qaXMgd2l0aCByZXBsYWNlbWVudCB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0clxuICogQHBhcmFtIHtmdW5jdGlvbnxzdHJpbmd9IHRoZSBzdHJpbmcgb3IgY2FsbGJhY2sgZnVuY3Rpb24gdG8gcmVwbGFjZSB0aGUgZW1vamkgd2l0aFxuICogQHBhcmFtIHtib29sZWFufSBzaG91bGQgdHJhaWxpbmcgd2hpdGVzcGFjZXMgYmUgY2xlYW5lZD8gRGVmYXVsdHMgZmFsc2VcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuRW1vamkucmVwbGFjZSA9IGZ1bmN0aW9uIHJlcGxhY2UgKHN0ciwgcmVwbGFjZW1lbnQsIGNsZWFuU3BhY2VzKSB7XG4gIGlmICghc3RyKSByZXR1cm4gJyc7XG5cbiAgdmFyIHJlcGxhY2UgPSB0eXBlb2YgcmVwbGFjZW1lbnQgPT09ICdmdW5jdGlvbicgPyByZXBsYWNlbWVudCA6IGZ1bmN0aW9uKCkgeyByZXR1cm4gcmVwbGFjZW1lbnQ7IH07XG4gIHZhciB3b3JkcyA9IHRvQXJyYXkoc3RyKTtcblxuICB2YXIgcmVwbGFjZWQgPSB3b3Jkcy5tYXAoZnVuY3Rpb24od29yZCwgaWR4KSB7XG4gICAgdmFyIGVtb2ppID0gRW1vamkuZmluZEJ5Q29kZSh3b3JkKTtcblxuICAgIGlmIChlbW9qaSAmJiBjbGVhblNwYWNlcyAmJiB3b3Jkc1tpZHggKyAxXSA9PT0gJyAnKSB7XG4gICAgICB3b3Jkc1tpZHggKyAxXSA9ICcnO1xuICAgIH1cblxuICAgIHJldHVybiBlbW9qaSA/IHJlcGxhY2UoZW1vamkpIDogd29yZDtcbiAgfSkuam9pbignJyk7XG5cbiAgcmV0dXJuIGNsZWFuU3BhY2VzID8gcmVwbGFjZWQucmVwbGFjZSh0cmltU3BhY2VSZWdleCwgJycpIDogcmVwbGFjZWQ7XG59O1xuXG5cbi8qKlxuICogcmVtb3ZlIGFsbCBlbW9qaXMgZnJvbSBhIHN0cmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IHN0clxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5FbW9qaS5zdHJpcCA9IGZ1bmN0aW9uIHN0cmlwIChzdHIpIHtcbiAgcmV0dXJuIEVtb2ppLnJlcGxhY2Uoc3RyLCAnJywgdHJ1ZSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEVtb2ppO1xuIiwgIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvZW1vamknKTsiLCAiLyohXG4gIENvcHlyaWdodCAoYykgMjAxOCBKZWQgV2F0c29uLlxuICBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UgKE1JVCksIHNlZVxuICBodHRwOi8vamVkd2F0c29uLmdpdGh1Yi5pby9jbGFzc25hbWVzXG4qL1xuLyogZ2xvYmFsIGRlZmluZSAqL1xuXG4oZnVuY3Rpb24gKCkge1xuXHQndXNlIHN0cmljdCc7XG5cblx0dmFyIGhhc093biA9IHt9Lmhhc093blByb3BlcnR5O1xuXG5cdGZ1bmN0aW9uIGNsYXNzTmFtZXMoKSB7XG5cdFx0dmFyIGNsYXNzZXMgPSBbXTtcblxuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgYXJnID0gYXJndW1lbnRzW2ldO1xuXHRcdFx0aWYgKCFhcmcpIGNvbnRpbnVlO1xuXG5cdFx0XHR2YXIgYXJnVHlwZSA9IHR5cGVvZiBhcmc7XG5cblx0XHRcdGlmIChhcmdUeXBlID09PSAnc3RyaW5nJyB8fCBhcmdUeXBlID09PSAnbnVtYmVyJykge1xuXHRcdFx0XHRjbGFzc2VzLnB1c2goYXJnKTtcblx0XHRcdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG5cdFx0XHRcdGlmIChhcmcubGVuZ3RoKSB7XG5cdFx0XHRcdFx0dmFyIGlubmVyID0gY2xhc3NOYW1lcy5hcHBseShudWxsLCBhcmcpO1xuXHRcdFx0XHRcdGlmIChpbm5lcikge1xuXHRcdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGlubmVyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoYXJnVHlwZSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0aWYgKGFyZy50b1N0cmluZyA9PT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZykge1xuXHRcdFx0XHRcdGZvciAodmFyIGtleSBpbiBhcmcpIHtcblx0XHRcdFx0XHRcdGlmIChoYXNPd24uY2FsbChhcmcsIGtleSkgJiYgYXJnW2tleV0pIHtcblx0XHRcdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGtleSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNsYXNzZXMucHVzaChhcmcudG9TdHJpbmcoKSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gY2xhc3Nlcy5qb2luKCcgJyk7XG5cdH1cblxuXHRpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcblx0XHRjbGFzc05hbWVzLmRlZmF1bHQgPSBjbGFzc05hbWVzO1xuXHRcdG1vZHVsZS5leHBvcnRzID0gY2xhc3NOYW1lcztcblx0fSBlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBkZWZpbmUuYW1kID09PSAnb2JqZWN0JyAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gcmVnaXN0ZXIgYXMgJ2NsYXNzbmFtZXMnLCBjb25zaXN0ZW50IHdpdGggbnBtIHBhY2thZ2UgbmFtZVxuXHRcdGRlZmluZSgnY2xhc3NuYW1lcycsIFtdLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRyZXR1cm4gY2xhc3NOYW1lcztcblx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHR3aW5kb3cuY2xhc3NOYW1lcyA9IGNsYXNzTmFtZXM7XG5cdH1cbn0oKSk7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiBmb3IgZXhoYXVzdGl2ZSBjaGVja3Mgb2YgZGlzY3JpbWluYXRlZCB1bmlvbnMuXG4gKiBodHRwczovL2Jhc2FyYXQuZ2l0Ym9va3MuaW8vdHlwZXNjcmlwdC9kb2NzL3R5cGVzL2Rpc2NyaW1pbmF0ZWQtdW5pb25zLmh0bWxcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqICAgIHR5cGUgQSA9IHt0eXBlOiAnYSd9O1xuICogICAgdHlwZSBCID0ge3R5cGU6ICdiJ307XG4gKiAgICB0eXBlIFVuaW9uID0gQSB8IEI7XG4gKlxuICogICAgZnVuY3Rpb24gZG9Tb21ldGhpbmcoYXJnOiBVbmlvbikge1xuICogICAgICBpZiAoYXJnLnR5cGUgPT09ICdhJykge1xuICogICAgICAgIHJldHVybiBzb21ldGhpbmc7XG4gKiAgICAgIH1cbiAqXG4gKiAgICAgIGlmIChhcmcudHlwZSA9PT0gJ2InKSB7XG4gKiAgICAgICAgcmV0dXJuIHNvbWV0aGluZ0Vsc2U7XG4gKiAgICAgIH1cbiAqXG4gKiAgICAgIC8vIFRTIHdpbGwgZXJyb3IgaWYgdGhlcmUgYXJlIG90aGVyIHR5cGVzIGluIHRoZSB1bmlvblxuICogICAgICAvLyBXaWxsIHRocm93IGFuIEVycm9yIHdoZW4gY2FsbGVkIGF0IHJ1bnRpbWUuXG4gKiAgICAgIC8vIFVzZSBgYXNzZXJ0TmV2ZXIoYXJnLCB0cnVlKWAgaW5zdGVhZCB0byBmYWlsIHNpbGVudGx5LlxuICogICAgICByZXR1cm4gYXNzZXJ0TmV2ZXIoYXJnKTtcbiAqICAgIH1cbiAqL1xuZnVuY3Rpb24gYXNzZXJ0TmV2ZXIodmFsdWUsIG5vVGhyb3cpIHtcbiAgICBpZiAobm9UaHJvdykge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihcIlVuaGFuZGxlZCBkaXNjcmltaW5hdGVkIHVuaW9uIG1lbWJlcjogXCIgKyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xufVxuZXhwb3J0cy5hc3NlcnROZXZlciA9IGFzc2VydE5ldmVyO1xuZXhwb3J0cy5kZWZhdWx0ID0gYXNzZXJ0TmV2ZXI7XG4iLCAiLyohXG5cbkpTWmlwIHYzLjEwLjAgLSBBIEphdmFTY3JpcHQgY2xhc3MgZm9yIGdlbmVyYXRpbmcgYW5kIHJlYWRpbmcgemlwIGZpbGVzXG48aHR0cDovL3N0dWFydGsuY29tL2pzemlwPlxuXG4oYykgMjAwOS0yMDE2IFN0dWFydCBLbmlnaHRsZXkgPHN0dWFydCBbYXRdIHN0dWFydGsuY29tPlxuRHVhbCBsaWNlbmNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2Ugb3IgR1BMdjMuIFNlZSBodHRwczovL3Jhdy5naXRodWIuY29tL1N0dWsvanN6aXAvbWFpbi9MSUNFTlNFLm1hcmtkb3duLlxuXG5KU1ppcCB1c2VzIHRoZSBsaWJyYXJ5IHBha28gcmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIDpcbmh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlY2EvcGFrby9ibG9iL21haW4vTElDRU5TRVxuKi9cblxuIWZ1bmN0aW9uKGUpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlKW1vZHVsZS5leHBvcnRzPWUoKTtlbHNlIGlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZClkZWZpbmUoW10sZSk7ZWxzZXsoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHNlbGY/c2VsZjp0aGlzKS5KU1ppcD1lKCl9fShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBzKGEsbyxoKXtmdW5jdGlvbiB1KHIsZSl7aWYoIW9bcl0pe2lmKCFhW3JdKXt2YXIgdD1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFlJiZ0KXJldHVybiB0KHIsITApO2lmKGwpcmV0dXJuIGwociwhMCk7dmFyIG49bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIityK1wiJ1wiKTt0aHJvdyBuLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsbn12YXIgaT1vW3JdPXtleHBvcnRzOnt9fTthW3JdWzBdLmNhbGwoaS5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciB0PWFbcl1bMV1bZV07cmV0dXJuIHUodHx8ZSl9LGksaS5leHBvcnRzLHMsYSxvLGgpfXJldHVybiBvW3JdLmV4cG9ydHN9Zm9yKHZhciBsPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmUsZT0wO2U8aC5sZW5ndGg7ZSsrKXUoaFtlXSk7cmV0dXJuIHV9KHsxOltmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGQ9ZShcIi4vdXRpbHNcIiksYz1lKFwiLi9zdXBwb3J0XCIpLHA9XCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPVwiO3IuZW5jb2RlPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyLG4saSxzLGEsbyxoPVtdLHU9MCxsPWUubGVuZ3RoLGY9bCxjPVwic3RyaW5nXCIhPT1kLmdldFR5cGVPZihlKTt1PGUubGVuZ3RoOylmPWwtdSxuPWM/KHQ9ZVt1KytdLHI9dTxsP2VbdSsrXTowLHU8bD9lW3UrK106MCk6KHQ9ZS5jaGFyQ29kZUF0KHUrKykscj11PGw/ZS5jaGFyQ29kZUF0KHUrKyk6MCx1PGw/ZS5jaGFyQ29kZUF0KHUrKyk6MCksaT10Pj4yLHM9KDMmdCk8PDR8cj4+NCxhPTE8Zj8oMTUmcik8PDJ8bj4+Njo2NCxvPTI8Zj82MyZuOjY0LGgucHVzaChwLmNoYXJBdChpKStwLmNoYXJBdChzKStwLmNoYXJBdChhKStwLmNoYXJBdChvKSk7cmV0dXJuIGguam9pbihcIlwiKX0sci5kZWNvZGU9ZnVuY3Rpb24oZSl7dmFyIHQscixuLGkscyxhLG89MCxoPTAsdT1cImRhdGE6XCI7aWYoZS5zdWJzdHIoMCx1Lmxlbmd0aCk9PT11KXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYmFzZTY0IGlucHV0LCBpdCBsb29rcyBsaWtlIGEgZGF0YSB1cmwuXCIpO3ZhciBsLGY9MyooZT1lLnJlcGxhY2UoL1teQS1aYS16MC05XFwrXFwvXFw9XS9nLFwiXCIpKS5sZW5ndGgvNDtpZihlLmNoYXJBdChlLmxlbmd0aC0xKT09PXAuY2hhckF0KDY0KSYmZi0tLGUuY2hhckF0KGUubGVuZ3RoLTIpPT09cC5jaGFyQXQoNjQpJiZmLS0sZiUxIT0wKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYmFzZTY0IGlucHV0LCBiYWQgY29udGVudCBsZW5ndGguXCIpO2ZvcihsPWMudWludDhhcnJheT9uZXcgVWludDhBcnJheSgwfGYpOm5ldyBBcnJheSgwfGYpO288ZS5sZW5ndGg7KXQ9cC5pbmRleE9mKGUuY2hhckF0KG8rKykpPDwyfChpPXAuaW5kZXhPZihlLmNoYXJBdChvKyspKSk+PjQscj0oMTUmaSk8PDR8KHM9cC5pbmRleE9mKGUuY2hhckF0KG8rKykpKT4+MixuPSgzJnMpPDw2fChhPXAuaW5kZXhPZihlLmNoYXJBdChvKyspKSksbFtoKytdPXQsNjQhPT1zJiYobFtoKytdPXIpLDY0IT09YSYmKGxbaCsrXT1uKTtyZXR1cm4gbH19LHtcIi4vc3VwcG9ydFwiOjMwLFwiLi91dGlsc1wiOjMyfV0sMjpbZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPWUoXCIuL2V4dGVybmFsXCIpLGk9ZShcIi4vc3RyZWFtL0RhdGFXb3JrZXJcIikscz1lKFwiLi9zdHJlYW0vQ3JjMzJQcm9iZVwiKSxhPWUoXCIuL3N0cmVhbS9EYXRhTGVuZ3RoUHJvYmVcIik7ZnVuY3Rpb24gbyhlLHQscixuLGkpe3RoaXMuY29tcHJlc3NlZFNpemU9ZSx0aGlzLnVuY29tcHJlc3NlZFNpemU9dCx0aGlzLmNyYzMyPXIsdGhpcy5jb21wcmVzc2lvbj1uLHRoaXMuY29tcHJlc3NlZENvbnRlbnQ9aX1vLnByb3RvdHlwZT17Z2V0Q29udGVudFdvcmtlcjpmdW5jdGlvbigpe3ZhciBlPW5ldyBpKG4uUHJvbWlzZS5yZXNvbHZlKHRoaXMuY29tcHJlc3NlZENvbnRlbnQpKS5waXBlKHRoaXMuY29tcHJlc3Npb24udW5jb21wcmVzc1dvcmtlcigpKS5waXBlKG5ldyBhKFwiZGF0YV9sZW5ndGhcIikpLHQ9dGhpcztyZXR1cm4gZS5vbihcImVuZFwiLGZ1bmN0aW9uKCl7aWYodGhpcy5zdHJlYW1JbmZvLmRhdGFfbGVuZ3RoIT09dC51bmNvbXByZXNzZWRTaXplKXRocm93IG5ldyBFcnJvcihcIkJ1ZyA6IHVuY29tcHJlc3NlZCBkYXRhIHNpemUgbWlzbWF0Y2hcIil9KSxlfSxnZXRDb21wcmVzc2VkV29ya2VyOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBpKG4uUHJvbWlzZS5yZXNvbHZlKHRoaXMuY29tcHJlc3NlZENvbnRlbnQpKS53aXRoU3RyZWFtSW5mbyhcImNvbXByZXNzZWRTaXplXCIsdGhpcy5jb21wcmVzc2VkU2l6ZSkud2l0aFN0cmVhbUluZm8oXCJ1bmNvbXByZXNzZWRTaXplXCIsdGhpcy51bmNvbXByZXNzZWRTaXplKS53aXRoU3RyZWFtSW5mbyhcImNyYzMyXCIsdGhpcy5jcmMzMikud2l0aFN0cmVhbUluZm8oXCJjb21wcmVzc2lvblwiLHRoaXMuY29tcHJlc3Npb24pfX0sby5jcmVhdGVXb3JrZXJGcm9tPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZS5waXBlKG5ldyBzKS5waXBlKG5ldyBhKFwidW5jb21wcmVzc2VkU2l6ZVwiKSkucGlwZSh0LmNvbXByZXNzV29ya2VyKHIpKS5waXBlKG5ldyBhKFwiY29tcHJlc3NlZFNpemVcIikpLndpdGhTdHJlYW1JbmZvKFwiY29tcHJlc3Npb25cIix0KX0sdC5leHBvcnRzPW99LHtcIi4vZXh0ZXJuYWxcIjo2LFwiLi9zdHJlYW0vQ3JjMzJQcm9iZVwiOjI1LFwiLi9zdHJlYW0vRGF0YUxlbmd0aFByb2JlXCI6MjYsXCIuL3N0cmVhbS9EYXRhV29ya2VyXCI6Mjd9XSwzOltmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49ZShcIi4vc3RyZWFtL0dlbmVyaWNXb3JrZXJcIik7ci5TVE9SRT17bWFnaWM6XCJcXDBcXDBcIixjb21wcmVzc1dvcmtlcjpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IG4oXCJTVE9SRSBjb21wcmVzc2lvblwiKX0sdW5jb21wcmVzc1dvcmtlcjpmdW5jdGlvbigpe3JldHVybiBuZXcgbihcIlNUT1JFIGRlY29tcHJlc3Npb25cIil9fSxyLkRFRkxBVEU9ZShcIi4vZmxhdGVcIil9LHtcIi4vZmxhdGVcIjo3LFwiLi9zdHJlYW0vR2VuZXJpY1dvcmtlclwiOjI4fV0sNDpbZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPWUoXCIuL3V0aWxzXCIpO3ZhciBvPWZ1bmN0aW9uKCl7Zm9yKHZhciBlLHQ9W10scj0wO3I8MjU2O3IrKyl7ZT1yO2Zvcih2YXIgbj0wO248ODtuKyspZT0xJmU/Mzk4ODI5MjM4NF5lPj4+MTplPj4+MTt0W3JdPWV9cmV0dXJuIHR9KCk7dC5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMCE9PWUmJmUubGVuZ3RoP1wic3RyaW5nXCIhPT1uLmdldFR5cGVPZihlKT9mdW5jdGlvbihlLHQscixuKXt2YXIgaT1vLHM9bityO2VePS0xO2Zvcih2YXIgYT1uO2E8czthKyspZT1lPj4+OF5pWzI1NSYoZV50W2FdKV07cmV0dXJuLTFeZX0oMHx0LGUsZS5sZW5ndGgsMCk6ZnVuY3Rpb24oZSx0LHIsbil7dmFyIGk9byxzPW4rcjtlXj0tMTtmb3IodmFyIGE9bjthPHM7YSsrKWU9ZT4+PjheaVsyNTUmKGVedC5jaGFyQ29kZUF0KGEpKV07cmV0dXJuLTFeZX0oMHx0LGUsZS5sZW5ndGgsMCk6MH19LHtcIi4vdXRpbHNcIjozMn1dLDU6W2Z1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjtyLmJhc2U2ND0hMSxyLmJpbmFyeT0hMSxyLmRpcj0hMSxyLmNyZWF0ZUZvbGRlcnM9ITAsci5kYXRlPW51bGwsci5jb21wcmVzc2lvbj1udWxsLHIuY29tcHJlc3Npb25PcHRpb25zPW51bGwsci5jb21tZW50PW51bGwsci51bml4UGVybWlzc2lvbnM9bnVsbCxyLmRvc1Blcm1pc3Npb25zPW51bGx9LHt9XSw2OltmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49bnVsbDtuPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBQcm9taXNlP1Byb21pc2U6ZShcImxpZVwiKSx0LmV4cG9ydHM9e1Byb21pc2U6bn19LHtsaWU6Mzd9XSw3OltmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFVpbnQ4QXJyYXkmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBVaW50MTZBcnJheSYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFVpbnQzMkFycmF5LGk9ZShcInBha29cIikscz1lKFwiLi91dGlsc1wiKSxhPWUoXCIuL3N0cmVhbS9HZW5lcmljV29ya2VyXCIpLG89bj9cInVpbnQ4YXJyYXlcIjpcImFycmF5XCI7ZnVuY3Rpb24gaChlLHQpe2EuY2FsbCh0aGlzLFwiRmxhdGVXb3JrZXIvXCIrZSksdGhpcy5fcGFrbz1udWxsLHRoaXMuX3Bha29BY3Rpb249ZSx0aGlzLl9wYWtvT3B0aW9ucz10LHRoaXMubWV0YT17fX1yLm1hZ2ljPVwiXFxiXFwwXCIscy5pbmhlcml0cyhoLGEpLGgucHJvdG90eXBlLnByb2Nlc3NDaHVuaz1mdW5jdGlvbihlKXt0aGlzLm1ldGE9ZS5tZXRhLG51bGw9PT10aGlzLl9wYWtvJiZ0aGlzLl9jcmVhdGVQYWtvKCksdGhpcy5fcGFrby5wdXNoKHMudHJhbnNmb3JtVG8obyxlLmRhdGEpLCExKX0saC5wcm90b3R5cGUuZmx1c2g9ZnVuY3Rpb24oKXthLnByb3RvdHlwZS5mbHVzaC5jYWxsKHRoaXMpLG51bGw9PT10aGlzLl9wYWtvJiZ0aGlzLl9jcmVhdGVQYWtvKCksdGhpcy5fcGFrby5wdXNoKFtdLCEwKX0saC5wcm90b3R5cGUuY2xlYW5VcD1mdW5jdGlvbigpe2EucHJvdG90eXBlLmNsZWFuVXAuY2FsbCh0aGlzKSx0aGlzLl9wYWtvPW51bGx9LGgucHJvdG90eXBlLl9jcmVhdGVQYWtvPWZ1bmN0aW9uKCl7dGhpcy5fcGFrbz1uZXcgaVt0aGlzLl9wYWtvQWN0aW9uXSh7cmF3OiEwLGxldmVsOnRoaXMuX3Bha29PcHRpb25zLmxldmVsfHwtMX0pO3ZhciB0PXRoaXM7dGhpcy5fcGFrby5vbkRhdGE9ZnVuY3Rpb24oZSl7dC5wdXNoKHtkYXRhOmUsbWV0YTp0Lm1ldGF9KX19LHIuY29tcHJlc3NXb3JrZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBoKFwiRGVmbGF0ZVwiLGUpfSxyLnVuY29tcHJlc3NXb3JrZXI9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGgoXCJJbmZsYXRlXCIse30pfX0se1wiLi9zdHJlYW0vR2VuZXJpY1dvcmtlclwiOjI4LFwiLi91dGlsc1wiOjMyLHBha286Mzh9XSw4OltmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gQShlLHQpe3ZhciByLG49XCJcIjtmb3Iocj0wO3I8dDtyKyspbis9U3RyaW5nLmZyb21DaGFyQ29kZSgyNTUmZSksZT4+Pj04O3JldHVybiBufWZ1bmN0aW9uIG4oZSx0LHIsbixpLHMpe3ZhciBhLG8saD1lLmZpbGUsdT1lLmNvbXByZXNzaW9uLGw9cyE9PU8udXRmOGVuY29kZSxmPUkudHJhbnNmb3JtVG8oXCJzdHJpbmdcIixzKGgubmFtZSkpLGM9SS50cmFuc2Zvcm1UbyhcInN0cmluZ1wiLE8udXRmOGVuY29kZShoLm5hbWUpKSxkPWguY29tbWVudCxwPUkudHJhbnNmb3JtVG8oXCJzdHJpbmdcIixzKGQpKSxtPUkudHJhbnNmb3JtVG8oXCJzdHJpbmdcIixPLnV0ZjhlbmNvZGUoZCkpLF89Yy5sZW5ndGghPT1oLm5hbWUubGVuZ3RoLGc9bS5sZW5ndGghPT1kLmxlbmd0aCxiPVwiXCIsdj1cIlwiLHk9XCJcIix3PWguZGlyLGs9aC5kYXRlLHg9e2NyYzMyOjAsY29tcHJlc3NlZFNpemU6MCx1bmNvbXByZXNzZWRTaXplOjB9O3QmJiFyfHwoeC5jcmMzMj1lLmNyYzMyLHguY29tcHJlc3NlZFNpemU9ZS5jb21wcmVzc2VkU2l6ZSx4LnVuY29tcHJlc3NlZFNpemU9ZS51bmNvbXByZXNzZWRTaXplKTt2YXIgUz0wO3QmJihTfD04KSxsfHwhXyYmIWd8fChTfD0yMDQ4KTt2YXIgej0wLEM9MDt3JiYoenw9MTYpLFwiVU5JWFwiPT09aT8oQz03OTgsenw9ZnVuY3Rpb24oZSx0KXt2YXIgcj1lO3JldHVybiBlfHwocj10PzE2ODkzOjMzMjA0KSwoNjU1MzUmcik8PDE2fShoLnVuaXhQZXJtaXNzaW9ucyx3KSk6KEM9MjAsenw9ZnVuY3Rpb24oZSl7cmV0dXJuIDYzJihlfHwwKX0oaC5kb3NQZXJtaXNzaW9ucykpLGE9ay5nZXRVVENIb3VycygpLGE8PD02LGF8PWsuZ2V0VVRDTWludXRlcygpLGE8PD01LGF8PWsuZ2V0VVRDU2Vjb25kcygpLzIsbz1rLmdldFVUQ0Z1bGxZZWFyKCktMTk4MCxvPDw9NCxvfD1rLmdldFVUQ01vbnRoKCkrMSxvPDw9NSxvfD1rLmdldFVUQ0RhdGUoKSxfJiYodj1BKDEsMSkrQShCKGYpLDQpK2MsYis9XCJ1cFwiK0Eodi5sZW5ndGgsMikrdiksZyYmKHk9QSgxLDEpK0EoQihwKSw0KSttLGIrPVwidWNcIitBKHkubGVuZ3RoLDIpK3kpO3ZhciBFPVwiXCI7cmV0dXJuIEUrPVwiXFxuXFwwXCIsRSs9QShTLDIpLEUrPXUubWFnaWMsRSs9QShhLDIpLEUrPUEobywyKSxFKz1BKHguY3JjMzIsNCksRSs9QSh4LmNvbXByZXNzZWRTaXplLDQpLEUrPUEoeC51bmNvbXByZXNzZWRTaXplLDQpLEUrPUEoZi5sZW5ndGgsMiksRSs9QShiLmxlbmd0aCwyKSx7ZmlsZVJlY29yZDpSLkxPQ0FMX0ZJTEVfSEVBREVSK0UrZitiLGRpclJlY29yZDpSLkNFTlRSQUxfRklMRV9IRUFERVIrQShDLDIpK0UrQShwLmxlbmd0aCwyKStcIlxcMFxcMFxcMFxcMFwiK0Eoeiw0KStBKG4sNCkrZitiK3B9fXZhciBJPWUoXCIuLi91dGlsc1wiKSxpPWUoXCIuLi9zdHJlYW0vR2VuZXJpY1dvcmtlclwiKSxPPWUoXCIuLi91dGY4XCIpLEI9ZShcIi4uL2NyYzMyXCIpLFI9ZShcIi4uL3NpZ25hdHVyZVwiKTtmdW5jdGlvbiBzKGUsdCxyLG4pe2kuY2FsbCh0aGlzLFwiWmlwRmlsZVdvcmtlclwiKSx0aGlzLmJ5dGVzV3JpdHRlbj0wLHRoaXMuemlwQ29tbWVudD10LHRoaXMuemlwUGxhdGZvcm09cix0aGlzLmVuY29kZUZpbGVOYW1lPW4sdGhpcy5zdHJlYW1GaWxlcz1lLHRoaXMuYWNjdW11bGF0ZT0hMSx0aGlzLmNvbnRlbnRCdWZmZXI9W10sdGhpcy5kaXJSZWNvcmRzPVtdLHRoaXMuY3VycmVudFNvdXJjZU9mZnNldD0wLHRoaXMuZW50cmllc0NvdW50PTAsdGhpcy5jdXJyZW50RmlsZT1udWxsLHRoaXMuX3NvdXJjZXM9W119SS5pbmhlcml0cyhzLGkpLHMucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5tZXRhLnBlcmNlbnR8fDAscj10aGlzLmVudHJpZXNDb3VudCxuPXRoaXMuX3NvdXJjZXMubGVuZ3RoO3RoaXMuYWNjdW11bGF0ZT90aGlzLmNvbnRlbnRCdWZmZXIucHVzaChlKToodGhpcy5ieXRlc1dyaXR0ZW4rPWUuZGF0YS5sZW5ndGgsaS5wcm90b3R5cGUucHVzaC5jYWxsKHRoaXMse2RhdGE6ZS5kYXRhLG1ldGE6e2N1cnJlbnRGaWxlOnRoaXMuY3VycmVudEZpbGUscGVyY2VudDpyPyh0KzEwMCooci1uLTEpKS9yOjEwMH19KSl9LHMucHJvdG90eXBlLm9wZW5lZFNvdXJjZT1mdW5jdGlvbihlKXt0aGlzLmN1cnJlbnRTb3VyY2VPZmZzZXQ9dGhpcy5ieXRlc1dyaXR0ZW4sdGhpcy5jdXJyZW50RmlsZT1lLmZpbGUubmFtZTt2YXIgdD10aGlzLnN0cmVhbUZpbGVzJiYhZS5maWxlLmRpcjtpZih0KXt2YXIgcj1uKGUsdCwhMSx0aGlzLmN1cnJlbnRTb3VyY2VPZmZzZXQsdGhpcy56aXBQbGF0Zm9ybSx0aGlzLmVuY29kZUZpbGVOYW1lKTt0aGlzLnB1c2goe2RhdGE6ci5maWxlUmVjb3JkLG1ldGE6e3BlcmNlbnQ6MH19KX1lbHNlIHRoaXMuYWNjdW11bGF0ZT0hMH0scy5wcm90b3R5cGUuY2xvc2VkU291cmNlPWZ1bmN0aW9uKGUpe3RoaXMuYWNjdW11bGF0ZT0hMTt2YXIgdD10aGlzLnN0cmVhbUZpbGVzJiYhZS5maWxlLmRpcixyPW4oZSx0LCEwLHRoaXMuY3VycmVudFNvdXJjZU9mZnNldCx0aGlzLnppcFBsYXRmb3JtLHRoaXMuZW5jb2RlRmlsZU5hbWUpO2lmKHRoaXMuZGlyUmVjb3Jkcy5wdXNoKHIuZGlyUmVjb3JkKSx0KXRoaXMucHVzaCh7ZGF0YTpmdW5jdGlvbihlKXtyZXR1cm4gUi5EQVRBX0RFU0NSSVBUT1IrQShlLmNyYzMyLDQpK0EoZS5jb21wcmVzc2VkU2l6ZSw0KStBKGUudW5jb21wcmVzc2VkU2l6ZSw0KX0oZSksbWV0YTp7cGVyY2VudDoxMDB9fSk7ZWxzZSBmb3IodGhpcy5wdXNoKHtkYXRhOnIuZmlsZVJlY29yZCxtZXRhOntwZXJjZW50OjB9fSk7dGhpcy5jb250ZW50QnVmZmVyLmxlbmd0aDspdGhpcy5wdXNoKHRoaXMuY29udGVudEJ1ZmZlci5zaGlmdCgpKTt0aGlzLmN1cnJlbnRGaWxlPW51bGx9LHMucHJvdG90eXBlLmZsdXNoPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuYnl0ZXNXcml0dGVuLHQ9MDt0PHRoaXMuZGlyUmVjb3Jkcy5sZW5ndGg7dCsrKXRoaXMucHVzaCh7ZGF0YTp0aGlzLmRpclJlY29yZHNbdF0sbWV0YTp7cGVyY2VudDoxMDB9fSk7dmFyIHI9dGhpcy5ieXRlc1dyaXR0ZW4tZSxuPWZ1bmN0aW9uKGUsdCxyLG4saSl7dmFyIHM9SS50cmFuc2Zvcm1UbyhcInN0cmluZ1wiLGkobikpO3JldHVybiBSLkNFTlRSQUxfRElSRUNUT1JZX0VORCtcIlxcMFxcMFxcMFxcMFwiK0EoZSwyKStBKGUsMikrQSh0LDQpK0Eociw0KStBKHMubGVuZ3RoLDIpK3N9KHRoaXMuZGlyUmVjb3Jkcy5sZW5ndGgscixlLHRoaXMuemlwQ29tbWVudCx0aGlzLmVuY29kZUZpbGVOYW1lKTt0aGlzLnB1c2goe2RhdGE6bixtZXRhOntwZXJjZW50OjEwMH19KX0scy5wcm90b3R5cGUucHJlcGFyZU5leHRTb3VyY2U9ZnVuY3Rpb24oKXt0aGlzLnByZXZpb3VzPXRoaXMuX3NvdXJjZXMuc2hpZnQoKSx0aGlzLm9wZW5lZFNvdXJjZSh0aGlzLnByZXZpb3VzLnN0cmVhbUluZm8pLHRoaXMuaXNQYXVzZWQ/dGhpcy5wcmV2aW91cy5wYXVzZSgpOnRoaXMucHJldmlvdXMucmVzdW1lKCl9LHMucHJvdG90eXBlLnJlZ2lzdGVyUHJldmlvdXM9ZnVuY3Rpb24oZSl7dGhpcy5fc291cmNlcy5wdXNoKGUpO3ZhciB0PXRoaXM7cmV0dXJuIGUub24oXCJkYXRhXCIsZnVuY3Rpb24oZSl7dC5wcm9jZXNzQ2h1bmsoZSl9KSxlLm9uKFwiZW5kXCIsZnVuY3Rpb24oKXt0LmNsb3NlZFNvdXJjZSh0LnByZXZpb3VzLnN0cmVhbUluZm8pLHQuX3NvdXJjZXMubGVuZ3RoP3QucHJlcGFyZU5leHRTb3VyY2UoKTp0LmVuZCgpfSksZS5vbihcImVycm9yXCIsZnVuY3Rpb24oZSl7dC5lcnJvcihlKX0pLHRoaXN9LHMucHJvdG90eXBlLnJlc3VtZT1mdW5jdGlvbigpe3JldHVybiEhaS5wcm90b3R5cGUucmVzdW1lLmNhbGwodGhpcykmJighdGhpcy5wcmV2aW91cyYmdGhpcy5fc291cmNlcy5sZW5ndGg/KHRoaXMucHJlcGFyZU5leHRTb3VyY2UoKSwhMCk6dGhpcy5wcmV2aW91c3x8dGhpcy5fc291cmNlcy5sZW5ndGh8fHRoaXMuZ2VuZXJhdGVkRXJyb3I/dm9pZCAwOih0aGlzLmVuZCgpLCEwKSl9LHMucHJvdG90eXBlLmVycm9yPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX3NvdXJjZXM7aWYoIWkucHJvdG90eXBlLmVycm9yLmNhbGwodGhpcyxlKSlyZXR1cm4hMTtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl0cnl7dFtyXS5lcnJvcihlKX1jYXRjaChlKXt9cmV0dXJuITB9LHMucHJvdG90eXBlLmxvY2s9ZnVuY3Rpb24oKXtpLnByb3RvdHlwZS5sb2NrLmNhbGwodGhpcyk7Zm9yKHZhciBlPXRoaXMuX3NvdXJjZXMsdD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF0ubG9jaygpfSx0LmV4cG9ydHM9c30se1wiLi4vY3JjMzJcIjo0LFwiLi4vc2lnbmF0dXJlXCI6MjMsXCIuLi9zdHJlYW0vR2VuZXJpY1dvcmtlclwiOjI4LFwiLi4vdXRmOFwiOjMxLFwiLi4vdXRpbHNcIjozMn1dLDk6W2Z1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgdT1lKFwiLi4vY29tcHJlc3Npb25zXCIpLG49ZShcIi4vWmlwRmlsZVdvcmtlclwiKTtyLmdlbmVyYXRlV29ya2VyPWZ1bmN0aW9uKGUsYSx0KXt2YXIgbz1uZXcgbihhLnN0cmVhbUZpbGVzLHQsYS5wbGF0Zm9ybSxhLmVuY29kZUZpbGVOYW1lKSxoPTA7dHJ5e2UuZm9yRWFjaChmdW5jdGlvbihlLHQpe2grKzt2YXIgcj1mdW5jdGlvbihlLHQpe3ZhciByPWV8fHQsbj11W3JdO2lmKCFuKXRocm93IG5ldyBFcnJvcihyK1wiIGlzIG5vdCBhIHZhbGlkIGNvbXByZXNzaW9uIG1ldGhvZCAhXCIpO3JldHVybiBufSh0Lm9wdGlvbnMuY29tcHJlc3Npb24sYS5jb21wcmVzc2lvbiksbj10Lm9wdGlvbnMuY29tcHJlc3Npb25PcHRpb25zfHxhLmNvbXByZXNzaW9uT3B0aW9uc3x8e30saT10LmRpcixzPXQuZGF0ZTt0Ll9jb21wcmVzc1dvcmtlcihyLG4pLndpdGhTdHJlYW1JbmZvKFwiZmlsZVwiLHtuYW1lOmUsZGlyOmksZGF0ZTpzLGNvbW1lbnQ6dC5jb21tZW50fHxcIlwiLHVuaXhQZXJtaXNzaW9uczp0LnVuaXhQZXJtaXNzaW9ucyxkb3NQZXJtaXNzaW9uczp0LmRvc1Blcm1pc3Npb25zfSkucGlwZShvKX0pLG8uZW50cmllc0NvdW50PWh9Y2F0Y2goZSl7by5lcnJvcihlKX1yZXR1cm4gb319LHtcIi4uL2NvbXByZXNzaW9uc1wiOjMsXCIuL1ppcEZpbGVXb3JrZXJcIjo4fV0sMTA6W2Z1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBuKCl7aWYoISh0aGlzIGluc3RhbmNlb2YgbikpcmV0dXJuIG5ldyBuO2lmKGFyZ3VtZW50cy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKFwiVGhlIGNvbnN0cnVjdG9yIHdpdGggcGFyYW1ldGVycyBoYXMgYmVlbiByZW1vdmVkIGluIEpTWmlwIDMuMCwgcGxlYXNlIGNoZWNrIHRoZSB1cGdyYWRlIGd1aWRlLlwiKTt0aGlzLmZpbGVzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5jb21tZW50PW51bGwsdGhpcy5yb290PVwiXCIsdGhpcy5jbG9uZT1mdW5jdGlvbigpe3ZhciBlPW5ldyBuO2Zvcih2YXIgdCBpbiB0aGlzKVwiZnVuY3Rpb25cIiE9dHlwZW9mIHRoaXNbdF0mJihlW3RdPXRoaXNbdF0pO3JldHVybiBlfX0obi5wcm90b3R5cGU9ZShcIi4vb2JqZWN0XCIpKS5sb2FkQXN5bmM9ZShcIi4vbG9hZFwiKSxuLnN1cHBvcnQ9ZShcIi4vc3VwcG9ydFwiKSxuLmRlZmF1bHRzPWUoXCIuL2RlZmF1bHRzXCIpLG4udmVyc2lvbj1cIjMuMTAuMFwiLG4ubG9hZEFzeW5jPWZ1bmN0aW9uKGUsdCl7cmV0dXJuKG5ldyBuKS5sb2FkQXN5bmMoZSx0KX0sbi5leHRlcm5hbD1lKFwiLi9leHRlcm5hbFwiKSx0LmV4cG9ydHM9bn0se1wiLi9kZWZhdWx0c1wiOjUsXCIuL2V4dGVybmFsXCI6NixcIi4vbG9hZFwiOjExLFwiLi9vYmplY3RcIjoxNSxcIi4vc3VwcG9ydFwiOjMwfV0sMTE6W2Z1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgdT1lKFwiLi91dGlsc1wiKSxpPWUoXCIuL2V4dGVybmFsXCIpLG49ZShcIi4vdXRmOFwiKSxzPWUoXCIuL3ppcEVudHJpZXNcIiksYT1lKFwiLi9zdHJlYW0vQ3JjMzJQcm9iZVwiKSxsPWUoXCIuL25vZGVqc1V0aWxzXCIpO2Z1bmN0aW9uIGYobil7cmV0dXJuIG5ldyBpLlByb21pc2UoZnVuY3Rpb24oZSx0KXt2YXIgcj1uLmRlY29tcHJlc3NlZC5nZXRDb250ZW50V29ya2VyKCkucGlwZShuZXcgYSk7ci5vbihcImVycm9yXCIsZnVuY3Rpb24oZSl7dChlKX0pLm9uKFwiZW5kXCIsZnVuY3Rpb24oKXtyLnN0cmVhbUluZm8uY3JjMzIhPT1uLmRlY29tcHJlc3NlZC5jcmMzMj90KG5ldyBFcnJvcihcIkNvcnJ1cHRlZCB6aXAgOiBDUkMzMiBtaXNtYXRjaFwiKSk6ZSgpfSkucmVzdW1lKCl9KX10LmV4cG9ydHM9ZnVuY3Rpb24oZSxvKXt2YXIgaD10aGlzO3JldHVybiBvPXUuZXh0ZW5kKG98fHt9LHtiYXNlNjQ6ITEsY2hlY2tDUkMzMjohMSxvcHRpbWl6ZWRCaW5hcnlTdHJpbmc6ITEsY3JlYXRlRm9sZGVyczohMSxkZWNvZGVGaWxlTmFtZTpuLnV0ZjhkZWNvZGV9KSxsLmlzTm9kZSYmbC5pc1N0cmVhbShlKT9pLlByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIkpTWmlwIGNhbid0IGFjY2VwdCBhIHN0cmVhbSB3aGVuIGxvYWRpbmcgYSB6aXAgZmlsZS5cIikpOnUucHJlcGFyZUNvbnRlbnQoXCJ0aGUgbG9hZGVkIHppcCBmaWxlXCIsZSwhMCxvLm9wdGltaXplZEJpbmFyeVN0cmluZyxvLmJhc2U2NCkudGhlbihmdW5jdGlvbihlKXt2YXIgdD1uZXcgcyhvKTtyZXR1cm4gdC5sb2FkKGUpLHR9KS50aGVuKGZ1bmN0aW9uKGUpe3ZhciB0PVtpLlByb21pc2UucmVzb2x2ZShlKV0scj1lLmZpbGVzO2lmKG8uY2hlY2tDUkMzMilmb3IodmFyIG49MDtuPHIubGVuZ3RoO24rKyl0LnB1c2goZihyW25dKSk7cmV0dXJuIGkuUHJvbWlzZS5hbGwodCl9KS50aGVuKGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLnNoaWZ0KCkscj10LmZpbGVzLG49MDtuPHIubGVuZ3RoO24rKyl7dmFyIGk9cltuXSxzPWkuZmlsZU5hbWVTdHIsYT11LnJlc29sdmUoaS5maWxlTmFtZVN0cik7aC5maWxlKGEsaS5kZWNvbXByZXNzZWQse2JpbmFyeTohMCxvcHRpbWl6ZWRCaW5hcnlTdHJpbmc6ITAsZGF0ZTppLmRhdGUsZGlyOmkuZGlyLGNvbW1lbnQ6aS5maWxlQ29tbWVudFN0ci5sZW5ndGg/aS5maWxlQ29tbWVudFN0cjpudWxsLHVuaXhQZXJtaXNzaW9uczppLnVuaXhQZXJtaXNzaW9ucyxkb3NQZXJtaXNzaW9uczppLmRvc1Blcm1pc3Npb25zLGNyZWF0ZUZvbGRlcnM6by5jcmVhdGVGb2xkZXJzfSksaS5kaXJ8fChoLmZpbGUoYSkudW5zYWZlT3JpZ2luYWxOYW1lPXMpfXJldHVybiB0LnppcENvbW1lbnQubGVuZ3RoJiYoaC5jb21tZW50PXQuemlwQ29tbWVudCksaH0pfX0se1wiLi9leHRlcm5hbFwiOjYsXCIuL25vZGVqc1V0aWxzXCI6MTQsXCIuL3N0cmVhbS9DcmMzMlByb2JlXCI6MjUsXCIuL3V0ZjhcIjozMSxcIi4vdXRpbHNcIjozMixcIi4vemlwRW50cmllc1wiOjMzfV0sMTI6W2Z1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1lKFwiLi4vdXRpbHNcIiksaT1lKFwiLi4vc3RyZWFtL0dlbmVyaWNXb3JrZXJcIik7ZnVuY3Rpb24gcyhlLHQpe2kuY2FsbCh0aGlzLFwiTm9kZWpzIHN0cmVhbSBpbnB1dCBhZGFwdGVyIGZvciBcIitlKSx0aGlzLl91cHN0cmVhbUVuZGVkPSExLHRoaXMuX2JpbmRTdHJlYW0odCl9bi5pbmhlcml0cyhzLGkpLHMucHJvdG90eXBlLl9iaW5kU3RyZWFtPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7KHRoaXMuX3N0cmVhbT1lKS5wYXVzZSgpLGUub24oXCJkYXRhXCIsZnVuY3Rpb24oZSl7dC5wdXNoKHtkYXRhOmUsbWV0YTp7cGVyY2VudDowfX0pfSkub24oXCJlcnJvclwiLGZ1bmN0aW9uKGUpe3QuaXNQYXVzZWQ/dGhpcy5nZW5lcmF0ZWRFcnJvcj1lOnQuZXJyb3IoZSl9KS5vbihcImVuZFwiLGZ1bmN0aW9uKCl7dC5pc1BhdXNlZD90Ll91cHN0cmVhbUVuZGVkPSEwOnQuZW5kKCl9KX0scy5wcm90b3R5cGUucGF1c2U9ZnVuY3Rpb24oKXtyZXR1cm4hIWkucHJvdG90eXBlLnBhdXNlLmNhbGwodGhpcykmJih0aGlzLl9zdHJlYW0ucGF1c2UoKSwhMCl9LHMucHJvdG90eXBlLnJlc3VtZT1mdW5jdGlvbigpe3JldHVybiEhaS5wcm90b3R5cGUucmVzdW1lLmNhbGwodGhpcykmJih0aGlzLl91cHN0cmVhbUVuZGVkP3RoaXMuZW5kKCk6dGhpcy5fc3RyZWFtLnJlc3VtZSgpLCEwKX0sdC5leHBvcnRzPXN9LHtcIi4uL3N0cmVhbS9HZW5lcmljV29ya2VyXCI6MjgsXCIuLi91dGlsc1wiOjMyfV0sMTM6W2Z1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgaT1lKFwicmVhZGFibGUtc3RyZWFtXCIpLlJlYWRhYmxlO2Z1bmN0aW9uIG4oZSx0LHIpe2kuY2FsbCh0aGlzLHQpLHRoaXMuX2hlbHBlcj1lO3ZhciBuPXRoaXM7ZS5vbihcImRhdGFcIixmdW5jdGlvbihlLHQpe24ucHVzaChlKXx8bi5faGVscGVyLnBhdXNlKCksciYmcih0KX0pLm9uKFwiZXJyb3JcIixmdW5jdGlvbihlKXtuLmVtaXQoXCJlcnJvclwiLGUpfSkub24oXCJlbmRcIixmdW5jdGlvbigpe24ucHVzaChudWxsKX0pfWUoXCIuLi91dGlsc1wiKS5pbmhlcml0cyhuLGkpLG4ucHJvdG90eXBlLl9yZWFkPWZ1bmN0aW9uKCl7dGhpcy5faGVscGVyLnJlc3VtZSgpfSx0LmV4cG9ydHM9bn0se1wiLi4vdXRpbHNcIjozMixcInJlYWRhYmxlLXN0cmVhbVwiOjE2fV0sMTQ6W2Z1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt0LmV4cG9ydHM9e2lzTm9kZTpcInVuZGVmaW5lZFwiIT10eXBlb2YgQnVmZmVyLG5ld0J1ZmZlckZyb206ZnVuY3Rpb24oZSx0KXtpZihCdWZmZXIuZnJvbSYmQnVmZmVyLmZyb20hPT1VaW50OEFycmF5LmZyb20pcmV0dXJuIEJ1ZmZlci5mcm9tKGUsdCk7aWYoXCJudW1iZXJcIj09dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCdUaGUgXCJkYXRhXCIgYXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXInKTtyZXR1cm4gbmV3IEJ1ZmZlcihlLHQpfSxhbGxvY0J1ZmZlcjpmdW5jdGlvbihlKXtpZihCdWZmZXIuYWxsb2MpcmV0dXJuIEJ1ZmZlci5hbGxvYyhlKTt2YXIgdD1uZXcgQnVmZmVyKGUpO3JldHVybiB0LmZpbGwoMCksdH0saXNCdWZmZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihlKX0saXNTdHJlYW06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGUub24mJlwiZnVuY3Rpb25cIj09dHlwZW9mIGUucGF1c2UmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGUucmVzdW1lfX19LHt9XSwxNTpbZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHMoZSx0LHIpe3ZhciBuLGk9dS5nZXRUeXBlT2YodCkscz11LmV4dGVuZChyfHx7fSxmKTtzLmRhdGU9cy5kYXRlfHxuZXcgRGF0ZSxudWxsIT09cy5jb21wcmVzc2lvbiYmKHMuY29tcHJlc3Npb249cy5jb21wcmVzc2lvbi50b1VwcGVyQ2FzZSgpKSxcInN0cmluZ1wiPT10eXBlb2Ygcy51bml4UGVybWlzc2lvbnMmJihzLnVuaXhQZXJtaXNzaW9ucz1wYXJzZUludChzLnVuaXhQZXJtaXNzaW9ucyw4KSkscy51bml4UGVybWlzc2lvbnMmJjE2Mzg0JnMudW5peFBlcm1pc3Npb25zJiYocy5kaXI9ITApLHMuZG9zUGVybWlzc2lvbnMmJjE2JnMuZG9zUGVybWlzc2lvbnMmJihzLmRpcj0hMCkscy5kaXImJihlPWcoZSkpLHMuY3JlYXRlRm9sZGVycyYmKG49XyhlKSkmJmIuY2FsbCh0aGlzLG4sITApO3ZhciBhPVwic3RyaW5nXCI9PT1pJiYhMT09PXMuYmluYXJ5JiYhMT09PXMuYmFzZTY0O3ImJnZvaWQgMCE9PXIuYmluYXJ5fHwocy5iaW5hcnk9IWEpLCh0IGluc3RhbmNlb2YgYyYmMD09PXQudW5jb21wcmVzc2VkU2l6ZXx8cy5kaXJ8fCF0fHwwPT09dC5sZW5ndGgpJiYocy5iYXNlNjQ9ITEscy5iaW5hcnk9ITAsdD1cIlwiLHMuY29tcHJlc3Npb249XCJTVE9SRVwiLGk9XCJzdHJpbmdcIik7dmFyIG89bnVsbDtvPXQgaW5zdGFuY2VvZiBjfHx0IGluc3RhbmNlb2YgbD90OnAuaXNOb2RlJiZwLmlzU3RyZWFtKHQpP25ldyBtKGUsdCk6dS5wcmVwYXJlQ29udGVudChlLHQscy5iaW5hcnkscy5vcHRpbWl6ZWRCaW5hcnlTdHJpbmcscy5iYXNlNjQpO3ZhciBoPW5ldyBkKGUsbyxzKTt0aGlzLmZpbGVzW2VdPWh9dmFyIGk9ZShcIi4vdXRmOFwiKSx1PWUoXCIuL3V0aWxzXCIpLGw9ZShcIi4vc3RyZWFtL0dlbmVyaWNXb3JrZXJcIiksYT1lKFwiLi9zdHJlYW0vU3RyZWFtSGVscGVyXCIpLGY9ZShcIi4vZGVmYXVsdHNcIiksYz1lKFwiLi9jb21wcmVzc2VkT2JqZWN0XCIpLGQ9ZShcIi4vemlwT2JqZWN0XCIpLG89ZShcIi4vZ2VuZXJhdGVcIikscD1lKFwiLi9ub2RlanNVdGlsc1wiKSxtPWUoXCIuL25vZGVqcy9Ob2RlanNTdHJlYW1JbnB1dEFkYXB0ZXJcIiksXz1mdW5jdGlvbihlKXtcIi9cIj09PWUuc2xpY2UoLTEpJiYoZT1lLnN1YnN0cmluZygwLGUubGVuZ3RoLTEpKTt2YXIgdD1lLmxhc3RJbmRleE9mKFwiL1wiKTtyZXR1cm4gMDx0P2Uuc3Vic3RyaW5nKDAsdCk6XCJcIn0sZz1mdW5jdGlvbihlKXtyZXR1cm5cIi9cIiE9PWUuc2xpY2UoLTEpJiYoZSs9XCIvXCIpLGV9LGI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD12b2lkIDAhPT10P3Q6Zi5jcmVhdGVGb2xkZXJzLGU9ZyhlKSx0aGlzLmZpbGVzW2VdfHxzLmNhbGwodGhpcyxlLG51bGwse2RpcjohMCxjcmVhdGVGb2xkZXJzOnR9KSx0aGlzLmZpbGVzW2VdfTtmdW5jdGlvbiBoKGUpe3JldHVyblwiW29iamVjdCBSZWdFeHBdXCI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSl9dmFyIG49e2xvYWQ6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIG1ldGhvZCBoYXMgYmVlbiByZW1vdmVkIGluIEpTWmlwIDMuMCwgcGxlYXNlIGNoZWNrIHRoZSB1cGdyYWRlIGd1aWRlLlwiKX0sZm9yRWFjaDpmdW5jdGlvbihlKXt2YXIgdCxyLG47Zm9yKHQgaW4gdGhpcy5maWxlcyluPXRoaXMuZmlsZXNbdF0sKHI9dC5zbGljZSh0aGlzLnJvb3QubGVuZ3RoLHQubGVuZ3RoKSkmJnQuc2xpY2UoMCx0aGlzLnJvb3QubGVuZ3RoKT09PXRoaXMucm9vdCYmZShyLG4pfSxmaWx0ZXI6ZnVuY3Rpb24ocil7dmFyIG49W107cmV0dXJuIHRoaXMuZm9yRWFjaChmdW5jdGlvbihlLHQpe3IoZSx0KSYmbi5wdXNoKHQpfSksbn0sZmlsZTpmdW5jdGlvbihlLHQscil7aWYoMSE9PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGU9dGhpcy5yb290K2Uscy5jYWxsKHRoaXMsZSx0LHIpLHRoaXM7aWYoaChlKSl7dmFyIG49ZTtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oZSx0KXtyZXR1cm4hdC5kaXImJm4udGVzdChlKX0pfXZhciBpPXRoaXMuZmlsZXNbdGhpcy5yb290K2VdO3JldHVybiBpJiYhaS5kaXI/aTpudWxsfSxmb2xkZXI6ZnVuY3Rpb24ocil7aWYoIXIpcmV0dXJuIHRoaXM7aWYoaChyKSlyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5kaXImJnIudGVzdChlKX0pO3ZhciBlPXRoaXMucm9vdCtyLHQ9Yi5jYWxsKHRoaXMsZSksbj10aGlzLmNsb25lKCk7cmV0dXJuIG4ucm9vdD10Lm5hbWUsbn0scmVtb3ZlOmZ1bmN0aW9uKHIpe3I9dGhpcy5yb290K3I7dmFyIGU9dGhpcy5maWxlc1tyXTtpZihlfHwoXCIvXCIhPT1yLnNsaWNlKC0xKSYmKHIrPVwiL1wiKSxlPXRoaXMuZmlsZXNbcl0pLGUmJiFlLmRpcilkZWxldGUgdGhpcy5maWxlc1tyXTtlbHNlIGZvcih2YXIgdD10aGlzLmZpbHRlcihmdW5jdGlvbihlLHQpe3JldHVybiB0Lm5hbWUuc2xpY2UoMCxyLmxlbmd0aCk9PT1yfSksbj0wO248dC5sZW5ndGg7bisrKWRlbGV0ZSB0aGlzLmZpbGVzW3Rbbl0ubmFtZV07cmV0dXJuIHRoaXN9LGdlbmVyYXRlOmZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcihcIlRoaXMgbWV0aG9kIGhhcyBiZWVuIHJlbW92ZWQgaW4gSlNaaXAgMy4wLCBwbGVhc2UgY2hlY2sgdGhlIHVwZ3JhZGUgZ3VpZGUuXCIpfSxnZW5lcmF0ZUludGVybmFsU3RyZWFtOmZ1bmN0aW9uKGUpe3ZhciB0LHI9e307dHJ5e2lmKChyPXUuZXh0ZW5kKGV8fHt9LHtzdHJlYW1GaWxlczohMSxjb21wcmVzc2lvbjpcIlNUT1JFXCIsY29tcHJlc3Npb25PcHRpb25zOm51bGwsdHlwZTpcIlwiLHBsYXRmb3JtOlwiRE9TXCIsY29tbWVudDpudWxsLG1pbWVUeXBlOlwiYXBwbGljYXRpb24vemlwXCIsZW5jb2RlRmlsZU5hbWU6aS51dGY4ZW5jb2RlfSkpLnR5cGU9ci50eXBlLnRvTG93ZXJDYXNlKCksci5jb21wcmVzc2lvbj1yLmNvbXByZXNzaW9uLnRvVXBwZXJDYXNlKCksXCJiaW5hcnlzdHJpbmdcIj09PXIudHlwZSYmKHIudHlwZT1cInN0cmluZ1wiKSwhci50eXBlKXRocm93IG5ldyBFcnJvcihcIk5vIG91dHB1dCB0eXBlIHNwZWNpZmllZC5cIik7dS5jaGVja1N1cHBvcnQoci50eXBlKSxcImRhcndpblwiIT09ci5wbGF0Zm9ybSYmXCJmcmVlYnNkXCIhPT1yLnBsYXRmb3JtJiZcImxpbnV4XCIhPT1yLnBsYXRmb3JtJiZcInN1bm9zXCIhPT1yLnBsYXRmb3JtfHwoci5wbGF0Zm9ybT1cIlVOSVhcIiksXCJ3aW4zMlwiPT09ci5wbGF0Zm9ybSYmKHIucGxhdGZvcm09XCJET1NcIik7dmFyIG49ci5jb21tZW50fHx0aGlzLmNvbW1lbnR8fFwiXCI7dD1vLmdlbmVyYXRlV29ya2VyKHRoaXMscixuKX1jYXRjaChlKXsodD1uZXcgbChcImVycm9yXCIpKS5lcnJvcihlKX1yZXR1cm4gbmV3IGEodCxyLnR5cGV8fFwic3RyaW5nXCIsci5taW1lVHlwZSl9LGdlbmVyYXRlQXN5bmM6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5nZW5lcmF0ZUludGVybmFsU3RyZWFtKGUpLmFjY3VtdWxhdGUodCl9LGdlbmVyYXRlTm9kZVN0cmVhbTpmdW5jdGlvbihlLHQpe3JldHVybihlPWV8fHt9KS50eXBlfHwoZS50eXBlPVwibm9kZWJ1ZmZlclwiKSx0aGlzLmdlbmVyYXRlSW50ZXJuYWxTdHJlYW0oZSkudG9Ob2RlanNTdHJlYW0odCl9fTt0LmV4cG9ydHM9bn0se1wiLi9jb21wcmVzc2VkT2JqZWN0XCI6MixcIi4vZGVmYXVsdHNcIjo1LFwiLi9nZW5lcmF0ZVwiOjksXCIuL25vZGVqcy9Ob2RlanNTdHJlYW1JbnB1dEFkYXB0ZXJcIjoxMixcIi4vbm9kZWpzVXRpbHNcIjoxNCxcIi4vc3RyZWFtL0dlbmVyaWNXb3JrZXJcIjoyOCxcIi4vc3RyZWFtL1N0cmVhbUhlbHBlclwiOjI5LFwiLi91dGY4XCI6MzEsXCIuL3V0aWxzXCI6MzIsXCIuL3ppcE9iamVjdFwiOjM1fV0sMTY6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZShcInN0cmVhbVwiKX0se3N0cmVhbTp2b2lkIDB9XSwxNzpbZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPWUoXCIuL0RhdGFSZWFkZXJcIik7ZnVuY3Rpb24gaShlKXtuLmNhbGwodGhpcyxlKTtmb3IodmFyIHQ9MDt0PHRoaXMuZGF0YS5sZW5ndGg7dCsrKWVbdF09MjU1JmVbdF19ZShcIi4uL3V0aWxzXCIpLmluaGVyaXRzKGksbiksaS5wcm90b3R5cGUuYnl0ZUF0PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmRhdGFbdGhpcy56ZXJvK2VdfSxpLnByb3RvdHlwZS5sYXN0SW5kZXhPZlNpZ25hdHVyZT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9ZS5jaGFyQ29kZUF0KDApLHI9ZS5jaGFyQ29kZUF0KDEpLG49ZS5jaGFyQ29kZUF0KDIpLGk9ZS5jaGFyQ29kZUF0KDMpLHM9dGhpcy5sZW5ndGgtNDswPD1zOy0tcylpZih0aGlzLmRhdGFbc109PT10JiZ0aGlzLmRhdGFbcysxXT09PXImJnRoaXMuZGF0YVtzKzJdPT09biYmdGhpcy5kYXRhW3MrM109PT1pKXJldHVybiBzLXRoaXMuemVybztyZXR1cm4tMX0saS5wcm90b3R5cGUucmVhZEFuZENoZWNrU2lnbmF0dXJlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY2hhckNvZGVBdCgwKSxyPWUuY2hhckNvZGVBdCgxKSxuPWUuY2hhckNvZGVBdCgyKSxpPWUuY2hhckNvZGVBdCgzKSxzPXRoaXMucmVhZERhdGEoNCk7cmV0dXJuIHQ9PT1zWzBdJiZyPT09c1sxXSYmbj09PXNbMl0mJmk9PT1zWzNdfSxpLnByb3RvdHlwZS5yZWFkRGF0YT1mdW5jdGlvbihlKXtpZih0aGlzLmNoZWNrT2Zmc2V0KGUpLDA9PT1lKXJldHVybltdO3ZhciB0PXRoaXMuZGF0YS5zbGljZSh0aGlzLnplcm8rdGhpcy5pbmRleCx0aGlzLnplcm8rdGhpcy5pbmRleCtlKTtyZXR1cm4gdGhpcy5pbmRleCs9ZSx0fSx0LmV4cG9ydHM9aX0se1wiLi4vdXRpbHNcIjozMixcIi4vRGF0YVJlYWRlclwiOjE4fV0sMTg6W2Z1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1lKFwiLi4vdXRpbHNcIik7ZnVuY3Rpb24gaShlKXt0aGlzLmRhdGE9ZSx0aGlzLmxlbmd0aD1lLmxlbmd0aCx0aGlzLmluZGV4PTAsdGhpcy56ZXJvPTB9aS5wcm90b3R5cGU9e2NoZWNrT2Zmc2V0OmZ1bmN0aW9uKGUpe3RoaXMuY2hlY2tJbmRleCh0aGlzLmluZGV4K2UpfSxjaGVja0luZGV4OmZ1bmN0aW9uKGUpe2lmKHRoaXMubGVuZ3RoPHRoaXMuemVybytlfHxlPDApdGhyb3cgbmV3IEVycm9yKFwiRW5kIG9mIGRhdGEgcmVhY2hlZCAoZGF0YSBsZW5ndGggPSBcIit0aGlzLmxlbmd0aCtcIiwgYXNrZWQgaW5kZXggPSBcIitlK1wiKS4gQ29ycnVwdGVkIHppcCA/XCIpfSxzZXRJbmRleDpmdW5jdGlvbihlKXt0aGlzLmNoZWNrSW5kZXgoZSksdGhpcy5pbmRleD1lfSxza2lwOmZ1bmN0aW9uKGUpe3RoaXMuc2V0SW5kZXgodGhpcy5pbmRleCtlKX0sYnl0ZUF0OmZ1bmN0aW9uKGUpe30scmVhZEludDpmdW5jdGlvbihlKXt2YXIgdCxyPTA7Zm9yKHRoaXMuY2hlY2tPZmZzZXQoZSksdD10aGlzLmluZGV4K2UtMTt0Pj10aGlzLmluZGV4O3QtLSlyPShyPDw4KSt0aGlzLmJ5dGVBdCh0KTtyZXR1cm4gdGhpcy5pbmRleCs9ZSxyfSxyZWFkU3RyaW5nOmZ1bmN0aW9uKGUpe3JldHVybiBuLnRyYW5zZm9ybVRvKFwic3RyaW5nXCIsdGhpcy5yZWFkRGF0YShlKSl9LHJlYWREYXRhOmZ1bmN0aW9uKGUpe30sbGFzdEluZGV4T2ZTaWduYXR1cmU6ZnVuY3Rpb24oZSl7fSxyZWFkQW5kQ2hlY2tTaWduYXR1cmU6ZnVuY3Rpb24oZSl7fSxyZWFkRGF0ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucmVhZEludCg0KTtyZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEMoMTk4MCsoZT4+MjUmMTI3KSwoZT4+MjEmMTUpLTEsZT4+MTYmMzEsZT4+MTEmMzEsZT4+NSY2MywoMzEmZSk8PDEpKX19LHQuZXhwb3J0cz1pfSx7XCIuLi91dGlsc1wiOjMyfV0sMTk6W2Z1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1lKFwiLi9VaW50OEFycmF5UmVhZGVyXCIpO2Z1bmN0aW9uIGkoZSl7bi5jYWxsKHRoaXMsZSl9ZShcIi4uL3V0aWxzXCIpLmluaGVyaXRzKGksbiksaS5wcm90b3R5cGUucmVhZERhdGE9ZnVuY3Rpb24oZSl7dGhpcy5jaGVja09mZnNldChlKTt2YXIgdD10aGlzLmRhdGEuc2xpY2UodGhpcy56ZXJvK3RoaXMuaW5kZXgsdGhpcy56ZXJvK3RoaXMuaW5kZXgrZSk7cmV0dXJuIHRoaXMuaW5kZXgrPWUsdH0sdC5leHBvcnRzPWl9LHtcIi4uL3V0aWxzXCI6MzIsXCIuL1VpbnQ4QXJyYXlSZWFkZXJcIjoyMX1dLDIwOltmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49ZShcIi4vRGF0YVJlYWRlclwiKTtmdW5jdGlvbiBpKGUpe24uY2FsbCh0aGlzLGUpfWUoXCIuLi91dGlsc1wiKS5pbmhlcml0cyhpLG4pLGkucHJvdG90eXBlLmJ5dGVBdD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5kYXRhLmNoYXJDb2RlQXQodGhpcy56ZXJvK2UpfSxpLnByb3RvdHlwZS5sYXN0SW5kZXhPZlNpZ25hdHVyZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5kYXRhLmxhc3RJbmRleE9mKGUpLXRoaXMuemVyb30saS5wcm90b3R5cGUucmVhZEFuZENoZWNrU2lnbmF0dXJlPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09dGhpcy5yZWFkRGF0YSg0KX0saS5wcm90b3R5cGUucmVhZERhdGE9ZnVuY3Rpb24oZSl7dGhpcy5jaGVja09mZnNldChlKTt2YXIgdD10aGlzLmRhdGEuc2xpY2UodGhpcy56ZXJvK3RoaXMuaW5kZXgsdGhpcy56ZXJvK3RoaXMuaW5kZXgrZSk7cmV0dXJuIHRoaXMuaW5kZXgrPWUsdH0sdC5leHBvcnRzPWl9LHtcIi4uL3V0aWxzXCI6MzIsXCIuL0RhdGFSZWFkZXJcIjoxOH1dLDIxOltmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49ZShcIi4vQXJyYXlSZWFkZXJcIik7ZnVuY3Rpb24gaShlKXtuLmNhbGwodGhpcyxlKX1lKFwiLi4vdXRpbHNcIikuaW5oZXJpdHMoaSxuKSxpLnByb3RvdHlwZS5yZWFkRGF0YT1mdW5jdGlvbihlKXtpZih0aGlzLmNoZWNrT2Zmc2V0KGUpLDA9PT1lKXJldHVybiBuZXcgVWludDhBcnJheSgwKTt2YXIgdD10aGlzLmRhdGEuc3ViYXJyYXkodGhpcy56ZXJvK3RoaXMuaW5kZXgsdGhpcy56ZXJvK3RoaXMuaW5kZXgrZSk7cmV0dXJuIHRoaXMuaW5kZXgrPWUsdH0sdC5leHBvcnRzPWl9LHtcIi4uL3V0aWxzXCI6MzIsXCIuL0FycmF5UmVhZGVyXCI6MTd9XSwyMjpbZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPWUoXCIuLi91dGlsc1wiKSxpPWUoXCIuLi9zdXBwb3J0XCIpLHM9ZShcIi4vQXJyYXlSZWFkZXJcIiksYT1lKFwiLi9TdHJpbmdSZWFkZXJcIiksbz1lKFwiLi9Ob2RlQnVmZmVyUmVhZGVyXCIpLGg9ZShcIi4vVWludDhBcnJheVJlYWRlclwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9bi5nZXRUeXBlT2YoZSk7cmV0dXJuIG4uY2hlY2tTdXBwb3J0KHQpLFwic3RyaW5nXCIhPT10fHxpLnVpbnQ4YXJyYXk/XCJub2RlYnVmZmVyXCI9PT10P25ldyBvKGUpOmkudWludDhhcnJheT9uZXcgaChuLnRyYW5zZm9ybVRvKFwidWludDhhcnJheVwiLGUpKTpuZXcgcyhuLnRyYW5zZm9ybVRvKFwiYXJyYXlcIixlKSk6bmV3IGEoZSl9fSx7XCIuLi9zdXBwb3J0XCI6MzAsXCIuLi91dGlsc1wiOjMyLFwiLi9BcnJheVJlYWRlclwiOjE3LFwiLi9Ob2RlQnVmZmVyUmVhZGVyXCI6MTksXCIuL1N0cmluZ1JlYWRlclwiOjIwLFwiLi9VaW50OEFycmF5UmVhZGVyXCI6MjF9XSwyMzpbZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3IuTE9DQUxfRklMRV9IRUFERVI9XCJQS1x1MDAwM1x1MDAwNFwiLHIuQ0VOVFJBTF9GSUxFX0hFQURFUj1cIlBLXHUwMDAxXHUwMDAyXCIsci5DRU5UUkFMX0RJUkVDVE9SWV9FTkQ9XCJQS1x1MDAwNVx1MDAwNlwiLHIuWklQNjRfQ0VOVFJBTF9ESVJFQ1RPUllfTE9DQVRPUj1cIlBLXHUwMDA2XHUwMDA3XCIsci5aSVA2NF9DRU5UUkFMX0RJUkVDVE9SWV9FTkQ9XCJQS1x1MDAwNlx1MDAwNlwiLHIuREFUQV9ERVNDUklQVE9SPVwiUEtcdTAwMDdcXGJcIn0se31dLDI0OltmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49ZShcIi4vR2VuZXJpY1dvcmtlclwiKSxpPWUoXCIuLi91dGlsc1wiKTtmdW5jdGlvbiBzKGUpe24uY2FsbCh0aGlzLFwiQ29udmVydFdvcmtlciB0byBcIitlKSx0aGlzLmRlc3RUeXBlPWV9aS5pbmhlcml0cyhzLG4pLHMucHJvdG90eXBlLnByb2Nlc3NDaHVuaz1mdW5jdGlvbihlKXt0aGlzLnB1c2goe2RhdGE6aS50cmFuc2Zvcm1Ubyh0aGlzLmRlc3RUeXBlLGUuZGF0YSksbWV0YTplLm1ldGF9KX0sdC5leHBvcnRzPXN9LHtcIi4uL3V0aWxzXCI6MzIsXCIuL0dlbmVyaWNXb3JrZXJcIjoyOH1dLDI1OltmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49ZShcIi4vR2VuZXJpY1dvcmtlclwiKSxpPWUoXCIuLi9jcmMzMlwiKTtmdW5jdGlvbiBzKCl7bi5jYWxsKHRoaXMsXCJDcmMzMlByb2JlXCIpLHRoaXMud2l0aFN0cmVhbUluZm8oXCJjcmMzMlwiLDApfWUoXCIuLi91dGlsc1wiKS5pbmhlcml0cyhzLG4pLHMucHJvdG90eXBlLnByb2Nlc3NDaHVuaz1mdW5jdGlvbihlKXt0aGlzLnN0cmVhbUluZm8uY3JjMzI9aShlLmRhdGEsdGhpcy5zdHJlYW1JbmZvLmNyYzMyfHwwKSx0aGlzLnB1c2goZSl9LHQuZXhwb3J0cz1zfSx7XCIuLi9jcmMzMlwiOjQsXCIuLi91dGlsc1wiOjMyLFwiLi9HZW5lcmljV29ya2VyXCI6Mjh9XSwyNjpbZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPWUoXCIuLi91dGlsc1wiKSxpPWUoXCIuL0dlbmVyaWNXb3JrZXJcIik7ZnVuY3Rpb24gcyhlKXtpLmNhbGwodGhpcyxcIkRhdGFMZW5ndGhQcm9iZSBmb3IgXCIrZSksdGhpcy5wcm9wTmFtZT1lLHRoaXMud2l0aFN0cmVhbUluZm8oZSwwKX1uLmluaGVyaXRzKHMsaSkscy5wcm90b3R5cGUucHJvY2Vzc0NodW5rPWZ1bmN0aW9uKGUpe2lmKGUpe3ZhciB0PXRoaXMuc3RyZWFtSW5mb1t0aGlzLnByb3BOYW1lXXx8MDt0aGlzLnN0cmVhbUluZm9bdGhpcy5wcm9wTmFtZV09dCtlLmRhdGEubGVuZ3RofWkucHJvdG90eXBlLnByb2Nlc3NDaHVuay5jYWxsKHRoaXMsZSl9LHQuZXhwb3J0cz1zfSx7XCIuLi91dGlsc1wiOjMyLFwiLi9HZW5lcmljV29ya2VyXCI6Mjh9XSwyNzpbZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPWUoXCIuLi91dGlsc1wiKSxpPWUoXCIuL0dlbmVyaWNXb3JrZXJcIik7ZnVuY3Rpb24gcyhlKXtpLmNhbGwodGhpcyxcIkRhdGFXb3JrZXJcIik7dmFyIHQ9dGhpczt0aGlzLmRhdGFJc1JlYWR5PSExLHRoaXMuaW5kZXg9MCx0aGlzLm1heD0wLHRoaXMuZGF0YT1udWxsLHRoaXMudHlwZT1cIlwiLHRoaXMuX3RpY2tTY2hlZHVsZWQ9ITEsZS50aGVuKGZ1bmN0aW9uKGUpe3QuZGF0YUlzUmVhZHk9ITAsdC5kYXRhPWUsdC5tYXg9ZSYmZS5sZW5ndGh8fDAsdC50eXBlPW4uZ2V0VHlwZU9mKGUpLHQuaXNQYXVzZWR8fHQuX3RpY2tBbmRSZXBlYXQoKX0sZnVuY3Rpb24oZSl7dC5lcnJvcihlKX0pfW4uaW5oZXJpdHMocyxpKSxzLnByb3RvdHlwZS5jbGVhblVwPWZ1bmN0aW9uKCl7aS5wcm90b3R5cGUuY2xlYW5VcC5jYWxsKHRoaXMpLHRoaXMuZGF0YT1udWxsfSxzLnByb3RvdHlwZS5yZXN1bWU9ZnVuY3Rpb24oKXtyZXR1cm4hIWkucHJvdG90eXBlLnJlc3VtZS5jYWxsKHRoaXMpJiYoIXRoaXMuX3RpY2tTY2hlZHVsZWQmJnRoaXMuZGF0YUlzUmVhZHkmJih0aGlzLl90aWNrU2NoZWR1bGVkPSEwLG4uZGVsYXkodGhpcy5fdGlja0FuZFJlcGVhdCxbXSx0aGlzKSksITApfSxzLnByb3RvdHlwZS5fdGlja0FuZFJlcGVhdD1mdW5jdGlvbigpe3RoaXMuX3RpY2tTY2hlZHVsZWQ9ITEsdGhpcy5pc1BhdXNlZHx8dGhpcy5pc0ZpbmlzaGVkfHwodGhpcy5fdGljaygpLHRoaXMuaXNGaW5pc2hlZHx8KG4uZGVsYXkodGhpcy5fdGlja0FuZFJlcGVhdCxbXSx0aGlzKSx0aGlzLl90aWNrU2NoZWR1bGVkPSEwKSl9LHMucHJvdG90eXBlLl90aWNrPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1BhdXNlZHx8dGhpcy5pc0ZpbmlzaGVkKXJldHVybiExO3ZhciBlPW51bGwsdD1NYXRoLm1pbih0aGlzLm1heCx0aGlzLmluZGV4KzE2Mzg0KTtpZih0aGlzLmluZGV4Pj10aGlzLm1heClyZXR1cm4gdGhpcy5lbmQoKTtzd2l0Y2godGhpcy50eXBlKXtjYXNlXCJzdHJpbmdcIjplPXRoaXMuZGF0YS5zdWJzdHJpbmcodGhpcy5pbmRleCx0KTticmVhaztjYXNlXCJ1aW50OGFycmF5XCI6ZT10aGlzLmRhdGEuc3ViYXJyYXkodGhpcy5pbmRleCx0KTticmVhaztjYXNlXCJhcnJheVwiOmNhc2VcIm5vZGVidWZmZXJcIjplPXRoaXMuZGF0YS5zbGljZSh0aGlzLmluZGV4LHQpfXJldHVybiB0aGlzLmluZGV4PXQsdGhpcy5wdXNoKHtkYXRhOmUsbWV0YTp7cGVyY2VudDp0aGlzLm1heD90aGlzLmluZGV4L3RoaXMubWF4KjEwMDowfX0pfSx0LmV4cG9ydHM9c30se1wiLi4vdXRpbHNcIjozMixcIi4vR2VuZXJpY1dvcmtlclwiOjI4fV0sMjg6W2Z1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBuKGUpe3RoaXMubmFtZT1lfHxcImRlZmF1bHRcIix0aGlzLnN0cmVhbUluZm89e30sdGhpcy5nZW5lcmF0ZWRFcnJvcj1udWxsLHRoaXMuZXh0cmFTdHJlYW1JbmZvPXt9LHRoaXMuaXNQYXVzZWQ9ITAsdGhpcy5pc0ZpbmlzaGVkPSExLHRoaXMuaXNMb2NrZWQ9ITEsdGhpcy5fbGlzdGVuZXJzPXtkYXRhOltdLGVuZDpbXSxlcnJvcjpbXX0sdGhpcy5wcmV2aW91cz1udWxsfW4ucHJvdG90eXBlPXtwdXNoOmZ1bmN0aW9uKGUpe3RoaXMuZW1pdChcImRhdGFcIixlKX0sZW5kOmZ1bmN0aW9uKCl7aWYodGhpcy5pc0ZpbmlzaGVkKXJldHVybiExO3RoaXMuZmx1c2goKTt0cnl7dGhpcy5lbWl0KFwiZW5kXCIpLHRoaXMuY2xlYW5VcCgpLHRoaXMuaXNGaW5pc2hlZD0hMH1jYXRjaChlKXt0aGlzLmVtaXQoXCJlcnJvclwiLGUpfXJldHVybiEwfSxlcnJvcjpmdW5jdGlvbihlKXtyZXR1cm4hdGhpcy5pc0ZpbmlzaGVkJiYodGhpcy5pc1BhdXNlZD90aGlzLmdlbmVyYXRlZEVycm9yPWU6KHRoaXMuaXNGaW5pc2hlZD0hMCx0aGlzLmVtaXQoXCJlcnJvclwiLGUpLHRoaXMucHJldmlvdXMmJnRoaXMucHJldmlvdXMuZXJyb3IoZSksdGhpcy5jbGVhblVwKCkpLCEwKX0sb246ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fbGlzdGVuZXJzW2VdLnB1c2godCksdGhpc30sY2xlYW5VcDpmdW5jdGlvbigpe3RoaXMuc3RyZWFtSW5mbz10aGlzLmdlbmVyYXRlZEVycm9yPXRoaXMuZXh0cmFTdHJlYW1JbmZvPW51bGwsdGhpcy5fbGlzdGVuZXJzPVtdfSxlbWl0OmZ1bmN0aW9uKGUsdCl7aWYodGhpcy5fbGlzdGVuZXJzW2VdKWZvcih2YXIgcj0wO3I8dGhpcy5fbGlzdGVuZXJzW2VdLmxlbmd0aDtyKyspdGhpcy5fbGlzdGVuZXJzW2VdW3JdLmNhbGwodGhpcyx0KX0scGlwZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5yZWdpc3RlclByZXZpb3VzKHRoaXMpfSxyZWdpc3RlclByZXZpb3VzOmZ1bmN0aW9uKGUpe2lmKHRoaXMuaXNMb2NrZWQpdGhyb3cgbmV3IEVycm9yKFwiVGhlIHN0cmVhbSAnXCIrdGhpcytcIicgaGFzIGFscmVhZHkgYmVlbiB1c2VkLlwiKTt0aGlzLnN0cmVhbUluZm89ZS5zdHJlYW1JbmZvLHRoaXMubWVyZ2VTdHJlYW1JbmZvKCksdGhpcy5wcmV2aW91cz1lO3ZhciB0PXRoaXM7cmV0dXJuIGUub24oXCJkYXRhXCIsZnVuY3Rpb24oZSl7dC5wcm9jZXNzQ2h1bmsoZSl9KSxlLm9uKFwiZW5kXCIsZnVuY3Rpb24oKXt0LmVuZCgpfSksZS5vbihcImVycm9yXCIsZnVuY3Rpb24oZSl7dC5lcnJvcihlKX0pLHRoaXN9LHBhdXNlOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaXNQYXVzZWQmJiF0aGlzLmlzRmluaXNoZWQmJih0aGlzLmlzUGF1c2VkPSEwLHRoaXMucHJldmlvdXMmJnRoaXMucHJldmlvdXMucGF1c2UoKSwhMCl9LHJlc3VtZTpmdW5jdGlvbigpe2lmKCF0aGlzLmlzUGF1c2VkfHx0aGlzLmlzRmluaXNoZWQpcmV0dXJuITE7dmFyIGU9dGhpcy5pc1BhdXNlZD0hMTtyZXR1cm4gdGhpcy5nZW5lcmF0ZWRFcnJvciYmKHRoaXMuZXJyb3IodGhpcy5nZW5lcmF0ZWRFcnJvciksZT0hMCksdGhpcy5wcmV2aW91cyYmdGhpcy5wcmV2aW91cy5yZXN1bWUoKSwhZX0sZmx1c2g6ZnVuY3Rpb24oKXt9LHByb2Nlc3NDaHVuazpmdW5jdGlvbihlKXt0aGlzLnB1c2goZSl9LHdpdGhTdHJlYW1JbmZvOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZXh0cmFTdHJlYW1JbmZvW2VdPXQsdGhpcy5tZXJnZVN0cmVhbUluZm8oKSx0aGlzfSxtZXJnZVN0cmVhbUluZm86ZnVuY3Rpb24oKXtmb3IodmFyIGUgaW4gdGhpcy5leHRyYVN0cmVhbUluZm8pdGhpcy5leHRyYVN0cmVhbUluZm8uaGFzT3duUHJvcGVydHkoZSkmJih0aGlzLnN0cmVhbUluZm9bZV09dGhpcy5leHRyYVN0cmVhbUluZm9bZV0pfSxsb2NrOmZ1bmN0aW9uKCl7aWYodGhpcy5pc0xvY2tlZCl0aHJvdyBuZXcgRXJyb3IoXCJUaGUgc3RyZWFtICdcIit0aGlzK1wiJyBoYXMgYWxyZWFkeSBiZWVuIHVzZWQuXCIpO3RoaXMuaXNMb2NrZWQ9ITAsdGhpcy5wcmV2aW91cyYmdGhpcy5wcmV2aW91cy5sb2NrKCl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7dmFyIGU9XCJXb3JrZXIgXCIrdGhpcy5uYW1lO3JldHVybiB0aGlzLnByZXZpb3VzP3RoaXMucHJldmlvdXMrXCIgLT4gXCIrZTplfX0sdC5leHBvcnRzPW59LHt9XSwyOTpbZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBoPWUoXCIuLi91dGlsc1wiKSxpPWUoXCIuL0NvbnZlcnRXb3JrZXJcIikscz1lKFwiLi9HZW5lcmljV29ya2VyXCIpLHU9ZShcIi4uL2Jhc2U2NFwiKSxuPWUoXCIuLi9zdXBwb3J0XCIpLGE9ZShcIi4uL2V4dGVybmFsXCIpLG89bnVsbDtpZihuLm5vZGVzdHJlYW0pdHJ5e289ZShcIi4uL25vZGVqcy9Ob2RlanNTdHJlYW1PdXRwdXRBZGFwdGVyXCIpfWNhdGNoKGUpe31mdW5jdGlvbiBsKGUsbyl7cmV0dXJuIG5ldyBhLlByb21pc2UoZnVuY3Rpb24odCxyKXt2YXIgbj1bXSxpPWUuX2ludGVybmFsVHlwZSxzPWUuX291dHB1dFR5cGUsYT1lLl9taW1lVHlwZTtlLm9uKFwiZGF0YVwiLGZ1bmN0aW9uKGUsdCl7bi5wdXNoKGUpLG8mJm8odCl9KS5vbihcImVycm9yXCIsZnVuY3Rpb24oZSl7bj1bXSxyKGUpfSkub24oXCJlbmRcIixmdW5jdGlvbigpe3RyeXt2YXIgZT1mdW5jdGlvbihlLHQscil7c3dpdGNoKGUpe2Nhc2VcImJsb2JcIjpyZXR1cm4gaC5uZXdCbG9iKGgudHJhbnNmb3JtVG8oXCJhcnJheWJ1ZmZlclwiLHQpLHIpO2Nhc2VcImJhc2U2NFwiOnJldHVybiB1LmVuY29kZSh0KTtkZWZhdWx0OnJldHVybiBoLnRyYW5zZm9ybVRvKGUsdCl9fShzLGZ1bmN0aW9uKGUsdCl7dmFyIHIsbj0wLGk9bnVsbCxzPTA7Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKylzKz10W3JdLmxlbmd0aDtzd2l0Y2goZSl7Y2FzZVwic3RyaW5nXCI6cmV0dXJuIHQuam9pbihcIlwiKTtjYXNlXCJhcnJheVwiOnJldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLHQpO2Nhc2VcInVpbnQ4YXJyYXlcIjpmb3IoaT1uZXcgVWludDhBcnJheShzKSxyPTA7cjx0Lmxlbmd0aDtyKyspaS5zZXQodFtyXSxuKSxuKz10W3JdLmxlbmd0aDtyZXR1cm4gaTtjYXNlXCJub2RlYnVmZmVyXCI6cmV0dXJuIEJ1ZmZlci5jb25jYXQodCk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJjb25jYXQgOiB1bnN1cHBvcnRlZCB0eXBlICdcIitlK1wiJ1wiKX19KGksbiksYSk7dChlKX1jYXRjaChlKXtyKGUpfW49W119KS5yZXN1bWUoKX0pfWZ1bmN0aW9uIGYoZSx0LHIpe3ZhciBuPXQ7c3dpdGNoKHQpe2Nhc2VcImJsb2JcIjpjYXNlXCJhcnJheWJ1ZmZlclwiOm49XCJ1aW50OGFycmF5XCI7YnJlYWs7Y2FzZVwiYmFzZTY0XCI6bj1cInN0cmluZ1wifXRyeXt0aGlzLl9pbnRlcm5hbFR5cGU9bix0aGlzLl9vdXRwdXRUeXBlPXQsdGhpcy5fbWltZVR5cGU9cixoLmNoZWNrU3VwcG9ydChuKSx0aGlzLl93b3JrZXI9ZS5waXBlKG5ldyBpKG4pKSxlLmxvY2soKX1jYXRjaChlKXt0aGlzLl93b3JrZXI9bmV3IHMoXCJlcnJvclwiKSx0aGlzLl93b3JrZXIuZXJyb3IoZSl9fWYucHJvdG90eXBlPXthY2N1bXVsYXRlOmZ1bmN0aW9uKGUpe3JldHVybiBsKHRoaXMsZSl9LG9uOmZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcztyZXR1cm5cImRhdGFcIj09PWU/dGhpcy5fd29ya2VyLm9uKGUsZnVuY3Rpb24oZSl7dC5jYWxsKHIsZS5kYXRhLGUubWV0YSl9KTp0aGlzLl93b3JrZXIub24oZSxmdW5jdGlvbigpe2guZGVsYXkodCxhcmd1bWVudHMscil9KSx0aGlzfSxyZXN1bWU6ZnVuY3Rpb24oKXtyZXR1cm4gaC5kZWxheSh0aGlzLl93b3JrZXIucmVzdW1lLFtdLHRoaXMuX3dvcmtlciksdGhpc30scGF1c2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd29ya2VyLnBhdXNlKCksdGhpc30sdG9Ob2RlanNTdHJlYW06ZnVuY3Rpb24oZSl7aWYoaC5jaGVja1N1cHBvcnQoXCJub2Rlc3RyZWFtXCIpLFwibm9kZWJ1ZmZlclwiIT09dGhpcy5fb3V0cHV0VHlwZSl0aHJvdyBuZXcgRXJyb3IodGhpcy5fb3V0cHV0VHlwZStcIiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgbWV0aG9kXCIpO3JldHVybiBuZXcgbyh0aGlzLHtvYmplY3RNb2RlOlwibm9kZWJ1ZmZlclwiIT09dGhpcy5fb3V0cHV0VHlwZX0sZSl9fSx0LmV4cG9ydHM9Zn0se1wiLi4vYmFzZTY0XCI6MSxcIi4uL2V4dGVybmFsXCI6NixcIi4uL25vZGVqcy9Ob2RlanNTdHJlYW1PdXRwdXRBZGFwdGVyXCI6MTMsXCIuLi9zdXBwb3J0XCI6MzAsXCIuLi91dGlsc1wiOjMyLFwiLi9Db252ZXJ0V29ya2VyXCI6MjQsXCIuL0dlbmVyaWNXb3JrZXJcIjoyOH1dLDMwOltmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7aWYoci5iYXNlNjQ9ITAsci5hcnJheT0hMCxyLnN0cmluZz0hMCxyLmFycmF5YnVmZmVyPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFVpbnQ4QXJyYXksci5ub2RlYnVmZmVyPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBCdWZmZXIsci51aW50OGFycmF5PVwidW5kZWZpbmVkXCIhPXR5cGVvZiBVaW50OEFycmF5LFwidW5kZWZpbmVkXCI9PXR5cGVvZiBBcnJheUJ1ZmZlcilyLmJsb2I9ITE7ZWxzZXt2YXIgbj1uZXcgQXJyYXlCdWZmZXIoMCk7dHJ5e3IuYmxvYj0wPT09bmV3IEJsb2IoW25dLHt0eXBlOlwiYXBwbGljYXRpb24vemlwXCJ9KS5zaXplfWNhdGNoKGUpe3RyeXt2YXIgaT1uZXcoc2VsZi5CbG9iQnVpbGRlcnx8c2VsZi5XZWJLaXRCbG9iQnVpbGRlcnx8c2VsZi5Nb3pCbG9iQnVpbGRlcnx8c2VsZi5NU0Jsb2JCdWlsZGVyKTtpLmFwcGVuZChuKSxyLmJsb2I9MD09PWkuZ2V0QmxvYihcImFwcGxpY2F0aW9uL3ppcFwiKS5zaXplfWNhdGNoKGUpe3IuYmxvYj0hMX19fXRyeXtyLm5vZGVzdHJlYW09ISFlKFwicmVhZGFibGUtc3RyZWFtXCIpLlJlYWRhYmxlfWNhdGNoKGUpe3Iubm9kZXN0cmVhbT0hMX19LHtcInJlYWRhYmxlLXN0cmVhbVwiOjE2fV0sMzE6W2Z1bmN0aW9uKGUsdCxzKXtcInVzZSBzdHJpY3RcIjtmb3IodmFyIG89ZShcIi4vdXRpbHNcIiksaD1lKFwiLi9zdXBwb3J0XCIpLHI9ZShcIi4vbm9kZWpzVXRpbHNcIiksbj1lKFwiLi9zdHJlYW0vR2VuZXJpY1dvcmtlclwiKSx1PW5ldyBBcnJheSgyNTYpLGk9MDtpPDI1NjtpKyspdVtpXT0yNTI8PWk/NjoyNDg8PWk/NToyNDA8PWk/NDoyMjQ8PWk/MzoxOTI8PWk/MjoxO3VbMjU0XT11WzI1NF09MTtmdW5jdGlvbiBhKCl7bi5jYWxsKHRoaXMsXCJ1dGYtOCBkZWNvZGVcIiksdGhpcy5sZWZ0T3Zlcj1udWxsfWZ1bmN0aW9uIGwoKXtuLmNhbGwodGhpcyxcInV0Zi04IGVuY29kZVwiKX1zLnV0ZjhlbmNvZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGgubm9kZWJ1ZmZlcj9yLm5ld0J1ZmZlckZyb20oZSxcInV0Zi04XCIpOmZ1bmN0aW9uKGUpe3ZhciB0LHIsbixpLHMsYT1lLmxlbmd0aCxvPTA7Zm9yKGk9MDtpPGE7aSsrKTU1Mjk2PT0oNjQ1MTImKHI9ZS5jaGFyQ29kZUF0KGkpKSkmJmkrMTxhJiY1NjMyMD09KDY0NTEyJihuPWUuY2hhckNvZGVBdChpKzEpKSkmJihyPTY1NTM2KyhyLTU1Mjk2PDwxMCkrKG4tNTYzMjApLGkrKyksbys9cjwxMjg/MTpyPDIwNDg/MjpyPDY1NTM2PzM6NDtmb3IodD1oLnVpbnQ4YXJyYXk/bmV3IFVpbnQ4QXJyYXkobyk6bmV3IEFycmF5KG8pLGk9cz0wO3M8bztpKyspNTUyOTY9PSg2NDUxMiYocj1lLmNoYXJDb2RlQXQoaSkpKSYmaSsxPGEmJjU2MzIwPT0oNjQ1MTImKG49ZS5jaGFyQ29kZUF0KGkrMSkpKSYmKHI9NjU1MzYrKHItNTUyOTY8PDEwKSsobi01NjMyMCksaSsrKSxyPDEyOD90W3MrK109cjoocjwyMDQ4P3RbcysrXT0xOTJ8cj4+PjY6KHI8NjU1MzY/dFtzKytdPTIyNHxyPj4+MTI6KHRbcysrXT0yNDB8cj4+PjE4LHRbcysrXT0xMjh8cj4+PjEyJjYzKSx0W3MrK109MTI4fHI+Pj42JjYzKSx0W3MrK109MTI4fDYzJnIpO3JldHVybiB0fShlKX0scy51dGY4ZGVjb2RlPWZ1bmN0aW9uKGUpe3JldHVybiBoLm5vZGVidWZmZXI/by50cmFuc2Zvcm1UbyhcIm5vZGVidWZmZXJcIixlKS50b1N0cmluZyhcInV0Zi04XCIpOmZ1bmN0aW9uKGUpe3ZhciB0LHIsbixpLHM9ZS5sZW5ndGgsYT1uZXcgQXJyYXkoMipzKTtmb3IodD1yPTA7dDxzOylpZigobj1lW3QrK10pPDEyOClhW3IrK109bjtlbHNlIGlmKDQ8KGk9dVtuXSkpYVtyKytdPTY1NTMzLHQrPWktMTtlbHNle2ZvcihuJj0yPT09aT8zMTozPT09aT8xNTo3OzE8aSYmdDxzOyluPW48PDZ8NjMmZVt0KytdLGktLTsxPGk/YVtyKytdPTY1NTMzOm48NjU1MzY/YVtyKytdPW46KG4tPTY1NTM2LGFbcisrXT01NTI5NnxuPj4xMCYxMDIzLGFbcisrXT01NjMyMHwxMDIzJm4pfXJldHVybiBhLmxlbmd0aCE9PXImJihhLnN1YmFycmF5P2E9YS5zdWJhcnJheSgwLHIpOmEubGVuZ3RoPXIpLG8uYXBwbHlGcm9tQ2hhckNvZGUoYSl9KGU9by50cmFuc2Zvcm1UbyhoLnVpbnQ4YXJyYXk/XCJ1aW50OGFycmF5XCI6XCJhcnJheVwiLGUpKX0sby5pbmhlcml0cyhhLG4pLGEucHJvdG90eXBlLnByb2Nlc3NDaHVuaz1mdW5jdGlvbihlKXt2YXIgdD1vLnRyYW5zZm9ybVRvKGgudWludDhhcnJheT9cInVpbnQ4YXJyYXlcIjpcImFycmF5XCIsZS5kYXRhKTtpZih0aGlzLmxlZnRPdmVyJiZ0aGlzLmxlZnRPdmVyLmxlbmd0aCl7aWYoaC51aW50OGFycmF5KXt2YXIgcj10Oyh0PW5ldyBVaW50OEFycmF5KHIubGVuZ3RoK3RoaXMubGVmdE92ZXIubGVuZ3RoKSkuc2V0KHRoaXMubGVmdE92ZXIsMCksdC5zZXQocix0aGlzLmxlZnRPdmVyLmxlbmd0aCl9ZWxzZSB0PXRoaXMubGVmdE92ZXIuY29uY2F0KHQpO3RoaXMubGVmdE92ZXI9bnVsbH12YXIgbj1mdW5jdGlvbihlLHQpe3ZhciByO2ZvcigodD10fHxlLmxlbmd0aCk+ZS5sZW5ndGgmJih0PWUubGVuZ3RoKSxyPXQtMTswPD1yJiYxMjg9PSgxOTImZVtyXSk7KXItLTtyZXR1cm4gcjwwP3Q6MD09PXI/dDpyK3VbZVtyXV0+dD9yOnR9KHQpLGk9dDtuIT09dC5sZW5ndGgmJihoLnVpbnQ4YXJyYXk/KGk9dC5zdWJhcnJheSgwLG4pLHRoaXMubGVmdE92ZXI9dC5zdWJhcnJheShuLHQubGVuZ3RoKSk6KGk9dC5zbGljZSgwLG4pLHRoaXMubGVmdE92ZXI9dC5zbGljZShuLHQubGVuZ3RoKSkpLHRoaXMucHVzaCh7ZGF0YTpzLnV0ZjhkZWNvZGUoaSksbWV0YTplLm1ldGF9KX0sYS5wcm90b3R5cGUuZmx1c2g9ZnVuY3Rpb24oKXt0aGlzLmxlZnRPdmVyJiZ0aGlzLmxlZnRPdmVyLmxlbmd0aCYmKHRoaXMucHVzaCh7ZGF0YTpzLnV0ZjhkZWNvZGUodGhpcy5sZWZ0T3ZlciksbWV0YTp7fX0pLHRoaXMubGVmdE92ZXI9bnVsbCl9LHMuVXRmOERlY29kZVdvcmtlcj1hLG8uaW5oZXJpdHMobCxuKSxsLnByb3RvdHlwZS5wcm9jZXNzQ2h1bms9ZnVuY3Rpb24oZSl7dGhpcy5wdXNoKHtkYXRhOnMudXRmOGVuY29kZShlLmRhdGEpLG1ldGE6ZS5tZXRhfSl9LHMuVXRmOEVuY29kZVdvcmtlcj1sfSx7XCIuL25vZGVqc1V0aWxzXCI6MTQsXCIuL3N0cmVhbS9HZW5lcmljV29ya2VyXCI6MjgsXCIuL3N1cHBvcnRcIjozMCxcIi4vdXRpbHNcIjozMn1dLDMyOltmdW5jdGlvbihlLHQsYSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIG89ZShcIi4vc3VwcG9ydFwiKSxoPWUoXCIuL2Jhc2U2NFwiKSxyPWUoXCIuL25vZGVqc1V0aWxzXCIpLHU9ZShcIi4vZXh0ZXJuYWxcIik7ZnVuY3Rpb24gbihlKXtyZXR1cm4gZX1mdW5jdGlvbiBsKGUsdCl7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDsrK3IpdFtyXT0yNTUmZS5jaGFyQ29kZUF0KHIpO3JldHVybiB0fWUoXCJzZXRpbW1lZGlhdGVcIiksYS5uZXdCbG9iPWZ1bmN0aW9uKHQscil7YS5jaGVja1N1cHBvcnQoXCJibG9iXCIpO3RyeXtyZXR1cm4gbmV3IEJsb2IoW3RdLHt0eXBlOnJ9KX1jYXRjaChlKXt0cnl7dmFyIG49bmV3KHNlbGYuQmxvYkJ1aWxkZXJ8fHNlbGYuV2ViS2l0QmxvYkJ1aWxkZXJ8fHNlbGYuTW96QmxvYkJ1aWxkZXJ8fHNlbGYuTVNCbG9iQnVpbGRlcik7cmV0dXJuIG4uYXBwZW5kKHQpLG4uZ2V0QmxvYihyKX1jYXRjaChlKXt0aHJvdyBuZXcgRXJyb3IoXCJCdWcgOiBjYW4ndCBjb25zdHJ1Y3QgdGhlIEJsb2IuXCIpfX19O3ZhciBpPXtzdHJpbmdpZnlCeUNodW5rOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1bXSxpPTAscz1lLmxlbmd0aDtpZihzPD1yKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsZSk7Zm9yKDtpPHM7KVwiYXJyYXlcIj09PXR8fFwibm9kZWJ1ZmZlclwiPT09dD9uLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGUuc2xpY2UoaSxNYXRoLm1pbihpK3IscykpKSk6bi5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxlLnN1YmFycmF5KGksTWF0aC5taW4oaStyLHMpKSkpLGkrPXI7cmV0dXJuIG4uam9pbihcIlwiKX0sc3RyaW5naWZ5QnlDaGFyOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1cIlwiLHI9MDtyPGUubGVuZ3RoO3IrKyl0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKGVbcl0pO3JldHVybiB0fSxhcHBseUNhbkJlVXNlZDp7dWludDhhcnJheTpmdW5jdGlvbigpe3RyeXtyZXR1cm4gby51aW50OGFycmF5JiYxPT09U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLG5ldyBVaW50OEFycmF5KDEpKS5sZW5ndGh9Y2F0Y2goZSl7cmV0dXJuITF9fSgpLG5vZGVidWZmZXI6ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIG8ubm9kZWJ1ZmZlciYmMT09PVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxyLmFsbG9jQnVmZmVyKDEpKS5sZW5ndGh9Y2F0Y2goZSl7cmV0dXJuITF9fSgpfX07ZnVuY3Rpb24gcyhlKXt2YXIgdD02NTUzNixyPWEuZ2V0VHlwZU9mKGUpLG49ITA7aWYoXCJ1aW50OGFycmF5XCI9PT1yP249aS5hcHBseUNhbkJlVXNlZC51aW50OGFycmF5Olwibm9kZWJ1ZmZlclwiPT09ciYmKG49aS5hcHBseUNhbkJlVXNlZC5ub2RlYnVmZmVyKSxuKWZvcig7MTx0Oyl0cnl7cmV0dXJuIGkuc3RyaW5naWZ5QnlDaHVuayhlLHIsdCl9Y2F0Y2goZSl7dD1NYXRoLmZsb29yKHQvMil9cmV0dXJuIGkuc3RyaW5naWZ5QnlDaGFyKGUpfWZ1bmN0aW9uIGYoZSx0KXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl0W3JdPWVbcl07cmV0dXJuIHR9YS5hcHBseUZyb21DaGFyQ29kZT1zO3ZhciBjPXt9O2Muc3RyaW5nPXtzdHJpbmc6bixhcnJheTpmdW5jdGlvbihlKXtyZXR1cm4gbChlLG5ldyBBcnJheShlLmxlbmd0aCkpfSxhcnJheWJ1ZmZlcjpmdW5jdGlvbihlKXtyZXR1cm4gYy5zdHJpbmcudWludDhhcnJheShlKS5idWZmZXJ9LHVpbnQ4YXJyYXk6ZnVuY3Rpb24oZSl7cmV0dXJuIGwoZSxuZXcgVWludDhBcnJheShlLmxlbmd0aCkpfSxub2RlYnVmZmVyOmZ1bmN0aW9uKGUpe3JldHVybiBsKGUsci5hbGxvY0J1ZmZlcihlLmxlbmd0aCkpfX0sYy5hcnJheT17c3RyaW5nOnMsYXJyYXk6bixhcnJheWJ1ZmZlcjpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoZSkuYnVmZmVyfSx1aW50OGFycmF5OmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgVWludDhBcnJheShlKX0sbm9kZWJ1ZmZlcjpmdW5jdGlvbihlKXtyZXR1cm4gci5uZXdCdWZmZXJGcm9tKGUpfX0sYy5hcnJheWJ1ZmZlcj17c3RyaW5nOmZ1bmN0aW9uKGUpe3JldHVybiBzKG5ldyBVaW50OEFycmF5KGUpKX0sYXJyYXk6ZnVuY3Rpb24oZSl7cmV0dXJuIGYobmV3IFVpbnQ4QXJyYXkoZSksbmV3IEFycmF5KGUuYnl0ZUxlbmd0aCkpfSxhcnJheWJ1ZmZlcjpuLHVpbnQ4YXJyYXk6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBVaW50OEFycmF5KGUpfSxub2RlYnVmZmVyOmZ1bmN0aW9uKGUpe3JldHVybiByLm5ld0J1ZmZlckZyb20obmV3IFVpbnQ4QXJyYXkoZSkpfX0sYy51aW50OGFycmF5PXtzdHJpbmc6cyxhcnJheTpmdW5jdGlvbihlKXtyZXR1cm4gZihlLG5ldyBBcnJheShlLmxlbmd0aCkpfSxhcnJheWJ1ZmZlcjpmdW5jdGlvbihlKXtyZXR1cm4gZS5idWZmZXJ9LHVpbnQ4YXJyYXk6bixub2RlYnVmZmVyOmZ1bmN0aW9uKGUpe3JldHVybiByLm5ld0J1ZmZlckZyb20oZSl9fSxjLm5vZGVidWZmZXI9e3N0cmluZzpzLGFycmF5OmZ1bmN0aW9uKGUpe3JldHVybiBmKGUsbmV3IEFycmF5KGUubGVuZ3RoKSl9LGFycmF5YnVmZmVyOmZ1bmN0aW9uKGUpe3JldHVybiBjLm5vZGVidWZmZXIudWludDhhcnJheShlKS5idWZmZXJ9LHVpbnQ4YXJyYXk6ZnVuY3Rpb24oZSl7cmV0dXJuIGYoZSxuZXcgVWludDhBcnJheShlLmxlbmd0aCkpfSxub2RlYnVmZmVyOm59LGEudHJhbnNmb3JtVG89ZnVuY3Rpb24oZSx0KXtpZih0PXR8fFwiXCIsIWUpcmV0dXJuIHQ7YS5jaGVja1N1cHBvcnQoZSk7dmFyIHI9YS5nZXRUeXBlT2YodCk7cmV0dXJuIGNbcl1bZV0odCl9LGEucmVzb2x2ZT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9ZS5zcGxpdChcIi9cIikscj1bXSxuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBpPXRbbl07XCIuXCI9PT1pfHxcIlwiPT09aSYmMCE9PW4mJm4hPT10Lmxlbmd0aC0xfHwoXCIuLlwiPT09aT9yLnBvcCgpOnIucHVzaChpKSl9cmV0dXJuIHIuam9pbihcIi9cIil9LGEuZ2V0VHlwZU9mPWZ1bmN0aW9uKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlP1wic3RyaW5nXCI6XCJbb2JqZWN0IEFycmF5XVwiPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpP1wiYXJyYXlcIjpvLm5vZGVidWZmZXImJnIuaXNCdWZmZXIoZSk/XCJub2RlYnVmZmVyXCI6by51aW50OGFycmF5JiZlIGluc3RhbmNlb2YgVWludDhBcnJheT9cInVpbnQ4YXJyYXlcIjpvLmFycmF5YnVmZmVyJiZlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXI/XCJhcnJheWJ1ZmZlclwiOnZvaWQgMH0sYS5jaGVja1N1cHBvcnQ9ZnVuY3Rpb24oZSl7aWYoIW9bZS50b0xvd2VyQ2FzZSgpXSl0aHJvdyBuZXcgRXJyb3IoZStcIiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgcGxhdGZvcm1cIil9LGEuTUFYX1ZBTFVFXzE2QklUUz02NTUzNSxhLk1BWF9WQUxVRV8zMkJJVFM9LTEsYS5wcmV0dHk9ZnVuY3Rpb24oZSl7dmFyIHQscixuPVwiXCI7Zm9yKHI9MDtyPChlfHxcIlwiKS5sZW5ndGg7cisrKW4rPVwiXFxcXHhcIisoKHQ9ZS5jaGFyQ29kZUF0KHIpKTwxNj9cIjBcIjpcIlwiKSt0LnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO3JldHVybiBufSxhLmRlbGF5PWZ1bmN0aW9uKGUsdCxyKXtzZXRJbW1lZGlhdGUoZnVuY3Rpb24oKXtlLmFwcGx5KHJ8fG51bGwsdHx8W10pfSl9LGEuaW5oZXJpdHM9ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiByKCl7fXIucHJvdG90eXBlPXQucHJvdG90eXBlLGUucHJvdG90eXBlPW5ldyByfSxhLmV4dGVuZD1mdW5jdGlvbigpe3ZhciBlLHQscj17fTtmb3IoZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspZm9yKHQgaW4gYXJndW1lbnRzW2VdKWFyZ3VtZW50c1tlXS5oYXNPd25Qcm9wZXJ0eSh0KSYmdm9pZCAwPT09clt0XSYmKHJbdF09YXJndW1lbnRzW2VdW3RdKTtyZXR1cm4gcn0sYS5wcmVwYXJlQ29udGVudD1mdW5jdGlvbihyLGUsbixpLHMpe3JldHVybiB1LlByb21pc2UucmVzb2x2ZShlKS50aGVuKGZ1bmN0aW9uKG4pe3JldHVybiBvLmJsb2ImJihuIGluc3RhbmNlb2YgQmxvYnx8LTEhPT1bXCJbb2JqZWN0IEZpbGVdXCIsXCJbb2JqZWN0IEJsb2JdXCJdLmluZGV4T2YoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG4pKSkmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBGaWxlUmVhZGVyP25ldyB1LlByb21pc2UoZnVuY3Rpb24odCxyKXt2YXIgZT1uZXcgRmlsZVJlYWRlcjtlLm9ubG9hZD1mdW5jdGlvbihlKXt0KGUudGFyZ2V0LnJlc3VsdCl9LGUub25lcnJvcj1mdW5jdGlvbihlKXtyKGUudGFyZ2V0LmVycm9yKX0sZS5yZWFkQXNBcnJheUJ1ZmZlcihuKX0pOm59KS50aGVuKGZ1bmN0aW9uKGUpe3ZhciB0PWEuZ2V0VHlwZU9mKGUpO3JldHVybiB0PyhcImFycmF5YnVmZmVyXCI9PT10P2U9YS50cmFuc2Zvcm1UbyhcInVpbnQ4YXJyYXlcIixlKTpcInN0cmluZ1wiPT09dCYmKHM/ZT1oLmRlY29kZShlKTpuJiYhMCE9PWkmJihlPWZ1bmN0aW9uKGUpe3JldHVybiBsKGUsby51aW50OGFycmF5P25ldyBVaW50OEFycmF5KGUubGVuZ3RoKTpuZXcgQXJyYXkoZS5sZW5ndGgpKX0oZSkpKSxlKTp1LlByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIkNhbid0IHJlYWQgdGhlIGRhdGEgb2YgJ1wiK3IrXCInLiBJcyBpdCBpbiBhIHN1cHBvcnRlZCBKYXZhU2NyaXB0IHR5cGUgKFN0cmluZywgQmxvYiwgQXJyYXlCdWZmZXIsIGV0YykgP1wiKSl9KX19LHtcIi4vYmFzZTY0XCI6MSxcIi4vZXh0ZXJuYWxcIjo2LFwiLi9ub2RlanNVdGlsc1wiOjE0LFwiLi9zdXBwb3J0XCI6MzAsc2V0aW1tZWRpYXRlOjU0fV0sMzM6W2Z1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1lKFwiLi9yZWFkZXIvcmVhZGVyRm9yXCIpLGk9ZShcIi4vdXRpbHNcIikscz1lKFwiLi9zaWduYXR1cmVcIiksYT1lKFwiLi96aXBFbnRyeVwiKSxvPShlKFwiLi91dGY4XCIpLGUoXCIuL3N1cHBvcnRcIikpO2Z1bmN0aW9uIGgoZSl7dGhpcy5maWxlcz1bXSx0aGlzLmxvYWRPcHRpb25zPWV9aC5wcm90b3R5cGU9e2NoZWNrU2lnbmF0dXJlOmZ1bmN0aW9uKGUpe2lmKCF0aGlzLnJlYWRlci5yZWFkQW5kQ2hlY2tTaWduYXR1cmUoZSkpe3RoaXMucmVhZGVyLmluZGV4LT00O3ZhciB0PXRoaXMucmVhZGVyLnJlYWRTdHJpbmcoNCk7dGhyb3cgbmV3IEVycm9yKFwiQ29ycnVwdGVkIHppcCBvciBidWc6IHVuZXhwZWN0ZWQgc2lnbmF0dXJlIChcIitpLnByZXR0eSh0KStcIiwgZXhwZWN0ZWQgXCIraS5wcmV0dHkoZSkrXCIpXCIpfX0saXNTaWduYXR1cmU6ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLnJlYWRlci5pbmRleDt0aGlzLnJlYWRlci5zZXRJbmRleChlKTt2YXIgbj10aGlzLnJlYWRlci5yZWFkU3RyaW5nKDQpPT09dDtyZXR1cm4gdGhpcy5yZWFkZXIuc2V0SW5kZXgociksbn0scmVhZEJsb2NrRW5kT2ZDZW50cmFsOmZ1bmN0aW9uKCl7dGhpcy5kaXNrTnVtYmVyPXRoaXMucmVhZGVyLnJlYWRJbnQoMiksdGhpcy5kaXNrV2l0aENlbnRyYWxEaXJTdGFydD10aGlzLnJlYWRlci5yZWFkSW50KDIpLHRoaXMuY2VudHJhbERpclJlY29yZHNPblRoaXNEaXNrPXRoaXMucmVhZGVyLnJlYWRJbnQoMiksdGhpcy5jZW50cmFsRGlyUmVjb3Jkcz10aGlzLnJlYWRlci5yZWFkSW50KDIpLHRoaXMuY2VudHJhbERpclNpemU9dGhpcy5yZWFkZXIucmVhZEludCg0KSx0aGlzLmNlbnRyYWxEaXJPZmZzZXQ9dGhpcy5yZWFkZXIucmVhZEludCg0KSx0aGlzLnppcENvbW1lbnRMZW5ndGg9dGhpcy5yZWFkZXIucmVhZEludCgyKTt2YXIgZT10aGlzLnJlYWRlci5yZWFkRGF0YSh0aGlzLnppcENvbW1lbnRMZW5ndGgpLHQ9by51aW50OGFycmF5P1widWludDhhcnJheVwiOlwiYXJyYXlcIixyPWkudHJhbnNmb3JtVG8odCxlKTt0aGlzLnppcENvbW1lbnQ9dGhpcy5sb2FkT3B0aW9ucy5kZWNvZGVGaWxlTmFtZShyKX0scmVhZEJsb2NrWmlwNjRFbmRPZkNlbnRyYWw6ZnVuY3Rpb24oKXt0aGlzLnppcDY0RW5kT2ZDZW50cmFsU2l6ZT10aGlzLnJlYWRlci5yZWFkSW50KDgpLHRoaXMucmVhZGVyLnNraXAoNCksdGhpcy5kaXNrTnVtYmVyPXRoaXMucmVhZGVyLnJlYWRJbnQoNCksdGhpcy5kaXNrV2l0aENlbnRyYWxEaXJTdGFydD10aGlzLnJlYWRlci5yZWFkSW50KDQpLHRoaXMuY2VudHJhbERpclJlY29yZHNPblRoaXNEaXNrPXRoaXMucmVhZGVyLnJlYWRJbnQoOCksdGhpcy5jZW50cmFsRGlyUmVjb3Jkcz10aGlzLnJlYWRlci5yZWFkSW50KDgpLHRoaXMuY2VudHJhbERpclNpemU9dGhpcy5yZWFkZXIucmVhZEludCg4KSx0aGlzLmNlbnRyYWxEaXJPZmZzZXQ9dGhpcy5yZWFkZXIucmVhZEludCg4KSx0aGlzLnppcDY0RXh0ZW5zaWJsZURhdGE9e307Zm9yKHZhciBlLHQscixuPXRoaXMuemlwNjRFbmRPZkNlbnRyYWxTaXplLTQ0OzA8bjspZT10aGlzLnJlYWRlci5yZWFkSW50KDIpLHQ9dGhpcy5yZWFkZXIucmVhZEludCg0KSxyPXRoaXMucmVhZGVyLnJlYWREYXRhKHQpLHRoaXMuemlwNjRFeHRlbnNpYmxlRGF0YVtlXT17aWQ6ZSxsZW5ndGg6dCx2YWx1ZTpyfX0scmVhZEJsb2NrWmlwNjRFbmRPZkNlbnRyYWxMb2NhdG9yOmZ1bmN0aW9uKCl7aWYodGhpcy5kaXNrV2l0aFppcDY0Q2VudHJhbERpclN0YXJ0PXRoaXMucmVhZGVyLnJlYWRJbnQoNCksdGhpcy5yZWxhdGl2ZU9mZnNldEVuZE9mWmlwNjRDZW50cmFsRGlyPXRoaXMucmVhZGVyLnJlYWRJbnQoOCksdGhpcy5kaXNrc0NvdW50PXRoaXMucmVhZGVyLnJlYWRJbnQoNCksMTx0aGlzLmRpc2tzQ291bnQpdGhyb3cgbmV3IEVycm9yKFwiTXVsdGktdm9sdW1lcyB6aXAgYXJlIG5vdCBzdXBwb3J0ZWRcIil9LHJlYWRMb2NhbEZpbGVzOmZ1bmN0aW9uKCl7dmFyIGUsdDtmb3IoZT0wO2U8dGhpcy5maWxlcy5sZW5ndGg7ZSsrKXQ9dGhpcy5maWxlc1tlXSx0aGlzLnJlYWRlci5zZXRJbmRleCh0LmxvY2FsSGVhZGVyT2Zmc2V0KSx0aGlzLmNoZWNrU2lnbmF0dXJlKHMuTE9DQUxfRklMRV9IRUFERVIpLHQucmVhZExvY2FsUGFydCh0aGlzLnJlYWRlciksdC5oYW5kbGVVVEY4KCksdC5wcm9jZXNzQXR0cmlidXRlcygpfSxyZWFkQ2VudHJhbERpcjpmdW5jdGlvbigpe3ZhciBlO2Zvcih0aGlzLnJlYWRlci5zZXRJbmRleCh0aGlzLmNlbnRyYWxEaXJPZmZzZXQpO3RoaXMucmVhZGVyLnJlYWRBbmRDaGVja1NpZ25hdHVyZShzLkNFTlRSQUxfRklMRV9IRUFERVIpOykoZT1uZXcgYSh7emlwNjQ6dGhpcy56aXA2NH0sdGhpcy5sb2FkT3B0aW9ucykpLnJlYWRDZW50cmFsUGFydCh0aGlzLnJlYWRlciksdGhpcy5maWxlcy5wdXNoKGUpO2lmKHRoaXMuY2VudHJhbERpclJlY29yZHMhPT10aGlzLmZpbGVzLmxlbmd0aCYmMCE9PXRoaXMuY2VudHJhbERpclJlY29yZHMmJjA9PT10aGlzLmZpbGVzLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoXCJDb3JydXB0ZWQgemlwIG9yIGJ1ZzogZXhwZWN0ZWQgXCIrdGhpcy5jZW50cmFsRGlyUmVjb3JkcytcIiByZWNvcmRzIGluIGNlbnRyYWwgZGlyLCBnb3QgXCIrdGhpcy5maWxlcy5sZW5ndGgpfSxyZWFkRW5kT2ZDZW50cmFsOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5yZWFkZXIubGFzdEluZGV4T2ZTaWduYXR1cmUocy5DRU5UUkFMX0RJUkVDVE9SWV9FTkQpO2lmKGU8MCl0aHJvdyF0aGlzLmlzU2lnbmF0dXJlKDAscy5MT0NBTF9GSUxFX0hFQURFUik/bmV3IEVycm9yKFwiQ2FuJ3QgZmluZCBlbmQgb2YgY2VudHJhbCBkaXJlY3RvcnkgOiBpcyB0aGlzIGEgemlwIGZpbGUgPyBJZiBpdCBpcywgc2VlIGh0dHBzOi8vc3R1ay5naXRodWIuaW8vanN6aXAvZG9jdW1lbnRhdGlvbi9ob3d0by9yZWFkX3ppcC5odG1sXCIpOm5ldyBFcnJvcihcIkNvcnJ1cHRlZCB6aXA6IGNhbid0IGZpbmQgZW5kIG9mIGNlbnRyYWwgZGlyZWN0b3J5XCIpO3RoaXMucmVhZGVyLnNldEluZGV4KGUpO3ZhciB0PWU7aWYodGhpcy5jaGVja1NpZ25hdHVyZShzLkNFTlRSQUxfRElSRUNUT1JZX0VORCksdGhpcy5yZWFkQmxvY2tFbmRPZkNlbnRyYWwoKSx0aGlzLmRpc2tOdW1iZXI9PT1pLk1BWF9WQUxVRV8xNkJJVFN8fHRoaXMuZGlza1dpdGhDZW50cmFsRGlyU3RhcnQ9PT1pLk1BWF9WQUxVRV8xNkJJVFN8fHRoaXMuY2VudHJhbERpclJlY29yZHNPblRoaXNEaXNrPT09aS5NQVhfVkFMVUVfMTZCSVRTfHx0aGlzLmNlbnRyYWxEaXJSZWNvcmRzPT09aS5NQVhfVkFMVUVfMTZCSVRTfHx0aGlzLmNlbnRyYWxEaXJTaXplPT09aS5NQVhfVkFMVUVfMzJCSVRTfHx0aGlzLmNlbnRyYWxEaXJPZmZzZXQ9PT1pLk1BWF9WQUxVRV8zMkJJVFMpe2lmKHRoaXMuemlwNjQ9ITAsKGU9dGhpcy5yZWFkZXIubGFzdEluZGV4T2ZTaWduYXR1cmUocy5aSVA2NF9DRU5UUkFMX0RJUkVDVE9SWV9MT0NBVE9SKSk8MCl0aHJvdyBuZXcgRXJyb3IoXCJDb3JydXB0ZWQgemlwOiBjYW4ndCBmaW5kIHRoZSBaSVA2NCBlbmQgb2YgY2VudHJhbCBkaXJlY3RvcnkgbG9jYXRvclwiKTtpZih0aGlzLnJlYWRlci5zZXRJbmRleChlKSx0aGlzLmNoZWNrU2lnbmF0dXJlKHMuWklQNjRfQ0VOVFJBTF9ESVJFQ1RPUllfTE9DQVRPUiksdGhpcy5yZWFkQmxvY2taaXA2NEVuZE9mQ2VudHJhbExvY2F0b3IoKSwhdGhpcy5pc1NpZ25hdHVyZSh0aGlzLnJlbGF0aXZlT2Zmc2V0RW5kT2ZaaXA2NENlbnRyYWxEaXIscy5aSVA2NF9DRU5UUkFMX0RJUkVDVE9SWV9FTkQpJiYodGhpcy5yZWxhdGl2ZU9mZnNldEVuZE9mWmlwNjRDZW50cmFsRGlyPXRoaXMucmVhZGVyLmxhc3RJbmRleE9mU2lnbmF0dXJlKHMuWklQNjRfQ0VOVFJBTF9ESVJFQ1RPUllfRU5EKSx0aGlzLnJlbGF0aXZlT2Zmc2V0RW5kT2ZaaXA2NENlbnRyYWxEaXI8MCkpdGhyb3cgbmV3IEVycm9yKFwiQ29ycnVwdGVkIHppcDogY2FuJ3QgZmluZCB0aGUgWklQNjQgZW5kIG9mIGNlbnRyYWwgZGlyZWN0b3J5XCIpO3RoaXMucmVhZGVyLnNldEluZGV4KHRoaXMucmVsYXRpdmVPZmZzZXRFbmRPZlppcDY0Q2VudHJhbERpciksdGhpcy5jaGVja1NpZ25hdHVyZShzLlpJUDY0X0NFTlRSQUxfRElSRUNUT1JZX0VORCksdGhpcy5yZWFkQmxvY2taaXA2NEVuZE9mQ2VudHJhbCgpfXZhciByPXRoaXMuY2VudHJhbERpck9mZnNldCt0aGlzLmNlbnRyYWxEaXJTaXplO3RoaXMuemlwNjQmJihyKz0yMCxyKz0xMit0aGlzLnppcDY0RW5kT2ZDZW50cmFsU2l6ZSk7dmFyIG49dC1yO2lmKDA8bil0aGlzLmlzU2lnbmF0dXJlKHQscy5DRU5UUkFMX0ZJTEVfSEVBREVSKXx8KHRoaXMucmVhZGVyLnplcm89bik7ZWxzZSBpZihuPDApdGhyb3cgbmV3IEVycm9yKFwiQ29ycnVwdGVkIHppcDogbWlzc2luZyBcIitNYXRoLmFicyhuKStcIiBieXRlcy5cIil9LHByZXBhcmVSZWFkZXI6ZnVuY3Rpb24oZSl7dGhpcy5yZWFkZXI9bihlKX0sbG9hZDpmdW5jdGlvbihlKXt0aGlzLnByZXBhcmVSZWFkZXIoZSksdGhpcy5yZWFkRW5kT2ZDZW50cmFsKCksdGhpcy5yZWFkQ2VudHJhbERpcigpLHRoaXMucmVhZExvY2FsRmlsZXMoKX19LHQuZXhwb3J0cz1ofSx7XCIuL3JlYWRlci9yZWFkZXJGb3JcIjoyMixcIi4vc2lnbmF0dXJlXCI6MjMsXCIuL3N1cHBvcnRcIjozMCxcIi4vdXRmOFwiOjMxLFwiLi91dGlsc1wiOjMyLFwiLi96aXBFbnRyeVwiOjM0fV0sMzQ6W2Z1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1lKFwiLi9yZWFkZXIvcmVhZGVyRm9yXCIpLHM9ZShcIi4vdXRpbHNcIiksaT1lKFwiLi9jb21wcmVzc2VkT2JqZWN0XCIpLGE9ZShcIi4vY3JjMzJcIiksbz1lKFwiLi91dGY4XCIpLGg9ZShcIi4vY29tcHJlc3Npb25zXCIpLHU9ZShcIi4vc3VwcG9ydFwiKTtmdW5jdGlvbiBsKGUsdCl7dGhpcy5vcHRpb25zPWUsdGhpcy5sb2FkT3B0aW9ucz10fWwucHJvdG90eXBlPXtpc0VuY3J5cHRlZDpmdW5jdGlvbigpe3JldHVybiAxPT0oMSZ0aGlzLmJpdEZsYWcpfSx1c2VVVEY4OmZ1bmN0aW9uKCl7cmV0dXJuIDIwNDg9PSgyMDQ4JnRoaXMuYml0RmxhZyl9LHJlYWRMb2NhbFBhcnQ6ZnVuY3Rpb24oZSl7dmFyIHQscjtpZihlLnNraXAoMjIpLHRoaXMuZmlsZU5hbWVMZW5ndGg9ZS5yZWFkSW50KDIpLHI9ZS5yZWFkSW50KDIpLHRoaXMuZmlsZU5hbWU9ZS5yZWFkRGF0YSh0aGlzLmZpbGVOYW1lTGVuZ3RoKSxlLnNraXAociksLTE9PT10aGlzLmNvbXByZXNzZWRTaXplfHwtMT09PXRoaXMudW5jb21wcmVzc2VkU2l6ZSl0aHJvdyBuZXcgRXJyb3IoXCJCdWcgb3IgY29ycnVwdGVkIHppcCA6IGRpZG4ndCBnZXQgZW5vdWdoIGluZm9ybWF0aW9uIGZyb20gdGhlIGNlbnRyYWwgZGlyZWN0b3J5IChjb21wcmVzc2VkU2l6ZSA9PT0gLTEgfHwgdW5jb21wcmVzc2VkU2l6ZSA9PT0gLTEpXCIpO2lmKG51bGw9PT0odD1mdW5jdGlvbihlKXtmb3IodmFyIHQgaW4gaClpZihoLmhhc093blByb3BlcnR5KHQpJiZoW3RdLm1hZ2ljPT09ZSlyZXR1cm4gaFt0XTtyZXR1cm4gbnVsbH0odGhpcy5jb21wcmVzc2lvbk1ldGhvZCkpKXRocm93IG5ldyBFcnJvcihcIkNvcnJ1cHRlZCB6aXAgOiBjb21wcmVzc2lvbiBcIitzLnByZXR0eSh0aGlzLmNvbXByZXNzaW9uTWV0aG9kKStcIiB1bmtub3duIChpbm5lciBmaWxlIDogXCIrcy50cmFuc2Zvcm1UbyhcInN0cmluZ1wiLHRoaXMuZmlsZU5hbWUpK1wiKVwiKTt0aGlzLmRlY29tcHJlc3NlZD1uZXcgaSh0aGlzLmNvbXByZXNzZWRTaXplLHRoaXMudW5jb21wcmVzc2VkU2l6ZSx0aGlzLmNyYzMyLHQsZS5yZWFkRGF0YSh0aGlzLmNvbXByZXNzZWRTaXplKSl9LHJlYWRDZW50cmFsUGFydDpmdW5jdGlvbihlKXt0aGlzLnZlcnNpb25NYWRlQnk9ZS5yZWFkSW50KDIpLGUuc2tpcCgyKSx0aGlzLmJpdEZsYWc9ZS5yZWFkSW50KDIpLHRoaXMuY29tcHJlc3Npb25NZXRob2Q9ZS5yZWFkU3RyaW5nKDIpLHRoaXMuZGF0ZT1lLnJlYWREYXRlKCksdGhpcy5jcmMzMj1lLnJlYWRJbnQoNCksdGhpcy5jb21wcmVzc2VkU2l6ZT1lLnJlYWRJbnQoNCksdGhpcy51bmNvbXByZXNzZWRTaXplPWUucmVhZEludCg0KTt2YXIgdD1lLnJlYWRJbnQoMik7aWYodGhpcy5leHRyYUZpZWxkc0xlbmd0aD1lLnJlYWRJbnQoMiksdGhpcy5maWxlQ29tbWVudExlbmd0aD1lLnJlYWRJbnQoMiksdGhpcy5kaXNrTnVtYmVyU3RhcnQ9ZS5yZWFkSW50KDIpLHRoaXMuaW50ZXJuYWxGaWxlQXR0cmlidXRlcz1lLnJlYWRJbnQoMiksdGhpcy5leHRlcm5hbEZpbGVBdHRyaWJ1dGVzPWUucmVhZEludCg0KSx0aGlzLmxvY2FsSGVhZGVyT2Zmc2V0PWUucmVhZEludCg0KSx0aGlzLmlzRW5jcnlwdGVkKCkpdGhyb3cgbmV3IEVycm9yKFwiRW5jcnlwdGVkIHppcCBhcmUgbm90IHN1cHBvcnRlZFwiKTtlLnNraXAodCksdGhpcy5yZWFkRXh0cmFGaWVsZHMoZSksdGhpcy5wYXJzZVpJUDY0RXh0cmFGaWVsZChlKSx0aGlzLmZpbGVDb21tZW50PWUucmVhZERhdGEodGhpcy5maWxlQ29tbWVudExlbmd0aCl9LHByb2Nlc3NBdHRyaWJ1dGVzOmZ1bmN0aW9uKCl7dGhpcy51bml4UGVybWlzc2lvbnM9bnVsbCx0aGlzLmRvc1Blcm1pc3Npb25zPW51bGw7dmFyIGU9dGhpcy52ZXJzaW9uTWFkZUJ5Pj44O3RoaXMuZGlyPSEhKDE2JnRoaXMuZXh0ZXJuYWxGaWxlQXR0cmlidXRlcyksMD09ZSYmKHRoaXMuZG9zUGVybWlzc2lvbnM9NjMmdGhpcy5leHRlcm5hbEZpbGVBdHRyaWJ1dGVzKSwzPT1lJiYodGhpcy51bml4UGVybWlzc2lvbnM9dGhpcy5leHRlcm5hbEZpbGVBdHRyaWJ1dGVzPj4xNiY2NTUzNSksdGhpcy5kaXJ8fFwiL1wiIT09dGhpcy5maWxlTmFtZVN0ci5zbGljZSgtMSl8fCh0aGlzLmRpcj0hMCl9LHBhcnNlWklQNjRFeHRyYUZpZWxkOmZ1bmN0aW9uKGUpe2lmKHRoaXMuZXh0cmFGaWVsZHNbMV0pe3ZhciB0PW4odGhpcy5leHRyYUZpZWxkc1sxXS52YWx1ZSk7dGhpcy51bmNvbXByZXNzZWRTaXplPT09cy5NQVhfVkFMVUVfMzJCSVRTJiYodGhpcy51bmNvbXByZXNzZWRTaXplPXQucmVhZEludCg4KSksdGhpcy5jb21wcmVzc2VkU2l6ZT09PXMuTUFYX1ZBTFVFXzMyQklUUyYmKHRoaXMuY29tcHJlc3NlZFNpemU9dC5yZWFkSW50KDgpKSx0aGlzLmxvY2FsSGVhZGVyT2Zmc2V0PT09cy5NQVhfVkFMVUVfMzJCSVRTJiYodGhpcy5sb2NhbEhlYWRlck9mZnNldD10LnJlYWRJbnQoOCkpLHRoaXMuZGlza051bWJlclN0YXJ0PT09cy5NQVhfVkFMVUVfMzJCSVRTJiYodGhpcy5kaXNrTnVtYmVyU3RhcnQ9dC5yZWFkSW50KDQpKX19LHJlYWRFeHRyYUZpZWxkczpmdW5jdGlvbihlKXt2YXIgdCxyLG4saT1lLmluZGV4K3RoaXMuZXh0cmFGaWVsZHNMZW5ndGg7Zm9yKHRoaXMuZXh0cmFGaWVsZHN8fCh0aGlzLmV4dHJhRmllbGRzPXt9KTtlLmluZGV4KzQ8aTspdD1lLnJlYWRJbnQoMikscj1lLnJlYWRJbnQoMiksbj1lLnJlYWREYXRhKHIpLHRoaXMuZXh0cmFGaWVsZHNbdF09e2lkOnQsbGVuZ3RoOnIsdmFsdWU6bn07ZS5zZXRJbmRleChpKX0saGFuZGxlVVRGODpmdW5jdGlvbigpe3ZhciBlPXUudWludDhhcnJheT9cInVpbnQ4YXJyYXlcIjpcImFycmF5XCI7aWYodGhpcy51c2VVVEY4KCkpdGhpcy5maWxlTmFtZVN0cj1vLnV0ZjhkZWNvZGUodGhpcy5maWxlTmFtZSksdGhpcy5maWxlQ29tbWVudFN0cj1vLnV0ZjhkZWNvZGUodGhpcy5maWxlQ29tbWVudCk7ZWxzZXt2YXIgdD10aGlzLmZpbmRFeHRyYUZpZWxkVW5pY29kZVBhdGgoKTtpZihudWxsIT09dCl0aGlzLmZpbGVOYW1lU3RyPXQ7ZWxzZXt2YXIgcj1zLnRyYW5zZm9ybVRvKGUsdGhpcy5maWxlTmFtZSk7dGhpcy5maWxlTmFtZVN0cj10aGlzLmxvYWRPcHRpb25zLmRlY29kZUZpbGVOYW1lKHIpfXZhciBuPXRoaXMuZmluZEV4dHJhRmllbGRVbmljb2RlQ29tbWVudCgpO2lmKG51bGwhPT1uKXRoaXMuZmlsZUNvbW1lbnRTdHI9bjtlbHNle3ZhciBpPXMudHJhbnNmb3JtVG8oZSx0aGlzLmZpbGVDb21tZW50KTt0aGlzLmZpbGVDb21tZW50U3RyPXRoaXMubG9hZE9wdGlvbnMuZGVjb2RlRmlsZU5hbWUoaSl9fX0sZmluZEV4dHJhRmllbGRVbmljb2RlUGF0aDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuZXh0cmFGaWVsZHNbMjg3ODldO2lmKGUpe3ZhciB0PW4oZS52YWx1ZSk7cmV0dXJuIDEhPT10LnJlYWRJbnQoMSk/bnVsbDphKHRoaXMuZmlsZU5hbWUpIT09dC5yZWFkSW50KDQpP251bGw6by51dGY4ZGVjb2RlKHQucmVhZERhdGEoZS5sZW5ndGgtNSkpfXJldHVybiBudWxsfSxmaW5kRXh0cmFGaWVsZFVuaWNvZGVDb21tZW50OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5leHRyYUZpZWxkc1syNTQ2MV07aWYoZSl7dmFyIHQ9bihlLnZhbHVlKTtyZXR1cm4gMSE9PXQucmVhZEludCgxKT9udWxsOmEodGhpcy5maWxlQ29tbWVudCkhPT10LnJlYWRJbnQoNCk/bnVsbDpvLnV0ZjhkZWNvZGUodC5yZWFkRGF0YShlLmxlbmd0aC01KSl9cmV0dXJuIG51bGx9fSx0LmV4cG9ydHM9bH0se1wiLi9jb21wcmVzc2VkT2JqZWN0XCI6MixcIi4vY29tcHJlc3Npb25zXCI6MyxcIi4vY3JjMzJcIjo0LFwiLi9yZWFkZXIvcmVhZGVyRm9yXCI6MjIsXCIuL3N1cHBvcnRcIjozMCxcIi4vdXRmOFwiOjMxLFwiLi91dGlsc1wiOjMyfV0sMzU6W2Z1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBuKGUsdCxyKXt0aGlzLm5hbWU9ZSx0aGlzLmRpcj1yLmRpcix0aGlzLmRhdGU9ci5kYXRlLHRoaXMuY29tbWVudD1yLmNvbW1lbnQsdGhpcy51bml4UGVybWlzc2lvbnM9ci51bml4UGVybWlzc2lvbnMsdGhpcy5kb3NQZXJtaXNzaW9ucz1yLmRvc1Blcm1pc3Npb25zLHRoaXMuX2RhdGE9dCx0aGlzLl9kYXRhQmluYXJ5PXIuYmluYXJ5LHRoaXMub3B0aW9ucz17Y29tcHJlc3Npb246ci5jb21wcmVzc2lvbixjb21wcmVzc2lvbk9wdGlvbnM6ci5jb21wcmVzc2lvbk9wdGlvbnN9fXZhciBzPWUoXCIuL3N0cmVhbS9TdHJlYW1IZWxwZXJcIiksaT1lKFwiLi9zdHJlYW0vRGF0YVdvcmtlclwiKSxhPWUoXCIuL3V0ZjhcIiksbz1lKFwiLi9jb21wcmVzc2VkT2JqZWN0XCIpLGg9ZShcIi4vc3RyZWFtL0dlbmVyaWNXb3JrZXJcIik7bi5wcm90b3R5cGU9e2ludGVybmFsU3RyZWFtOmZ1bmN0aW9uKGUpe3ZhciB0PW51bGwscj1cInN0cmluZ1wiO3RyeXtpZighZSl0aHJvdyBuZXcgRXJyb3IoXCJObyBvdXRwdXQgdHlwZSBzcGVjaWZpZWQuXCIpO3ZhciBuPVwic3RyaW5nXCI9PT0ocj1lLnRvTG93ZXJDYXNlKCkpfHxcInRleHRcIj09PXI7XCJiaW5hcnlzdHJpbmdcIiE9PXImJlwidGV4dFwiIT09cnx8KHI9XCJzdHJpbmdcIiksdD10aGlzLl9kZWNvbXByZXNzV29ya2VyKCk7dmFyIGk9IXRoaXMuX2RhdGFCaW5hcnk7aSYmIW4mJih0PXQucGlwZShuZXcgYS5VdGY4RW5jb2RlV29ya2VyKSksIWkmJm4mJih0PXQucGlwZShuZXcgYS5VdGY4RGVjb2RlV29ya2VyKSl9Y2F0Y2goZSl7KHQ9bmV3IGgoXCJlcnJvclwiKSkuZXJyb3IoZSl9cmV0dXJuIG5ldyBzKHQscixcIlwiKX0sYXN5bmM6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5pbnRlcm5hbFN0cmVhbShlKS5hY2N1bXVsYXRlKHQpfSxub2RlU3RyZWFtOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuaW50ZXJuYWxTdHJlYW0oZXx8XCJub2RlYnVmZmVyXCIpLnRvTm9kZWpzU3RyZWFtKHQpfSxfY29tcHJlc3NXb3JrZXI6ZnVuY3Rpb24oZSx0KXtpZih0aGlzLl9kYXRhIGluc3RhbmNlb2YgbyYmdGhpcy5fZGF0YS5jb21wcmVzc2lvbi5tYWdpYz09PWUubWFnaWMpcmV0dXJuIHRoaXMuX2RhdGEuZ2V0Q29tcHJlc3NlZFdvcmtlcigpO3ZhciByPXRoaXMuX2RlY29tcHJlc3NXb3JrZXIoKTtyZXR1cm4gdGhpcy5fZGF0YUJpbmFyeXx8KHI9ci5waXBlKG5ldyBhLlV0ZjhFbmNvZGVXb3JrZXIpKSxvLmNyZWF0ZVdvcmtlckZyb20ocixlLHQpfSxfZGVjb21wcmVzc1dvcmtlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kYXRhIGluc3RhbmNlb2Ygbz90aGlzLl9kYXRhLmdldENvbnRlbnRXb3JrZXIoKTp0aGlzLl9kYXRhIGluc3RhbmNlb2YgaD90aGlzLl9kYXRhOm5ldyBpKHRoaXMuX2RhdGEpfX07Zm9yKHZhciB1PVtcImFzVGV4dFwiLFwiYXNCaW5hcnlcIixcImFzTm9kZUJ1ZmZlclwiLFwiYXNVaW50OEFycmF5XCIsXCJhc0FycmF5QnVmZmVyXCJdLGw9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIG1ldGhvZCBoYXMgYmVlbiByZW1vdmVkIGluIEpTWmlwIDMuMCwgcGxlYXNlIGNoZWNrIHRoZSB1cGdyYWRlIGd1aWRlLlwiKX0sZj0wO2Y8dS5sZW5ndGg7ZisrKW4ucHJvdG90eXBlW3VbZl1dPWw7dC5leHBvcnRzPW59LHtcIi4vY29tcHJlc3NlZE9iamVjdFwiOjIsXCIuL3N0cmVhbS9EYXRhV29ya2VyXCI6MjcsXCIuL3N0cmVhbS9HZW5lcmljV29ya2VyXCI6MjgsXCIuL3N0cmVhbS9TdHJlYW1IZWxwZXJcIjoyOSxcIi4vdXRmOFwiOjMxfV0sMzY6W2Z1bmN0aW9uKGUsbCx0KXsoZnVuY3Rpb24odCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHIsbixlPXQuTXV0YXRpb25PYnNlcnZlcnx8dC5XZWJLaXRNdXRhdGlvbk9ic2VydmVyO2lmKGUpe3ZhciBpPTAscz1uZXcgZSh1KSxhPXQuZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoXCJcIik7cy5vYnNlcnZlKGEse2NoYXJhY3RlckRhdGE6ITB9KSxyPWZ1bmN0aW9uKCl7YS5kYXRhPWk9KytpJTJ9fWVsc2UgaWYodC5zZXRJbW1lZGlhdGV8fHZvaWQgMD09PXQuTWVzc2FnZUNoYW5uZWwpcj1cImRvY3VtZW50XCJpbiB0JiZcIm9ucmVhZHlzdGF0ZWNoYW5nZVwiaW4gdC5kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpP2Z1bmN0aW9uKCl7dmFyIGU9dC5kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO2Uub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7dSgpLGUub25yZWFkeXN0YXRlY2hhbmdlPW51bGwsZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGUpLGU9bnVsbH0sdC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZSl9OmZ1bmN0aW9uKCl7c2V0VGltZW91dCh1LDApfTtlbHNle3ZhciBvPW5ldyB0Lk1lc3NhZ2VDaGFubmVsO28ucG9ydDEub25tZXNzYWdlPXUscj1mdW5jdGlvbigpe28ucG9ydDIucG9zdE1lc3NhZ2UoMCl9fXZhciBoPVtdO2Z1bmN0aW9uIHUoKXt2YXIgZSx0O249ITA7Zm9yKHZhciByPWgubGVuZ3RoO3I7KXtmb3IodD1oLGg9W10sZT0tMTsrK2U8cjspdFtlXSgpO3I9aC5sZW5ndGh9bj0hMX1sLmV4cG9ydHM9ZnVuY3Rpb24oZSl7MSE9PWgucHVzaChlKXx8bnx8cigpfX0pLmNhbGwodGhpcyxcInVuZGVmaW5lZFwiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDpcInVuZGVmaW5lZFwiIT10eXBlb2Ygc2VsZj9zZWxmOlwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0se31dLDM3OltmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGk9ZShcImltbWVkaWF0ZVwiKTtmdW5jdGlvbiB1KCl7fXZhciBsPXt9LHM9W1wiUkVKRUNURURcIl0sYT1bXCJGVUxGSUxMRURcIl0sbj1bXCJQRU5ESU5HXCJdO2Z1bmN0aW9uIG8oZSl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwicmVzb2x2ZXIgbXVzdCBiZSBhIGZ1bmN0aW9uXCIpO3RoaXMuc3RhdGU9bix0aGlzLnF1ZXVlPVtdLHRoaXMub3V0Y29tZT12b2lkIDAsZSE9PXUmJmQodGhpcyxlKX1mdW5jdGlvbiBoKGUsdCxyKXt0aGlzLnByb21pc2U9ZSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiYodGhpcy5vbkZ1bGZpbGxlZD10LHRoaXMuY2FsbEZ1bGZpbGxlZD10aGlzLm90aGVyQ2FsbEZ1bGZpbGxlZCksXCJmdW5jdGlvblwiPT10eXBlb2YgciYmKHRoaXMub25SZWplY3RlZD1yLHRoaXMuY2FsbFJlamVjdGVkPXRoaXMub3RoZXJDYWxsUmVqZWN0ZWQpfWZ1bmN0aW9uIGYodCxyLG4pe2koZnVuY3Rpb24oKXt2YXIgZTt0cnl7ZT1yKG4pfWNhdGNoKGUpe3JldHVybiBsLnJlamVjdCh0LGUpfWU9PT10P2wucmVqZWN0KHQsbmV3IFR5cGVFcnJvcihcIkNhbm5vdCByZXNvbHZlIHByb21pc2Ugd2l0aCBpdHNlbGZcIikpOmwucmVzb2x2ZSh0LGUpfSl9ZnVuY3Rpb24gYyhlKXt2YXIgdD1lJiZlLnRoZW47aWYoZSYmKFwib2JqZWN0XCI9PXR5cGVvZiBlfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlKSYmXCJmdW5jdGlvblwiPT10eXBlb2YgdClyZXR1cm4gZnVuY3Rpb24oKXt0LmFwcGx5KGUsYXJndW1lbnRzKX19ZnVuY3Rpb24gZCh0LGUpe3ZhciByPSExO2Z1bmN0aW9uIG4oZSl7cnx8KHI9ITAsbC5yZWplY3QodCxlKSl9ZnVuY3Rpb24gaShlKXtyfHwocj0hMCxsLnJlc29sdmUodCxlKSl9dmFyIHM9cChmdW5jdGlvbigpe2UoaSxuKX0pO1wiZXJyb3JcIj09PXMuc3RhdHVzJiZuKHMudmFsdWUpfWZ1bmN0aW9uIHAoZSx0KXt2YXIgcj17fTt0cnl7ci52YWx1ZT1lKHQpLHIuc3RhdHVzPVwic3VjY2Vzc1wifWNhdGNoKGUpe3Iuc3RhdHVzPVwiZXJyb3JcIixyLnZhbHVlPWV9cmV0dXJuIHJ9KHQuZXhwb3J0cz1vKS5wcm90b3R5cGUuZmluYWxseT1mdW5jdGlvbih0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0KXJldHVybiB0aGlzO3ZhciByPXRoaXMuY29uc3RydWN0b3I7cmV0dXJuIHRoaXMudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gci5yZXNvbHZlKHQoKSkudGhlbihmdW5jdGlvbigpe3JldHVybiBlfSl9LGZ1bmN0aW9uKGUpe3JldHVybiByLnJlc29sdmUodCgpKS50aGVuKGZ1bmN0aW9uKCl7dGhyb3cgZX0pfSl9LG8ucHJvdG90eXBlLmNhdGNoPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnRoZW4obnVsbCxlKX0sby5wcm90b3R5cGUudGhlbj1mdW5jdGlvbihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJnRoaXMuc3RhdGU9PT1hfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiB0JiZ0aGlzLnN0YXRlPT09cylyZXR1cm4gdGhpczt2YXIgcj1uZXcgdGhpcy5jb25zdHJ1Y3Rvcih1KTt0aGlzLnN0YXRlIT09bj9mKHIsdGhpcy5zdGF0ZT09PWE/ZTp0LHRoaXMub3V0Y29tZSk6dGhpcy5xdWV1ZS5wdXNoKG5ldyBoKHIsZSx0KSk7cmV0dXJuIHJ9LGgucHJvdG90eXBlLmNhbGxGdWxmaWxsZWQ9ZnVuY3Rpb24oZSl7bC5yZXNvbHZlKHRoaXMucHJvbWlzZSxlKX0saC5wcm90b3R5cGUub3RoZXJDYWxsRnVsZmlsbGVkPWZ1bmN0aW9uKGUpe2YodGhpcy5wcm9taXNlLHRoaXMub25GdWxmaWxsZWQsZSl9LGgucHJvdG90eXBlLmNhbGxSZWplY3RlZD1mdW5jdGlvbihlKXtsLnJlamVjdCh0aGlzLnByb21pc2UsZSl9LGgucHJvdG90eXBlLm90aGVyQ2FsbFJlamVjdGVkPWZ1bmN0aW9uKGUpe2YodGhpcy5wcm9taXNlLHRoaXMub25SZWplY3RlZCxlKX0sbC5yZXNvbHZlPWZ1bmN0aW9uKGUsdCl7dmFyIHI9cChjLHQpO2lmKFwiZXJyb3JcIj09PXIuc3RhdHVzKXJldHVybiBsLnJlamVjdChlLHIudmFsdWUpO3ZhciBuPXIudmFsdWU7aWYobilkKGUsbik7ZWxzZXtlLnN0YXRlPWEsZS5vdXRjb21lPXQ7Zm9yKHZhciBpPS0xLHM9ZS5xdWV1ZS5sZW5ndGg7KytpPHM7KWUucXVldWVbaV0uY2FsbEZ1bGZpbGxlZCh0KX1yZXR1cm4gZX0sbC5yZWplY3Q9ZnVuY3Rpb24oZSx0KXtlLnN0YXRlPXMsZS5vdXRjb21lPXQ7Zm9yKHZhciByPS0xLG49ZS5xdWV1ZS5sZW5ndGg7KytyPG47KWUucXVldWVbcl0uY2FsbFJlamVjdGVkKHQpO3JldHVybiBlfSxvLnJlc29sdmU9ZnVuY3Rpb24oZSl7aWYoZSBpbnN0YW5jZW9mIHRoaXMpcmV0dXJuIGU7cmV0dXJuIGwucmVzb2x2ZShuZXcgdGhpcyh1KSxlKX0sby5yZWplY3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IHRoaXModSk7cmV0dXJuIGwucmVqZWN0KHQsZSl9LG8uYWxsPWZ1bmN0aW9uKGUpe3ZhciByPXRoaXM7aWYoXCJbb2JqZWN0IEFycmF5XVwiIT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpKXJldHVybiB0aGlzLnJlamVjdChuZXcgVHlwZUVycm9yKFwibXVzdCBiZSBhbiBhcnJheVwiKSk7dmFyIG49ZS5sZW5ndGgsaT0hMTtpZighbilyZXR1cm4gdGhpcy5yZXNvbHZlKFtdKTt2YXIgcz1uZXcgQXJyYXkobiksYT0wLHQ9LTEsbz1uZXcgdGhpcyh1KTtmb3IoOysrdDxuOyloKGVbdF0sdCk7cmV0dXJuIG87ZnVuY3Rpb24gaChlLHQpe3IucmVzb2x2ZShlKS50aGVuKGZ1bmN0aW9uKGUpe3NbdF09ZSwrK2EhPT1ufHxpfHwoaT0hMCxsLnJlc29sdmUobyxzKSl9LGZ1bmN0aW9uKGUpe2l8fChpPSEwLGwucmVqZWN0KG8sZSkpfSl9fSxvLnJhY2U9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztpZihcIltvYmplY3QgQXJyYXldXCIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpcmV0dXJuIHRoaXMucmVqZWN0KG5ldyBUeXBlRXJyb3IoXCJtdXN0IGJlIGFuIGFycmF5XCIpKTt2YXIgcj1lLmxlbmd0aCxuPSExO2lmKCFyKXJldHVybiB0aGlzLnJlc29sdmUoW10pO3ZhciBpPS0xLHM9bmV3IHRoaXModSk7Zm9yKDsrK2k8cjspYT1lW2ldLHQucmVzb2x2ZShhKS50aGVuKGZ1bmN0aW9uKGUpe258fChuPSEwLGwucmVzb2x2ZShzLGUpKX0sZnVuY3Rpb24oZSl7bnx8KG49ITAsbC5yZWplY3QocyxlKSl9KTt2YXIgYTtyZXR1cm4gc319LHtpbW1lZGlhdGU6MzZ9XSwzODpbZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXt9OygwLGUoXCIuL2xpYi91dGlscy9jb21tb25cIikuYXNzaWduKShuLGUoXCIuL2xpYi9kZWZsYXRlXCIpLGUoXCIuL2xpYi9pbmZsYXRlXCIpLGUoXCIuL2xpYi96bGliL2NvbnN0YW50c1wiKSksdC5leHBvcnRzPW59LHtcIi4vbGliL2RlZmxhdGVcIjozOSxcIi4vbGliL2luZmxhdGVcIjo0MCxcIi4vbGliL3V0aWxzL2NvbW1vblwiOjQxLFwiLi9saWIvemxpYi9jb25zdGFudHNcIjo0NH1dLDM5OltmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGE9ZShcIi4vemxpYi9kZWZsYXRlXCIpLG89ZShcIi4vdXRpbHMvY29tbW9uXCIpLGg9ZShcIi4vdXRpbHMvc3RyaW5nc1wiKSxpPWUoXCIuL3psaWIvbWVzc2FnZXNcIikscz1lKFwiLi96bGliL3pzdHJlYW1cIiksdT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLGw9MCxmPS0xLGM9MCxkPTg7ZnVuY3Rpb24gcChlKXtpZighKHRoaXMgaW5zdGFuY2VvZiBwKSlyZXR1cm4gbmV3IHAoZSk7dGhpcy5vcHRpb25zPW8uYXNzaWduKHtsZXZlbDpmLG1ldGhvZDpkLGNodW5rU2l6ZToxNjM4NCx3aW5kb3dCaXRzOjE1LG1lbUxldmVsOjgsc3RyYXRlZ3k6Yyx0bzpcIlwifSxlfHx7fSk7dmFyIHQ9dGhpcy5vcHRpb25zO3QucmF3JiYwPHQud2luZG93Qml0cz90LndpbmRvd0JpdHM9LXQud2luZG93Qml0czp0Lmd6aXAmJjA8dC53aW5kb3dCaXRzJiZ0LndpbmRvd0JpdHM8MTYmJih0LndpbmRvd0JpdHMrPTE2KSx0aGlzLmVycj0wLHRoaXMubXNnPVwiXCIsdGhpcy5lbmRlZD0hMSx0aGlzLmNodW5rcz1bXSx0aGlzLnN0cm09bmV3IHMsdGhpcy5zdHJtLmF2YWlsX291dD0wO3ZhciByPWEuZGVmbGF0ZUluaXQyKHRoaXMuc3RybSx0LmxldmVsLHQubWV0aG9kLHQud2luZG93Qml0cyx0Lm1lbUxldmVsLHQuc3RyYXRlZ3kpO2lmKHIhPT1sKXRocm93IG5ldyBFcnJvcihpW3JdKTtpZih0LmhlYWRlciYmYS5kZWZsYXRlU2V0SGVhZGVyKHRoaXMuc3RybSx0LmhlYWRlciksdC5kaWN0aW9uYXJ5KXt2YXIgbjtpZihuPVwic3RyaW5nXCI9PXR5cGVvZiB0LmRpY3Rpb25hcnk/aC5zdHJpbmcyYnVmKHQuZGljdGlvbmFyeSk6XCJbb2JqZWN0IEFycmF5QnVmZmVyXVwiPT09dS5jYWxsKHQuZGljdGlvbmFyeSk/bmV3IFVpbnQ4QXJyYXkodC5kaWN0aW9uYXJ5KTp0LmRpY3Rpb25hcnksKHI9YS5kZWZsYXRlU2V0RGljdGlvbmFyeSh0aGlzLnN0cm0sbikpIT09bCl0aHJvdyBuZXcgRXJyb3IoaVtyXSk7dGhpcy5fZGljdF9zZXQ9ITB9fWZ1bmN0aW9uIG4oZSx0KXt2YXIgcj1uZXcgcCh0KTtpZihyLnB1c2goZSwhMCksci5lcnIpdGhyb3cgci5tc2d8fGlbci5lcnJdO3JldHVybiByLnJlc3VsdH1wLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKGUsdCl7dmFyIHIsbixpPXRoaXMuc3RybSxzPXRoaXMub3B0aW9ucy5jaHVua1NpemU7aWYodGhpcy5lbmRlZClyZXR1cm4hMTtuPXQ9PT1+fnQ/dDohMD09PXQ/NDowLFwic3RyaW5nXCI9PXR5cGVvZiBlP2kuaW5wdXQ9aC5zdHJpbmcyYnVmKGUpOlwiW29iamVjdCBBcnJheUJ1ZmZlcl1cIj09PXUuY2FsbChlKT9pLmlucHV0PW5ldyBVaW50OEFycmF5KGUpOmkuaW5wdXQ9ZSxpLm5leHRfaW49MCxpLmF2YWlsX2luPWkuaW5wdXQubGVuZ3RoO2Rve2lmKDA9PT1pLmF2YWlsX291dCYmKGkub3V0cHV0PW5ldyBvLkJ1ZjgocyksaS5uZXh0X291dD0wLGkuYXZhaWxfb3V0PXMpLDEhPT0ocj1hLmRlZmxhdGUoaSxuKSkmJnIhPT1sKXJldHVybiB0aGlzLm9uRW5kKHIpLCEodGhpcy5lbmRlZD0hMCk7MCE9PWkuYXZhaWxfb3V0JiYoMCE9PWkuYXZhaWxfaW58fDQhPT1uJiYyIT09bil8fChcInN0cmluZ1wiPT09dGhpcy5vcHRpb25zLnRvP3RoaXMub25EYXRhKGguYnVmMmJpbnN0cmluZyhvLnNocmlua0J1ZihpLm91dHB1dCxpLm5leHRfb3V0KSkpOnRoaXMub25EYXRhKG8uc2hyaW5rQnVmKGkub3V0cHV0LGkubmV4dF9vdXQpKSl9d2hpbGUoKDA8aS5hdmFpbF9pbnx8MD09PWkuYXZhaWxfb3V0KSYmMSE9PXIpO3JldHVybiA0PT09bj8ocj1hLmRlZmxhdGVFbmQodGhpcy5zdHJtKSx0aGlzLm9uRW5kKHIpLHRoaXMuZW5kZWQ9ITAscj09PWwpOjIhPT1ufHwodGhpcy5vbkVuZChsKSwhKGkuYXZhaWxfb3V0PTApKX0scC5wcm90b3R5cGUub25EYXRhPWZ1bmN0aW9uKGUpe3RoaXMuY2h1bmtzLnB1c2goZSl9LHAucHJvdG90eXBlLm9uRW5kPWZ1bmN0aW9uKGUpe2U9PT1sJiYoXCJzdHJpbmdcIj09PXRoaXMub3B0aW9ucy50bz90aGlzLnJlc3VsdD10aGlzLmNodW5rcy5qb2luKFwiXCIpOnRoaXMucmVzdWx0PW8uZmxhdHRlbkNodW5rcyh0aGlzLmNodW5rcykpLHRoaXMuY2h1bmtzPVtdLHRoaXMuZXJyPWUsdGhpcy5tc2c9dGhpcy5zdHJtLm1zZ30sci5EZWZsYXRlPXAsci5kZWZsYXRlPW4sci5kZWZsYXRlUmF3PWZ1bmN0aW9uKGUsdCl7cmV0dXJuKHQ9dHx8e30pLnJhdz0hMCxuKGUsdCl9LHIuZ3ppcD1mdW5jdGlvbihlLHQpe3JldHVybih0PXR8fHt9KS5nemlwPSEwLG4oZSx0KX19LHtcIi4vdXRpbHMvY29tbW9uXCI6NDEsXCIuL3V0aWxzL3N0cmluZ3NcIjo0MixcIi4vemxpYi9kZWZsYXRlXCI6NDYsXCIuL3psaWIvbWVzc2FnZXNcIjo1MSxcIi4vemxpYi96c3RyZWFtXCI6NTN9XSw0MDpbZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBjPWUoXCIuL3psaWIvaW5mbGF0ZVwiKSxkPWUoXCIuL3V0aWxzL2NvbW1vblwiKSxwPWUoXCIuL3V0aWxzL3N0cmluZ3NcIiksbT1lKFwiLi96bGliL2NvbnN0YW50c1wiKSxuPWUoXCIuL3psaWIvbWVzc2FnZXNcIiksaT1lKFwiLi96bGliL3pzdHJlYW1cIikscz1lKFwiLi96bGliL2d6aGVhZGVyXCIpLF89T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztmdW5jdGlvbiBhKGUpe2lmKCEodGhpcyBpbnN0YW5jZW9mIGEpKXJldHVybiBuZXcgYShlKTt0aGlzLm9wdGlvbnM9ZC5hc3NpZ24oe2NodW5rU2l6ZToxNjM4NCx3aW5kb3dCaXRzOjAsdG86XCJcIn0sZXx8e30pO3ZhciB0PXRoaXMub3B0aW9uczt0LnJhdyYmMDw9dC53aW5kb3dCaXRzJiZ0LndpbmRvd0JpdHM8MTYmJih0LndpbmRvd0JpdHM9LXQud2luZG93Qml0cywwPT09dC53aW5kb3dCaXRzJiYodC53aW5kb3dCaXRzPS0xNSkpLCEoMDw9dC53aW5kb3dCaXRzJiZ0LndpbmRvd0JpdHM8MTYpfHxlJiZlLndpbmRvd0JpdHN8fCh0LndpbmRvd0JpdHMrPTMyKSwxNTx0LndpbmRvd0JpdHMmJnQud2luZG93Qml0czw0OCYmMD09KDE1JnQud2luZG93Qml0cykmJih0LndpbmRvd0JpdHN8PTE1KSx0aGlzLmVycj0wLHRoaXMubXNnPVwiXCIsdGhpcy5lbmRlZD0hMSx0aGlzLmNodW5rcz1bXSx0aGlzLnN0cm09bmV3IGksdGhpcy5zdHJtLmF2YWlsX291dD0wO3ZhciByPWMuaW5mbGF0ZUluaXQyKHRoaXMuc3RybSx0LndpbmRvd0JpdHMpO2lmKHIhPT1tLlpfT0spdGhyb3cgbmV3IEVycm9yKG5bcl0pO3RoaXMuaGVhZGVyPW5ldyBzLGMuaW5mbGF0ZUdldEhlYWRlcih0aGlzLnN0cm0sdGhpcy5oZWFkZXIpfWZ1bmN0aW9uIG8oZSx0KXt2YXIgcj1uZXcgYSh0KTtpZihyLnB1c2goZSwhMCksci5lcnIpdGhyb3cgci5tc2d8fG5bci5lcnJdO3JldHVybiByLnJlc3VsdH1hLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKGUsdCl7dmFyIHIsbixpLHMsYSxvLGg9dGhpcy5zdHJtLHU9dGhpcy5vcHRpb25zLmNodW5rU2l6ZSxsPXRoaXMub3B0aW9ucy5kaWN0aW9uYXJ5LGY9ITE7aWYodGhpcy5lbmRlZClyZXR1cm4hMTtuPXQ9PT1+fnQ/dDohMD09PXQ/bS5aX0ZJTklTSDptLlpfTk9fRkxVU0gsXCJzdHJpbmdcIj09dHlwZW9mIGU/aC5pbnB1dD1wLmJpbnN0cmluZzJidWYoZSk6XCJbb2JqZWN0IEFycmF5QnVmZmVyXVwiPT09Xy5jYWxsKGUpP2guaW5wdXQ9bmV3IFVpbnQ4QXJyYXkoZSk6aC5pbnB1dD1lLGgubmV4dF9pbj0wLGguYXZhaWxfaW49aC5pbnB1dC5sZW5ndGg7ZG97aWYoMD09PWguYXZhaWxfb3V0JiYoaC5vdXRwdXQ9bmV3IGQuQnVmOCh1KSxoLm5leHRfb3V0PTAsaC5hdmFpbF9vdXQ9dSksKHI9Yy5pbmZsYXRlKGgsbS5aX05PX0ZMVVNIKSk9PT1tLlpfTkVFRF9ESUNUJiZsJiYobz1cInN0cmluZ1wiPT10eXBlb2YgbD9wLnN0cmluZzJidWYobCk6XCJbb2JqZWN0IEFycmF5QnVmZmVyXVwiPT09Xy5jYWxsKGwpP25ldyBVaW50OEFycmF5KGwpOmwscj1jLmluZmxhdGVTZXREaWN0aW9uYXJ5KHRoaXMuc3RybSxvKSkscj09PW0uWl9CVUZfRVJST1ImJiEwPT09ZiYmKHI9bS5aX09LLGY9ITEpLHIhPT1tLlpfU1RSRUFNX0VORCYmciE9PW0uWl9PSylyZXR1cm4gdGhpcy5vbkVuZChyKSwhKHRoaXMuZW5kZWQ9ITApO2gubmV4dF9vdXQmJigwIT09aC5hdmFpbF9vdXQmJnIhPT1tLlpfU1RSRUFNX0VORCYmKDAhPT1oLmF2YWlsX2lufHxuIT09bS5aX0ZJTklTSCYmbiE9PW0uWl9TWU5DX0ZMVVNIKXx8KFwic3RyaW5nXCI9PT10aGlzLm9wdGlvbnMudG8/KGk9cC51dGY4Ym9yZGVyKGgub3V0cHV0LGgubmV4dF9vdXQpLHM9aC5uZXh0X291dC1pLGE9cC5idWYyc3RyaW5nKGgub3V0cHV0LGkpLGgubmV4dF9vdXQ9cyxoLmF2YWlsX291dD11LXMscyYmZC5hcnJheVNldChoLm91dHB1dCxoLm91dHB1dCxpLHMsMCksdGhpcy5vbkRhdGEoYSkpOnRoaXMub25EYXRhKGQuc2hyaW5rQnVmKGgub3V0cHV0LGgubmV4dF9vdXQpKSkpLDA9PT1oLmF2YWlsX2luJiYwPT09aC5hdmFpbF9vdXQmJihmPSEwKX13aGlsZSgoMDxoLmF2YWlsX2lufHwwPT09aC5hdmFpbF9vdXQpJiZyIT09bS5aX1NUUkVBTV9FTkQpO3JldHVybiByPT09bS5aX1NUUkVBTV9FTkQmJihuPW0uWl9GSU5JU0gpLG49PT1tLlpfRklOSVNIPyhyPWMuaW5mbGF0ZUVuZCh0aGlzLnN0cm0pLHRoaXMub25FbmQociksdGhpcy5lbmRlZD0hMCxyPT09bS5aX09LKTpuIT09bS5aX1NZTkNfRkxVU0h8fCh0aGlzLm9uRW5kKG0uWl9PSyksIShoLmF2YWlsX291dD0wKSl9LGEucHJvdG90eXBlLm9uRGF0YT1mdW5jdGlvbihlKXt0aGlzLmNodW5rcy5wdXNoKGUpfSxhLnByb3RvdHlwZS5vbkVuZD1mdW5jdGlvbihlKXtlPT09bS5aX09LJiYoXCJzdHJpbmdcIj09PXRoaXMub3B0aW9ucy50bz90aGlzLnJlc3VsdD10aGlzLmNodW5rcy5qb2luKFwiXCIpOnRoaXMucmVzdWx0PWQuZmxhdHRlbkNodW5rcyh0aGlzLmNodW5rcykpLHRoaXMuY2h1bmtzPVtdLHRoaXMuZXJyPWUsdGhpcy5tc2c9dGhpcy5zdHJtLm1zZ30sci5JbmZsYXRlPWEsci5pbmZsYXRlPW8sci5pbmZsYXRlUmF3PWZ1bmN0aW9uKGUsdCl7cmV0dXJuKHQ9dHx8e30pLnJhdz0hMCxvKGUsdCl9LHIudW5nemlwPW99LHtcIi4vdXRpbHMvY29tbW9uXCI6NDEsXCIuL3V0aWxzL3N0cmluZ3NcIjo0MixcIi4vemxpYi9jb25zdGFudHNcIjo0NCxcIi4vemxpYi9nemhlYWRlclwiOjQ3LFwiLi96bGliL2luZmxhdGVcIjo0OSxcIi4vemxpYi9tZXNzYWdlc1wiOjUxLFwiLi96bGliL3pzdHJlYW1cIjo1M31dLDQxOltmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFVpbnQ4QXJyYXkmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBVaW50MTZBcnJheSYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIEludDMyQXJyYXk7ci5hc3NpZ249ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTt0Lmxlbmd0aDspe3ZhciByPXQuc2hpZnQoKTtpZihyKXtpZihcIm9iamVjdFwiIT10eXBlb2Ygcil0aHJvdyBuZXcgVHlwZUVycm9yKHIrXCJtdXN0IGJlIG5vbi1vYmplY3RcIik7Zm9yKHZhciBuIGluIHIpci5oYXNPd25Qcm9wZXJ0eShuKSYmKGVbbl09cltuXSl9fXJldHVybiBlfSxyLnNocmlua0J1Zj1mdW5jdGlvbihlLHQpe3JldHVybiBlLmxlbmd0aD09PXQ/ZTplLnN1YmFycmF5P2Uuc3ViYXJyYXkoMCx0KTooZS5sZW5ndGg9dCxlKX07dmFyIGk9e2FycmF5U2V0OmZ1bmN0aW9uKGUsdCxyLG4saSl7aWYodC5zdWJhcnJheSYmZS5zdWJhcnJheSllLnNldCh0LnN1YmFycmF5KHIscituKSxpKTtlbHNlIGZvcih2YXIgcz0wO3M8bjtzKyspZVtpK3NdPXRbcitzXX0sZmxhdHRlbkNodW5rczpmdW5jdGlvbihlKXt2YXIgdCxyLG4saSxzLGE7Zm9yKHQ9bj0wLHI9ZS5sZW5ndGg7dDxyO3QrKyluKz1lW3RdLmxlbmd0aDtmb3IoYT1uZXcgVWludDhBcnJheShuKSx0PWk9MCxyPWUubGVuZ3RoO3Q8cjt0Kyspcz1lW3RdLGEuc2V0KHMsaSksaSs9cy5sZW5ndGg7cmV0dXJuIGF9fSxzPXthcnJheVNldDpmdW5jdGlvbihlLHQscixuLGkpe2Zvcih2YXIgcz0wO3M8bjtzKyspZVtpK3NdPXRbcitzXX0sZmxhdHRlbkNodW5rczpmdW5jdGlvbihlKXtyZXR1cm5bXS5jb25jYXQuYXBwbHkoW10sZSl9fTtyLnNldFR5cGVkPWZ1bmN0aW9uKGUpe2U/KHIuQnVmOD1VaW50OEFycmF5LHIuQnVmMTY9VWludDE2QXJyYXksci5CdWYzMj1JbnQzMkFycmF5LHIuYXNzaWduKHIsaSkpOihyLkJ1Zjg9QXJyYXksci5CdWYxNj1BcnJheSxyLkJ1ZjMyPUFycmF5LHIuYXNzaWduKHIscykpfSxyLnNldFR5cGVkKG4pfSx7fV0sNDI6W2Z1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgaD1lKFwiLi9jb21tb25cIiksaT0hMCxzPSEwO3RyeXtTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsWzBdKX1jYXRjaChlKXtpPSExfXRyeXtTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsbmV3IFVpbnQ4QXJyYXkoMSkpfWNhdGNoKGUpe3M9ITF9Zm9yKHZhciB1PW5ldyBoLkJ1ZjgoMjU2KSxuPTA7bjwyNTY7bisrKXVbbl09MjUyPD1uPzY6MjQ4PD1uPzU6MjQwPD1uPzQ6MjI0PD1uPzM6MTkyPD1uPzI6MTtmdW5jdGlvbiBsKGUsdCl7aWYodDw2NTUzNyYmKGUuc3ViYXJyYXkmJnN8fCFlLnN1YmFycmF5JiZpKSlyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGguc2hyaW5rQnVmKGUsdCkpO2Zvcih2YXIgcj1cIlwiLG49MDtuPHQ7bisrKXIrPVN0cmluZy5mcm9tQ2hhckNvZGUoZVtuXSk7cmV0dXJuIHJ9dVsyNTRdPXVbMjU0XT0xLHIuc3RyaW5nMmJ1Zj1mdW5jdGlvbihlKXt2YXIgdCxyLG4saSxzLGE9ZS5sZW5ndGgsbz0wO2ZvcihpPTA7aTxhO2krKyk1NTI5Nj09KDY0NTEyJihyPWUuY2hhckNvZGVBdChpKSkpJiZpKzE8YSYmNTYzMjA9PSg2NDUxMiYobj1lLmNoYXJDb2RlQXQoaSsxKSkpJiYocj02NTUzNisoci01NTI5Njw8MTApKyhuLTU2MzIwKSxpKyspLG8rPXI8MTI4PzE6cjwyMDQ4PzI6cjw2NTUzNj8zOjQ7Zm9yKHQ9bmV3IGguQnVmOChvKSxpPXM9MDtzPG87aSsrKTU1Mjk2PT0oNjQ1MTImKHI9ZS5jaGFyQ29kZUF0KGkpKSkmJmkrMTxhJiY1NjMyMD09KDY0NTEyJihuPWUuY2hhckNvZGVBdChpKzEpKSkmJihyPTY1NTM2KyhyLTU1Mjk2PDwxMCkrKG4tNTYzMjApLGkrKykscjwxMjg/dFtzKytdPXI6KHI8MjA0OD90W3MrK109MTkyfHI+Pj42OihyPDY1NTM2P3RbcysrXT0yMjR8cj4+PjEyOih0W3MrK109MjQwfHI+Pj4xOCx0W3MrK109MTI4fHI+Pj4xMiY2MyksdFtzKytdPTEyOHxyPj4+NiY2MyksdFtzKytdPTEyOHw2MyZyKTtyZXR1cm4gdH0sci5idWYyYmluc3RyaW5nPWZ1bmN0aW9uKGUpe3JldHVybiBsKGUsZS5sZW5ndGgpfSxyLmJpbnN0cmluZzJidWY9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PW5ldyBoLkJ1ZjgoZS5sZW5ndGgpLHI9MCxuPXQubGVuZ3RoO3I8bjtyKyspdFtyXT1lLmNoYXJDb2RlQXQocik7cmV0dXJuIHR9LHIuYnVmMnN0cmluZz1mdW5jdGlvbihlLHQpe3ZhciByLG4saSxzLGE9dHx8ZS5sZW5ndGgsbz1uZXcgQXJyYXkoMiphKTtmb3Iocj1uPTA7cjxhOylpZigoaT1lW3IrK10pPDEyOClvW24rK109aTtlbHNlIGlmKDQ8KHM9dVtpXSkpb1tuKytdPTY1NTMzLHIrPXMtMTtlbHNle2ZvcihpJj0yPT09cz8zMTozPT09cz8xNTo3OzE8cyYmcjxhOylpPWk8PDZ8NjMmZVtyKytdLHMtLTsxPHM/b1tuKytdPTY1NTMzOmk8NjU1MzY/b1tuKytdPWk6KGktPTY1NTM2LG9bbisrXT01NTI5NnxpPj4xMCYxMDIzLG9bbisrXT01NjMyMHwxMDIzJmkpfXJldHVybiBsKG8sbil9LHIudXRmOGJvcmRlcj1mdW5jdGlvbihlLHQpe3ZhciByO2ZvcigodD10fHxlLmxlbmd0aCk+ZS5sZW5ndGgmJih0PWUubGVuZ3RoKSxyPXQtMTswPD1yJiYxMjg9PSgxOTImZVtyXSk7KXItLTtyZXR1cm4gcjwwP3Q6MD09PXI/dDpyK3VbZVtyXV0+dD9yOnR9fSx7XCIuL2NvbW1vblwiOjQxfV0sNDM6W2Z1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt0LmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIsbil7Zm9yKHZhciBpPTY1NTM1JmV8MCxzPWU+Pj4xNiY2NTUzNXwwLGE9MDswIT09cjspe2ZvcihyLT1hPTJlMzxyPzJlMzpyO3M9cysoaT1pK3RbbisrXXwwKXwwLC0tYTspO2klPTY1NTIxLHMlPTY1NTIxfXJldHVybiBpfHM8PDE2fDB9fSx7fV0sNDQ6W2Z1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt0LmV4cG9ydHM9e1pfTk9fRkxVU0g6MCxaX1BBUlRJQUxfRkxVU0g6MSxaX1NZTkNfRkxVU0g6MixaX0ZVTExfRkxVU0g6MyxaX0ZJTklTSDo0LFpfQkxPQ0s6NSxaX1RSRUVTOjYsWl9PSzowLFpfU1RSRUFNX0VORDoxLFpfTkVFRF9ESUNUOjIsWl9FUlJOTzotMSxaX1NUUkVBTV9FUlJPUjotMixaX0RBVEFfRVJST1I6LTMsWl9CVUZfRVJST1I6LTUsWl9OT19DT01QUkVTU0lPTjowLFpfQkVTVF9TUEVFRDoxLFpfQkVTVF9DT01QUkVTU0lPTjo5LFpfREVGQVVMVF9DT01QUkVTU0lPTjotMSxaX0ZJTFRFUkVEOjEsWl9IVUZGTUFOX09OTFk6MixaX1JMRTozLFpfRklYRUQ6NCxaX0RFRkFVTFRfU1RSQVRFR1k6MCxaX0JJTkFSWTowLFpfVEVYVDoxLFpfVU5LTk9XTjoyLFpfREVGTEFURUQ6OH19LHt9XSw0NTpbZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBvPWZ1bmN0aW9uKCl7Zm9yKHZhciBlLHQ9W10scj0wO3I8MjU2O3IrKyl7ZT1yO2Zvcih2YXIgbj0wO248ODtuKyspZT0xJmU/Mzk4ODI5MjM4NF5lPj4+MTplPj4+MTt0W3JdPWV9cmV0dXJuIHR9KCk7dC5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLG4pe3ZhciBpPW8scz1uK3I7ZV49LTE7Zm9yKHZhciBhPW47YTxzO2ErKyllPWU+Pj44XmlbMjU1JihlXnRbYV0pXTtyZXR1cm4tMV5lfX0se31dLDQ2OltmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGgsYz1lKFwiLi4vdXRpbHMvY29tbW9uXCIpLHU9ZShcIi4vdHJlZXNcIiksZD1lKFwiLi9hZGxlcjMyXCIpLHA9ZShcIi4vY3JjMzJcIiksbj1lKFwiLi9tZXNzYWdlc1wiKSxsPTAsZj00LG09MCxfPS0yLGc9LTEsYj00LGk9Mix2PTgseT05LHM9Mjg2LGE9MzAsbz0xOSx3PTIqcysxLGs9MTUseD0zLFM9MjU4LHo9Uyt4KzEsQz00MixFPTExMyxBPTEsST0yLE89MyxCPTQ7ZnVuY3Rpb24gUihlLHQpe3JldHVybiBlLm1zZz1uW3RdLHR9ZnVuY3Rpb24gVChlKXtyZXR1cm4oZTw8MSktKDQ8ZT85OjApfWZ1bmN0aW9uIEQoZSl7Zm9yKHZhciB0PWUubGVuZ3RoOzA8PS0tdDspZVt0XT0wfWZ1bmN0aW9uIEYoZSl7dmFyIHQ9ZS5zdGF0ZSxyPXQucGVuZGluZztyPmUuYXZhaWxfb3V0JiYocj1lLmF2YWlsX291dCksMCE9PXImJihjLmFycmF5U2V0KGUub3V0cHV0LHQucGVuZGluZ19idWYsdC5wZW5kaW5nX291dCxyLGUubmV4dF9vdXQpLGUubmV4dF9vdXQrPXIsdC5wZW5kaW5nX291dCs9cixlLnRvdGFsX291dCs9cixlLmF2YWlsX291dC09cix0LnBlbmRpbmctPXIsMD09PXQucGVuZGluZyYmKHQucGVuZGluZ19vdXQ9MCkpfWZ1bmN0aW9uIE4oZSx0KXt1Ll90cl9mbHVzaF9ibG9jayhlLDA8PWUuYmxvY2tfc3RhcnQ/ZS5ibG9ja19zdGFydDotMSxlLnN0cnN0YXJ0LWUuYmxvY2tfc3RhcnQsdCksZS5ibG9ja19zdGFydD1lLnN0cnN0YXJ0LEYoZS5zdHJtKX1mdW5jdGlvbiBVKGUsdCl7ZS5wZW5kaW5nX2J1ZltlLnBlbmRpbmcrK109dH1mdW5jdGlvbiBQKGUsdCl7ZS5wZW5kaW5nX2J1ZltlLnBlbmRpbmcrK109dD4+PjgmMjU1LGUucGVuZGluZ19idWZbZS5wZW5kaW5nKytdPTI1NSZ0fWZ1bmN0aW9uIEwoZSx0KXt2YXIgcixuLGk9ZS5tYXhfY2hhaW5fbGVuZ3RoLHM9ZS5zdHJzdGFydCxhPWUucHJldl9sZW5ndGgsbz1lLm5pY2VfbWF0Y2gsaD1lLnN0cnN0YXJ0PmUud19zaXplLXo/ZS5zdHJzdGFydC0oZS53X3NpemUteik6MCx1PWUud2luZG93LGw9ZS53X21hc2ssZj1lLnByZXYsYz1lLnN0cnN0YXJ0K1MsZD11W3MrYS0xXSxwPXVbcythXTtlLnByZXZfbGVuZ3RoPj1lLmdvb2RfbWF0Y2gmJihpPj49Miksbz5lLmxvb2thaGVhZCYmKG89ZS5sb29rYWhlYWQpO2Rve2lmKHVbKHI9dCkrYV09PT1wJiZ1W3IrYS0xXT09PWQmJnVbcl09PT11W3NdJiZ1Wysrcl09PT11W3MrMV0pe3MrPTIscisrO2Rve313aGlsZSh1Wysrc109PT11Wysrcl0mJnVbKytzXT09PXVbKytyXSYmdVsrK3NdPT09dVsrK3JdJiZ1Wysrc109PT11Wysrcl0mJnVbKytzXT09PXVbKytyXSYmdVsrK3NdPT09dVsrK3JdJiZ1Wysrc109PT11Wysrcl0mJnVbKytzXT09PXVbKytyXSYmczxjKTtpZihuPVMtKGMtcykscz1jLVMsYTxuKXtpZihlLm1hdGNoX3N0YXJ0PXQsbzw9KGE9bikpYnJlYWs7ZD11W3MrYS0xXSxwPXVbcythXX19fXdoaWxlKCh0PWZbdCZsXSk+aCYmMCE9LS1pKTtyZXR1cm4gYTw9ZS5sb29rYWhlYWQ/YTplLmxvb2thaGVhZH1mdW5jdGlvbiBqKGUpe3ZhciB0LHIsbixpLHMsYSxvLGgsdSxsLGY9ZS53X3NpemU7ZG97aWYoaT1lLndpbmRvd19zaXplLWUubG9va2FoZWFkLWUuc3Ryc3RhcnQsZS5zdHJzdGFydD49ZisoZi16KSl7Zm9yKGMuYXJyYXlTZXQoZS53aW5kb3csZS53aW5kb3csZixmLDApLGUubWF0Y2hfc3RhcnQtPWYsZS5zdHJzdGFydC09ZixlLmJsb2NrX3N0YXJ0LT1mLHQ9cj1lLmhhc2hfc2l6ZTtuPWUuaGVhZFstLXRdLGUuaGVhZFt0XT1mPD1uP24tZjowLC0tcjspO2Zvcih0PXI9ZjtuPWUucHJldlstLXRdLGUucHJldlt0XT1mPD1uP24tZjowLC0tcjspO2krPWZ9aWYoMD09PWUuc3RybS5hdmFpbF9pbilicmVhaztpZihhPWUuc3RybSxvPWUud2luZG93LGg9ZS5zdHJzdGFydCtlLmxvb2thaGVhZCx1PWksbD12b2lkIDAsbD1hLmF2YWlsX2luLHU8bCYmKGw9dSkscj0wPT09bD8wOihhLmF2YWlsX2luLT1sLGMuYXJyYXlTZXQobyxhLmlucHV0LGEubmV4dF9pbixsLGgpLDE9PT1hLnN0YXRlLndyYXA/YS5hZGxlcj1kKGEuYWRsZXIsbyxsLGgpOjI9PT1hLnN0YXRlLndyYXAmJihhLmFkbGVyPXAoYS5hZGxlcixvLGwsaCkpLGEubmV4dF9pbis9bCxhLnRvdGFsX2luKz1sLGwpLGUubG9va2FoZWFkKz1yLGUubG9va2FoZWFkK2UuaW5zZXJ0Pj14KWZvcihzPWUuc3Ryc3RhcnQtZS5pbnNlcnQsZS5pbnNfaD1lLndpbmRvd1tzXSxlLmluc19oPShlLmluc19oPDxlLmhhc2hfc2hpZnReZS53aW5kb3dbcysxXSkmZS5oYXNoX21hc2s7ZS5pbnNlcnQmJihlLmluc19oPShlLmluc19oPDxlLmhhc2hfc2hpZnReZS53aW5kb3dbcyt4LTFdKSZlLmhhc2hfbWFzayxlLnByZXZbcyZlLndfbWFza109ZS5oZWFkW2UuaW5zX2hdLGUuaGVhZFtlLmluc19oXT1zLHMrKyxlLmluc2VydC0tLCEoZS5sb29rYWhlYWQrZS5pbnNlcnQ8eCkpOyk7fXdoaWxlKGUubG9va2FoZWFkPHomJjAhPT1lLnN0cm0uYXZhaWxfaW4pfWZ1bmN0aW9uIFooZSx0KXtmb3IodmFyIHIsbjs7KXtpZihlLmxvb2thaGVhZDx6KXtpZihqKGUpLGUubG9va2FoZWFkPHomJnQ9PT1sKXJldHVybiBBO2lmKDA9PT1lLmxvb2thaGVhZClicmVha31pZihyPTAsZS5sb29rYWhlYWQ+PXgmJihlLmluc19oPShlLmluc19oPDxlLmhhc2hfc2hpZnReZS53aW5kb3dbZS5zdHJzdGFydCt4LTFdKSZlLmhhc2hfbWFzayxyPWUucHJldltlLnN0cnN0YXJ0JmUud19tYXNrXT1lLmhlYWRbZS5pbnNfaF0sZS5oZWFkW2UuaW5zX2hdPWUuc3Ryc3RhcnQpLDAhPT1yJiZlLnN0cnN0YXJ0LXI8PWUud19zaXplLXomJihlLm1hdGNoX2xlbmd0aD1MKGUscikpLGUubWF0Y2hfbGVuZ3RoPj14KWlmKG49dS5fdHJfdGFsbHkoZSxlLnN0cnN0YXJ0LWUubWF0Y2hfc3RhcnQsZS5tYXRjaF9sZW5ndGgteCksZS5sb29rYWhlYWQtPWUubWF0Y2hfbGVuZ3RoLGUubWF0Y2hfbGVuZ3RoPD1lLm1heF9sYXp5X21hdGNoJiZlLmxvb2thaGVhZD49eCl7Zm9yKGUubWF0Y2hfbGVuZ3RoLS07ZS5zdHJzdGFydCsrLGUuaW5zX2g9KGUuaW5zX2g8PGUuaGFzaF9zaGlmdF5lLndpbmRvd1tlLnN0cnN0YXJ0K3gtMV0pJmUuaGFzaF9tYXNrLHI9ZS5wcmV2W2Uuc3Ryc3RhcnQmZS53X21hc2tdPWUuaGVhZFtlLmluc19oXSxlLmhlYWRbZS5pbnNfaF09ZS5zdHJzdGFydCwwIT0tLWUubWF0Y2hfbGVuZ3RoOyk7ZS5zdHJzdGFydCsrfWVsc2UgZS5zdHJzdGFydCs9ZS5tYXRjaF9sZW5ndGgsZS5tYXRjaF9sZW5ndGg9MCxlLmluc19oPWUud2luZG93W2Uuc3Ryc3RhcnRdLGUuaW5zX2g9KGUuaW5zX2g8PGUuaGFzaF9zaGlmdF5lLndpbmRvd1tlLnN0cnN0YXJ0KzFdKSZlLmhhc2hfbWFzaztlbHNlIG49dS5fdHJfdGFsbHkoZSwwLGUud2luZG93W2Uuc3Ryc3RhcnRdKSxlLmxvb2thaGVhZC0tLGUuc3Ryc3RhcnQrKztpZihuJiYoTihlLCExKSwwPT09ZS5zdHJtLmF2YWlsX291dCkpcmV0dXJuIEF9cmV0dXJuIGUuaW5zZXJ0PWUuc3Ryc3RhcnQ8eC0xP2Uuc3Ryc3RhcnQ6eC0xLHQ9PT1mPyhOKGUsITApLDA9PT1lLnN0cm0uYXZhaWxfb3V0P086Qik6ZS5sYXN0X2xpdCYmKE4oZSwhMSksMD09PWUuc3RybS5hdmFpbF9vdXQpP0E6SX1mdW5jdGlvbiBXKGUsdCl7Zm9yKHZhciByLG4saTs7KXtpZihlLmxvb2thaGVhZDx6KXtpZihqKGUpLGUubG9va2FoZWFkPHomJnQ9PT1sKXJldHVybiBBO2lmKDA9PT1lLmxvb2thaGVhZClicmVha31pZihyPTAsZS5sb29rYWhlYWQ+PXgmJihlLmluc19oPShlLmluc19oPDxlLmhhc2hfc2hpZnReZS53aW5kb3dbZS5zdHJzdGFydCt4LTFdKSZlLmhhc2hfbWFzayxyPWUucHJldltlLnN0cnN0YXJ0JmUud19tYXNrXT1lLmhlYWRbZS5pbnNfaF0sZS5oZWFkW2UuaW5zX2hdPWUuc3Ryc3RhcnQpLGUucHJldl9sZW5ndGg9ZS5tYXRjaF9sZW5ndGgsZS5wcmV2X21hdGNoPWUubWF0Y2hfc3RhcnQsZS5tYXRjaF9sZW5ndGg9eC0xLDAhPT1yJiZlLnByZXZfbGVuZ3RoPGUubWF4X2xhenlfbWF0Y2gmJmUuc3Ryc3RhcnQtcjw9ZS53X3NpemUteiYmKGUubWF0Y2hfbGVuZ3RoPUwoZSxyKSxlLm1hdGNoX2xlbmd0aDw9NSYmKDE9PT1lLnN0cmF0ZWd5fHxlLm1hdGNoX2xlbmd0aD09PXgmJjQwOTY8ZS5zdHJzdGFydC1lLm1hdGNoX3N0YXJ0KSYmKGUubWF0Y2hfbGVuZ3RoPXgtMSkpLGUucHJldl9sZW5ndGg+PXgmJmUubWF0Y2hfbGVuZ3RoPD1lLnByZXZfbGVuZ3RoKXtmb3IoaT1lLnN0cnN0YXJ0K2UubG9va2FoZWFkLXgsbj11Ll90cl90YWxseShlLGUuc3Ryc3RhcnQtMS1lLnByZXZfbWF0Y2gsZS5wcmV2X2xlbmd0aC14KSxlLmxvb2thaGVhZC09ZS5wcmV2X2xlbmd0aC0xLGUucHJldl9sZW5ndGgtPTI7KytlLnN0cnN0YXJ0PD1pJiYoZS5pbnNfaD0oZS5pbnNfaDw8ZS5oYXNoX3NoaWZ0XmUud2luZG93W2Uuc3Ryc3RhcnQreC0xXSkmZS5oYXNoX21hc2sscj1lLnByZXZbZS5zdHJzdGFydCZlLndfbWFza109ZS5oZWFkW2UuaW5zX2hdLGUuaGVhZFtlLmluc19oXT1lLnN0cnN0YXJ0KSwwIT0tLWUucHJldl9sZW5ndGg7KTtpZihlLm1hdGNoX2F2YWlsYWJsZT0wLGUubWF0Y2hfbGVuZ3RoPXgtMSxlLnN0cnN0YXJ0KyssbiYmKE4oZSwhMSksMD09PWUuc3RybS5hdmFpbF9vdXQpKXJldHVybiBBfWVsc2UgaWYoZS5tYXRjaF9hdmFpbGFibGUpe2lmKChuPXUuX3RyX3RhbGx5KGUsMCxlLndpbmRvd1tlLnN0cnN0YXJ0LTFdKSkmJk4oZSwhMSksZS5zdHJzdGFydCsrLGUubG9va2FoZWFkLS0sMD09PWUuc3RybS5hdmFpbF9vdXQpcmV0dXJuIEF9ZWxzZSBlLm1hdGNoX2F2YWlsYWJsZT0xLGUuc3Ryc3RhcnQrKyxlLmxvb2thaGVhZC0tfXJldHVybiBlLm1hdGNoX2F2YWlsYWJsZSYmKG49dS5fdHJfdGFsbHkoZSwwLGUud2luZG93W2Uuc3Ryc3RhcnQtMV0pLGUubWF0Y2hfYXZhaWxhYmxlPTApLGUuaW5zZXJ0PWUuc3Ryc3RhcnQ8eC0xP2Uuc3Ryc3RhcnQ6eC0xLHQ9PT1mPyhOKGUsITApLDA9PT1lLnN0cm0uYXZhaWxfb3V0P086Qik6ZS5sYXN0X2xpdCYmKE4oZSwhMSksMD09PWUuc3RybS5hdmFpbF9vdXQpP0E6SX1mdW5jdGlvbiBNKGUsdCxyLG4saSl7dGhpcy5nb29kX2xlbmd0aD1lLHRoaXMubWF4X2xhenk9dCx0aGlzLm5pY2VfbGVuZ3RoPXIsdGhpcy5tYXhfY2hhaW49bix0aGlzLmZ1bmM9aX1mdW5jdGlvbiBIKCl7dGhpcy5zdHJtPW51bGwsdGhpcy5zdGF0dXM9MCx0aGlzLnBlbmRpbmdfYnVmPW51bGwsdGhpcy5wZW5kaW5nX2J1Zl9zaXplPTAsdGhpcy5wZW5kaW5nX291dD0wLHRoaXMucGVuZGluZz0wLHRoaXMud3JhcD0wLHRoaXMuZ3poZWFkPW51bGwsdGhpcy5nemluZGV4PTAsdGhpcy5tZXRob2Q9dix0aGlzLmxhc3RfZmx1c2g9LTEsdGhpcy53X3NpemU9MCx0aGlzLndfYml0cz0wLHRoaXMud19tYXNrPTAsdGhpcy53aW5kb3c9bnVsbCx0aGlzLndpbmRvd19zaXplPTAsdGhpcy5wcmV2PW51bGwsdGhpcy5oZWFkPW51bGwsdGhpcy5pbnNfaD0wLHRoaXMuaGFzaF9zaXplPTAsdGhpcy5oYXNoX2JpdHM9MCx0aGlzLmhhc2hfbWFzaz0wLHRoaXMuaGFzaF9zaGlmdD0wLHRoaXMuYmxvY2tfc3RhcnQ9MCx0aGlzLm1hdGNoX2xlbmd0aD0wLHRoaXMucHJldl9tYXRjaD0wLHRoaXMubWF0Y2hfYXZhaWxhYmxlPTAsdGhpcy5zdHJzdGFydD0wLHRoaXMubWF0Y2hfc3RhcnQ9MCx0aGlzLmxvb2thaGVhZD0wLHRoaXMucHJldl9sZW5ndGg9MCx0aGlzLm1heF9jaGFpbl9sZW5ndGg9MCx0aGlzLm1heF9sYXp5X21hdGNoPTAsdGhpcy5sZXZlbD0wLHRoaXMuc3RyYXRlZ3k9MCx0aGlzLmdvb2RfbWF0Y2g9MCx0aGlzLm5pY2VfbWF0Y2g9MCx0aGlzLmR5bl9sdHJlZT1uZXcgYy5CdWYxNigyKncpLHRoaXMuZHluX2R0cmVlPW5ldyBjLkJ1ZjE2KDIqKDIqYSsxKSksdGhpcy5ibF90cmVlPW5ldyBjLkJ1ZjE2KDIqKDIqbysxKSksRCh0aGlzLmR5bl9sdHJlZSksRCh0aGlzLmR5bl9kdHJlZSksRCh0aGlzLmJsX3RyZWUpLHRoaXMubF9kZXNjPW51bGwsdGhpcy5kX2Rlc2M9bnVsbCx0aGlzLmJsX2Rlc2M9bnVsbCx0aGlzLmJsX2NvdW50PW5ldyBjLkJ1ZjE2KGsrMSksdGhpcy5oZWFwPW5ldyBjLkJ1ZjE2KDIqcysxKSxEKHRoaXMuaGVhcCksdGhpcy5oZWFwX2xlbj0wLHRoaXMuaGVhcF9tYXg9MCx0aGlzLmRlcHRoPW5ldyBjLkJ1ZjE2KDIqcysxKSxEKHRoaXMuZGVwdGgpLHRoaXMubF9idWY9MCx0aGlzLmxpdF9idWZzaXplPTAsdGhpcy5sYXN0X2xpdD0wLHRoaXMuZF9idWY9MCx0aGlzLm9wdF9sZW49MCx0aGlzLnN0YXRpY19sZW49MCx0aGlzLm1hdGNoZXM9MCx0aGlzLmluc2VydD0wLHRoaXMuYmlfYnVmPTAsdGhpcy5iaV92YWxpZD0wfWZ1bmN0aW9uIEcoZSl7dmFyIHQ7cmV0dXJuIGUmJmUuc3RhdGU/KGUudG90YWxfaW49ZS50b3RhbF9vdXQ9MCxlLmRhdGFfdHlwZT1pLCh0PWUuc3RhdGUpLnBlbmRpbmc9MCx0LnBlbmRpbmdfb3V0PTAsdC53cmFwPDAmJih0LndyYXA9LXQud3JhcCksdC5zdGF0dXM9dC53cmFwP0M6RSxlLmFkbGVyPTI9PT10LndyYXA/MDoxLHQubGFzdF9mbHVzaD1sLHUuX3RyX2luaXQodCksbSk6UihlLF8pfWZ1bmN0aW9uIEsoZSl7dmFyIHQ9RyhlKTtyZXR1cm4gdD09PW0mJmZ1bmN0aW9uKGUpe2Uud2luZG93X3NpemU9MiplLndfc2l6ZSxEKGUuaGVhZCksZS5tYXhfbGF6eV9tYXRjaD1oW2UubGV2ZWxdLm1heF9sYXp5LGUuZ29vZF9tYXRjaD1oW2UubGV2ZWxdLmdvb2RfbGVuZ3RoLGUubmljZV9tYXRjaD1oW2UubGV2ZWxdLm5pY2VfbGVuZ3RoLGUubWF4X2NoYWluX2xlbmd0aD1oW2UubGV2ZWxdLm1heF9jaGFpbixlLnN0cnN0YXJ0PTAsZS5ibG9ja19zdGFydD0wLGUubG9va2FoZWFkPTAsZS5pbnNlcnQ9MCxlLm1hdGNoX2xlbmd0aD1lLnByZXZfbGVuZ3RoPXgtMSxlLm1hdGNoX2F2YWlsYWJsZT0wLGUuaW5zX2g9MH0oZS5zdGF0ZSksdH1mdW5jdGlvbiBZKGUsdCxyLG4saSxzKXtpZighZSlyZXR1cm4gXzt2YXIgYT0xO2lmKHQ9PT1nJiYodD02KSxuPDA/KGE9MCxuPS1uKToxNTxuJiYoYT0yLG4tPTE2KSxpPDF8fHk8aXx8ciE9PXZ8fG48OHx8MTU8bnx8dDwwfHw5PHR8fHM8MHx8YjxzKXJldHVybiBSKGUsXyk7OD09PW4mJihuPTkpO3ZhciBvPW5ldyBIO3JldHVybihlLnN0YXRlPW8pLnN0cm09ZSxvLndyYXA9YSxvLmd6aGVhZD1udWxsLG8ud19iaXRzPW4sby53X3NpemU9MTw8by53X2JpdHMsby53X21hc2s9by53X3NpemUtMSxvLmhhc2hfYml0cz1pKzcsby5oYXNoX3NpemU9MTw8by5oYXNoX2JpdHMsby5oYXNoX21hc2s9by5oYXNoX3NpemUtMSxvLmhhc2hfc2hpZnQ9fn4oKG8uaGFzaF9iaXRzK3gtMSkveCksby53aW5kb3c9bmV3IGMuQnVmOCgyKm8ud19zaXplKSxvLmhlYWQ9bmV3IGMuQnVmMTYoby5oYXNoX3NpemUpLG8ucHJldj1uZXcgYy5CdWYxNihvLndfc2l6ZSksby5saXRfYnVmc2l6ZT0xPDxpKzYsby5wZW5kaW5nX2J1Zl9zaXplPTQqby5saXRfYnVmc2l6ZSxvLnBlbmRpbmdfYnVmPW5ldyBjLkJ1Zjgoby5wZW5kaW5nX2J1Zl9zaXplKSxvLmRfYnVmPTEqby5saXRfYnVmc2l6ZSxvLmxfYnVmPTMqby5saXRfYnVmc2l6ZSxvLmxldmVsPXQsby5zdHJhdGVneT1zLG8ubWV0aG9kPXIsSyhlKX1oPVtuZXcgTSgwLDAsMCwwLGZ1bmN0aW9uKGUsdCl7dmFyIHI9NjU1MzU7Zm9yKHI+ZS5wZW5kaW5nX2J1Zl9zaXplLTUmJihyPWUucGVuZGluZ19idWZfc2l6ZS01KTs7KXtpZihlLmxvb2thaGVhZDw9MSl7aWYoaihlKSwwPT09ZS5sb29rYWhlYWQmJnQ9PT1sKXJldHVybiBBO2lmKDA9PT1lLmxvb2thaGVhZClicmVha31lLnN0cnN0YXJ0Kz1lLmxvb2thaGVhZCxlLmxvb2thaGVhZD0wO3ZhciBuPWUuYmxvY2tfc3RhcnQrcjtpZigoMD09PWUuc3Ryc3RhcnR8fGUuc3Ryc3RhcnQ+PW4pJiYoZS5sb29rYWhlYWQ9ZS5zdHJzdGFydC1uLGUuc3Ryc3RhcnQ9bixOKGUsITEpLDA9PT1lLnN0cm0uYXZhaWxfb3V0KSlyZXR1cm4gQTtpZihlLnN0cnN0YXJ0LWUuYmxvY2tfc3RhcnQ+PWUud19zaXplLXomJihOKGUsITEpLDA9PT1lLnN0cm0uYXZhaWxfb3V0KSlyZXR1cm4gQX1yZXR1cm4gZS5pbnNlcnQ9MCx0PT09Zj8oTihlLCEwKSwwPT09ZS5zdHJtLmF2YWlsX291dD9POkIpOihlLnN0cnN0YXJ0PmUuYmxvY2tfc3RhcnQmJihOKGUsITEpLGUuc3RybS5hdmFpbF9vdXQpLEEpfSksbmV3IE0oNCw0LDgsNCxaKSxuZXcgTSg0LDUsMTYsOCxaKSxuZXcgTSg0LDYsMzIsMzIsWiksbmV3IE0oNCw0LDE2LDE2LFcpLG5ldyBNKDgsMTYsMzIsMzIsVyksbmV3IE0oOCwxNiwxMjgsMTI4LFcpLG5ldyBNKDgsMzIsMTI4LDI1NixXKSxuZXcgTSgzMiwxMjgsMjU4LDEwMjQsVyksbmV3IE0oMzIsMjU4LDI1OCw0MDk2LFcpXSxyLmRlZmxhdGVJbml0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIFkoZSx0LHYsMTUsOCwwKX0sci5kZWZsYXRlSW5pdDI9WSxyLmRlZmxhdGVSZXNldD1LLHIuZGVmbGF0ZVJlc2V0S2VlcD1HLHIuZGVmbGF0ZVNldEhlYWRlcj1mdW5jdGlvbihlLHQpe3JldHVybiBlJiZlLnN0YXRlPzIhPT1lLnN0YXRlLndyYXA/XzooZS5zdGF0ZS5nemhlYWQ9dCxtKTpffSxyLmRlZmxhdGU9ZnVuY3Rpb24oZSx0KXt2YXIgcixuLGkscztpZighZXx8IWUuc3RhdGV8fDU8dHx8dDwwKXJldHVybiBlP1IoZSxfKTpfO2lmKG49ZS5zdGF0ZSwhZS5vdXRwdXR8fCFlLmlucHV0JiYwIT09ZS5hdmFpbF9pbnx8NjY2PT09bi5zdGF0dXMmJnQhPT1mKXJldHVybiBSKGUsMD09PWUuYXZhaWxfb3V0Py01Ol8pO2lmKG4uc3RybT1lLHI9bi5sYXN0X2ZsdXNoLG4ubGFzdF9mbHVzaD10LG4uc3RhdHVzPT09QylpZigyPT09bi53cmFwKWUuYWRsZXI9MCxVKG4sMzEpLFUobiwxMzkpLFUobiw4KSxuLmd6aGVhZD8oVShuLChuLmd6aGVhZC50ZXh0PzE6MCkrKG4uZ3poZWFkLmhjcmM/MjowKSsobi5nemhlYWQuZXh0cmE/NDowKSsobi5nemhlYWQubmFtZT84OjApKyhuLmd6aGVhZC5jb21tZW50PzE2OjApKSxVKG4sMjU1Jm4uZ3poZWFkLnRpbWUpLFUobixuLmd6aGVhZC50aW1lPj44JjI1NSksVShuLG4uZ3poZWFkLnRpbWU+PjE2JjI1NSksVShuLG4uZ3poZWFkLnRpbWU+PjI0JjI1NSksVShuLDk9PT1uLmxldmVsPzI6Mjw9bi5zdHJhdGVneXx8bi5sZXZlbDwyPzQ6MCksVShuLDI1NSZuLmd6aGVhZC5vcyksbi5nemhlYWQuZXh0cmEmJm4uZ3poZWFkLmV4dHJhLmxlbmd0aCYmKFUobiwyNTUmbi5nemhlYWQuZXh0cmEubGVuZ3RoKSxVKG4sbi5nemhlYWQuZXh0cmEubGVuZ3RoPj44JjI1NSkpLG4uZ3poZWFkLmhjcmMmJihlLmFkbGVyPXAoZS5hZGxlcixuLnBlbmRpbmdfYnVmLG4ucGVuZGluZywwKSksbi5nemluZGV4PTAsbi5zdGF0dXM9NjkpOihVKG4sMCksVShuLDApLFUobiwwKSxVKG4sMCksVShuLDApLFUobiw5PT09bi5sZXZlbD8yOjI8PW4uc3RyYXRlZ3l8fG4ubGV2ZWw8Mj80OjApLFUobiwzKSxuLnN0YXR1cz1FKTtlbHNle3ZhciBhPXYrKG4ud19iaXRzLTg8PDQpPDw4O2F8PSgyPD1uLnN0cmF0ZWd5fHxuLmxldmVsPDI/MDpuLmxldmVsPDY/MTo2PT09bi5sZXZlbD8yOjMpPDw2LDAhPT1uLnN0cnN0YXJ0JiYoYXw9MzIpLGErPTMxLWElMzEsbi5zdGF0dXM9RSxQKG4sYSksMCE9PW4uc3Ryc3RhcnQmJihQKG4sZS5hZGxlcj4+PjE2KSxQKG4sNjU1MzUmZS5hZGxlcikpLGUuYWRsZXI9MX1pZig2OT09PW4uc3RhdHVzKWlmKG4uZ3poZWFkLmV4dHJhKXtmb3IoaT1uLnBlbmRpbmc7bi5nemluZGV4PCg2NTUzNSZuLmd6aGVhZC5leHRyYS5sZW5ndGgpJiYobi5wZW5kaW5nIT09bi5wZW5kaW5nX2J1Zl9zaXplfHwobi5nemhlYWQuaGNyYyYmbi5wZW5kaW5nPmkmJihlLmFkbGVyPXAoZS5hZGxlcixuLnBlbmRpbmdfYnVmLG4ucGVuZGluZy1pLGkpKSxGKGUpLGk9bi5wZW5kaW5nLG4ucGVuZGluZyE9PW4ucGVuZGluZ19idWZfc2l6ZSkpOylVKG4sMjU1Jm4uZ3poZWFkLmV4dHJhW24uZ3ppbmRleF0pLG4uZ3ppbmRleCsrO24uZ3poZWFkLmhjcmMmJm4ucGVuZGluZz5pJiYoZS5hZGxlcj1wKGUuYWRsZXIsbi5wZW5kaW5nX2J1ZixuLnBlbmRpbmctaSxpKSksbi5nemluZGV4PT09bi5nemhlYWQuZXh0cmEubGVuZ3RoJiYobi5nemluZGV4PTAsbi5zdGF0dXM9NzMpfWVsc2Ugbi5zdGF0dXM9NzM7aWYoNzM9PT1uLnN0YXR1cylpZihuLmd6aGVhZC5uYW1lKXtpPW4ucGVuZGluZztkb3tpZihuLnBlbmRpbmc9PT1uLnBlbmRpbmdfYnVmX3NpemUmJihuLmd6aGVhZC5oY3JjJiZuLnBlbmRpbmc+aSYmKGUuYWRsZXI9cChlLmFkbGVyLG4ucGVuZGluZ19idWYsbi5wZW5kaW5nLWksaSkpLEYoZSksaT1uLnBlbmRpbmcsbi5wZW5kaW5nPT09bi5wZW5kaW5nX2J1Zl9zaXplKSl7cz0xO2JyZWFrfXM9bi5nemluZGV4PG4uZ3poZWFkLm5hbWUubGVuZ3RoPzI1NSZuLmd6aGVhZC5uYW1lLmNoYXJDb2RlQXQobi5nemluZGV4KyspOjAsVShuLHMpfXdoaWxlKDAhPT1zKTtuLmd6aGVhZC5oY3JjJiZuLnBlbmRpbmc+aSYmKGUuYWRsZXI9cChlLmFkbGVyLG4ucGVuZGluZ19idWYsbi5wZW5kaW5nLWksaSkpLDA9PT1zJiYobi5nemluZGV4PTAsbi5zdGF0dXM9OTEpfWVsc2Ugbi5zdGF0dXM9OTE7aWYoOTE9PT1uLnN0YXR1cylpZihuLmd6aGVhZC5jb21tZW50KXtpPW4ucGVuZGluZztkb3tpZihuLnBlbmRpbmc9PT1uLnBlbmRpbmdfYnVmX3NpemUmJihuLmd6aGVhZC5oY3JjJiZuLnBlbmRpbmc+aSYmKGUuYWRsZXI9cChlLmFkbGVyLG4ucGVuZGluZ19idWYsbi5wZW5kaW5nLWksaSkpLEYoZSksaT1uLnBlbmRpbmcsbi5wZW5kaW5nPT09bi5wZW5kaW5nX2J1Zl9zaXplKSl7cz0xO2JyZWFrfXM9bi5nemluZGV4PG4uZ3poZWFkLmNvbW1lbnQubGVuZ3RoPzI1NSZuLmd6aGVhZC5jb21tZW50LmNoYXJDb2RlQXQobi5nemluZGV4KyspOjAsVShuLHMpfXdoaWxlKDAhPT1zKTtuLmd6aGVhZC5oY3JjJiZuLnBlbmRpbmc+aSYmKGUuYWRsZXI9cChlLmFkbGVyLG4ucGVuZGluZ19idWYsbi5wZW5kaW5nLWksaSkpLDA9PT1zJiYobi5zdGF0dXM9MTAzKX1lbHNlIG4uc3RhdHVzPTEwMztpZigxMDM9PT1uLnN0YXR1cyYmKG4uZ3poZWFkLmhjcmM/KG4ucGVuZGluZysyPm4ucGVuZGluZ19idWZfc2l6ZSYmRihlKSxuLnBlbmRpbmcrMjw9bi5wZW5kaW5nX2J1Zl9zaXplJiYoVShuLDI1NSZlLmFkbGVyKSxVKG4sZS5hZGxlcj4+OCYyNTUpLGUuYWRsZXI9MCxuLnN0YXR1cz1FKSk6bi5zdGF0dXM9RSksMCE9PW4ucGVuZGluZyl7aWYoRihlKSwwPT09ZS5hdmFpbF9vdXQpcmV0dXJuIG4ubGFzdF9mbHVzaD0tMSxtfWVsc2UgaWYoMD09PWUuYXZhaWxfaW4mJlQodCk8PVQocikmJnQhPT1mKXJldHVybiBSKGUsLTUpO2lmKDY2Nj09PW4uc3RhdHVzJiYwIT09ZS5hdmFpbF9pbilyZXR1cm4gUihlLC01KTtpZigwIT09ZS5hdmFpbF9pbnx8MCE9PW4ubG9va2FoZWFkfHx0IT09bCYmNjY2IT09bi5zdGF0dXMpe3ZhciBvPTI9PT1uLnN0cmF0ZWd5P2Z1bmN0aW9uKGUsdCl7Zm9yKHZhciByOzspe2lmKDA9PT1lLmxvb2thaGVhZCYmKGooZSksMD09PWUubG9va2FoZWFkKSl7aWYodD09PWwpcmV0dXJuIEE7YnJlYWt9aWYoZS5tYXRjaF9sZW5ndGg9MCxyPXUuX3RyX3RhbGx5KGUsMCxlLndpbmRvd1tlLnN0cnN0YXJ0XSksZS5sb29rYWhlYWQtLSxlLnN0cnN0YXJ0KyssciYmKE4oZSwhMSksMD09PWUuc3RybS5hdmFpbF9vdXQpKXJldHVybiBBfXJldHVybiBlLmluc2VydD0wLHQ9PT1mPyhOKGUsITApLDA9PT1lLnN0cm0uYXZhaWxfb3V0P086Qik6ZS5sYXN0X2xpdCYmKE4oZSwhMSksMD09PWUuc3RybS5hdmFpbF9vdXQpP0E6SX0obix0KTozPT09bi5zdHJhdGVneT9mdW5jdGlvbihlLHQpe2Zvcih2YXIgcixuLGkscyxhPWUud2luZG93Ozspe2lmKGUubG9va2FoZWFkPD1TKXtpZihqKGUpLGUubG9va2FoZWFkPD1TJiZ0PT09bClyZXR1cm4gQTtpZigwPT09ZS5sb29rYWhlYWQpYnJlYWt9aWYoZS5tYXRjaF9sZW5ndGg9MCxlLmxvb2thaGVhZD49eCYmMDxlLnN0cnN0YXJ0JiYobj1hW2k9ZS5zdHJzdGFydC0xXSk9PT1hWysraV0mJm49PT1hWysraV0mJm49PT1hWysraV0pe3M9ZS5zdHJzdGFydCtTO2Rve313aGlsZShuPT09YVsrK2ldJiZuPT09YVsrK2ldJiZuPT09YVsrK2ldJiZuPT09YVsrK2ldJiZuPT09YVsrK2ldJiZuPT09YVsrK2ldJiZuPT09YVsrK2ldJiZuPT09YVsrK2ldJiZpPHMpO2UubWF0Y2hfbGVuZ3RoPVMtKHMtaSksZS5tYXRjaF9sZW5ndGg+ZS5sb29rYWhlYWQmJihlLm1hdGNoX2xlbmd0aD1lLmxvb2thaGVhZCl9aWYoZS5tYXRjaF9sZW5ndGg+PXg/KHI9dS5fdHJfdGFsbHkoZSwxLGUubWF0Y2hfbGVuZ3RoLXgpLGUubG9va2FoZWFkLT1lLm1hdGNoX2xlbmd0aCxlLnN0cnN0YXJ0Kz1lLm1hdGNoX2xlbmd0aCxlLm1hdGNoX2xlbmd0aD0wKToocj11Ll90cl90YWxseShlLDAsZS53aW5kb3dbZS5zdHJzdGFydF0pLGUubG9va2FoZWFkLS0sZS5zdHJzdGFydCsrKSxyJiYoTihlLCExKSwwPT09ZS5zdHJtLmF2YWlsX291dCkpcmV0dXJuIEF9cmV0dXJuIGUuaW5zZXJ0PTAsdD09PWY/KE4oZSwhMCksMD09PWUuc3RybS5hdmFpbF9vdXQ/TzpCKTplLmxhc3RfbGl0JiYoTihlLCExKSwwPT09ZS5zdHJtLmF2YWlsX291dCk/QTpJfShuLHQpOmhbbi5sZXZlbF0uZnVuYyhuLHQpO2lmKG8hPT1PJiZvIT09Qnx8KG4uc3RhdHVzPTY2Niksbz09PUF8fG89PT1PKXJldHVybiAwPT09ZS5hdmFpbF9vdXQmJihuLmxhc3RfZmx1c2g9LTEpLG07aWYobz09PUkmJigxPT09dD91Ll90cl9hbGlnbihuKTo1IT09dCYmKHUuX3RyX3N0b3JlZF9ibG9jayhuLDAsMCwhMSksMz09PXQmJihEKG4uaGVhZCksMD09PW4ubG9va2FoZWFkJiYobi5zdHJzdGFydD0wLG4uYmxvY2tfc3RhcnQ9MCxuLmluc2VydD0wKSkpLEYoZSksMD09PWUuYXZhaWxfb3V0KSlyZXR1cm4gbi5sYXN0X2ZsdXNoPS0xLG19cmV0dXJuIHQhPT1mP206bi53cmFwPD0wPzE6KDI9PT1uLndyYXA/KFUobiwyNTUmZS5hZGxlciksVShuLGUuYWRsZXI+PjgmMjU1KSxVKG4sZS5hZGxlcj4+MTYmMjU1KSxVKG4sZS5hZGxlcj4+MjQmMjU1KSxVKG4sMjU1JmUudG90YWxfaW4pLFUobixlLnRvdGFsX2luPj44JjI1NSksVShuLGUudG90YWxfaW4+PjE2JjI1NSksVShuLGUudG90YWxfaW4+PjI0JjI1NSkpOihQKG4sZS5hZGxlcj4+PjE2KSxQKG4sNjU1MzUmZS5hZGxlcikpLEYoZSksMDxuLndyYXAmJihuLndyYXA9LW4ud3JhcCksMCE9PW4ucGVuZGluZz9tOjEpfSxyLmRlZmxhdGVFbmQ9ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIGUmJmUuc3RhdGU/KHQ9ZS5zdGF0ZS5zdGF0dXMpIT09QyYmNjkhPT10JiY3MyE9PXQmJjkxIT09dCYmMTAzIT09dCYmdCE9PUUmJjY2NiE9PXQ/UihlLF8pOihlLnN0YXRlPW51bGwsdD09PUU/UihlLC0zKTptKTpffSxyLmRlZmxhdGVTZXREaWN0aW9uYXJ5PWZ1bmN0aW9uKGUsdCl7dmFyIHIsbixpLHMsYSxvLGgsdSxsPXQubGVuZ3RoO2lmKCFlfHwhZS5zdGF0ZSlyZXR1cm4gXztpZigyPT09KHM9KHI9ZS5zdGF0ZSkud3JhcCl8fDE9PT1zJiZyLnN0YXR1cyE9PUN8fHIubG9va2FoZWFkKXJldHVybiBfO2ZvcigxPT09cyYmKGUuYWRsZXI9ZChlLmFkbGVyLHQsbCwwKSksci53cmFwPTAsbD49ci53X3NpemUmJigwPT09cyYmKEQoci5oZWFkKSxyLnN0cnN0YXJ0PTAsci5ibG9ja19zdGFydD0wLHIuaW5zZXJ0PTApLHU9bmV3IGMuQnVmOChyLndfc2l6ZSksYy5hcnJheVNldCh1LHQsbC1yLndfc2l6ZSxyLndfc2l6ZSwwKSx0PXUsbD1yLndfc2l6ZSksYT1lLmF2YWlsX2luLG89ZS5uZXh0X2luLGg9ZS5pbnB1dCxlLmF2YWlsX2luPWwsZS5uZXh0X2luPTAsZS5pbnB1dD10LGoocik7ci5sb29rYWhlYWQ+PXg7KXtmb3Iobj1yLnN0cnN0YXJ0LGk9ci5sb29rYWhlYWQtKHgtMSk7ci5pbnNfaD0oci5pbnNfaDw8ci5oYXNoX3NoaWZ0XnIud2luZG93W24reC0xXSkmci5oYXNoX21hc2ssci5wcmV2W24mci53X21hc2tdPXIuaGVhZFtyLmluc19oXSxyLmhlYWRbci5pbnNfaF09bixuKyssLS1pOyk7ci5zdHJzdGFydD1uLHIubG9va2FoZWFkPXgtMSxqKHIpfXJldHVybiByLnN0cnN0YXJ0Kz1yLmxvb2thaGVhZCxyLmJsb2NrX3N0YXJ0PXIuc3Ryc3RhcnQsci5pbnNlcnQ9ci5sb29rYWhlYWQsci5sb29rYWhlYWQ9MCxyLm1hdGNoX2xlbmd0aD1yLnByZXZfbGVuZ3RoPXgtMSxyLm1hdGNoX2F2YWlsYWJsZT0wLGUubmV4dF9pbj1vLGUuaW5wdXQ9aCxlLmF2YWlsX2luPWEsci53cmFwPXMsbX0sci5kZWZsYXRlSW5mbz1cInBha28gZGVmbGF0ZSAoZnJvbSBOb2RlY2EgcHJvamVjdClcIn0se1wiLi4vdXRpbHMvY29tbW9uXCI6NDEsXCIuL2FkbGVyMzJcIjo0MyxcIi4vY3JjMzJcIjo0NSxcIi4vbWVzc2FnZXNcIjo1MSxcIi4vdHJlZXNcIjo1Mn1dLDQ3OltmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dC5leHBvcnRzPWZ1bmN0aW9uKCl7dGhpcy50ZXh0PTAsdGhpcy50aW1lPTAsdGhpcy54ZmxhZ3M9MCx0aGlzLm9zPTAsdGhpcy5leHRyYT1udWxsLHRoaXMuZXh0cmFfbGVuPTAsdGhpcy5uYW1lPVwiXCIsdGhpcy5jb21tZW50PVwiXCIsdGhpcy5oY3JjPTAsdGhpcy5kb25lPSExfX0se31dLDQ4OltmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dC5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIHIsbixpLHMsYSxvLGgsdSxsLGYsYyxkLHAsbSxfLGcsYix2LHksdyxrLHgsUyx6LEM7cj1lLnN0YXRlLG49ZS5uZXh0X2luLHo9ZS5pbnB1dCxpPW4rKGUuYXZhaWxfaW4tNSkscz1lLm5leHRfb3V0LEM9ZS5vdXRwdXQsYT1zLSh0LWUuYXZhaWxfb3V0KSxvPXMrKGUuYXZhaWxfb3V0LTI1NyksaD1yLmRtYXgsdT1yLndzaXplLGw9ci53aGF2ZSxmPXIud25leHQsYz1yLndpbmRvdyxkPXIuaG9sZCxwPXIuYml0cyxtPXIubGVuY29kZSxfPXIuZGlzdGNvZGUsZz0oMTw8ci5sZW5iaXRzKS0xLGI9KDE8PHIuZGlzdGJpdHMpLTE7ZTpkb3twPDE1JiYoZCs9eltuKytdPDxwLHArPTgsZCs9eltuKytdPDxwLHArPTgpLHY9bVtkJmddO3Q6Zm9yKDs7KXtpZihkPj4+PXk9dj4+PjI0LHAtPXksMD09PSh5PXY+Pj4xNiYyNTUpKUNbcysrXT02NTUzNSZ2O2Vsc2V7aWYoISgxNiZ5KSl7aWYoMD09KDY0JnkpKXt2PW1bKDY1NTM1JnYpKyhkJigxPDx5KS0xKV07Y29udGludWUgdH1pZigzMiZ5KXtyLm1vZGU9MTI7YnJlYWsgZX1lLm1zZz1cImludmFsaWQgbGl0ZXJhbC9sZW5ndGggY29kZVwiLHIubW9kZT0zMDticmVhayBlfXc9NjU1MzUmdiwoeSY9MTUpJiYocDx5JiYoZCs9eltuKytdPDxwLHArPTgpLHcrPWQmKDE8PHkpLTEsZD4+Pj15LHAtPXkpLHA8MTUmJihkKz16W24rK108PHAscCs9OCxkKz16W24rK108PHAscCs9OCksdj1fW2QmYl07cjpmb3IoOzspe2lmKGQ+Pj49eT12Pj4+MjQscC09eSwhKDE2Jih5PXY+Pj4xNiYyNTUpKSl7aWYoMD09KDY0JnkpKXt2PV9bKDY1NTM1JnYpKyhkJigxPDx5KS0xKV07Y29udGludWUgcn1lLm1zZz1cImludmFsaWQgZGlzdGFuY2UgY29kZVwiLHIubW9kZT0zMDticmVhayBlfWlmKGs9NjU1MzUmdixwPCh5Jj0xNSkmJihkKz16W24rK108PHAsKHArPTgpPHkmJihkKz16W24rK108PHAscCs9OCkpLGg8KGsrPWQmKDE8PHkpLTEpKXtlLm1zZz1cImludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrXCIsci5tb2RlPTMwO2JyZWFrIGV9aWYoZD4+Pj15LHAtPXksKHk9cy1hKTxrKXtpZihsPCh5PWsteSkmJnIuc2FuZSl7ZS5tc2c9XCJpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFja1wiLHIubW9kZT0zMDticmVhayBlfWlmKFM9YywoeD0wKT09PWYpe2lmKHgrPXUteSx5PHcpe2Zvcih3LT15O0NbcysrXT1jW3grK10sLS15Oyk7eD1zLWssUz1DfX1lbHNlIGlmKGY8eSl7aWYoeCs9dStmLXksKHktPWYpPHcpe2Zvcih3LT15O0NbcysrXT1jW3grK10sLS15Oyk7aWYoeD0wLGY8dyl7Zm9yKHctPXk9ZjtDW3MrK109Y1t4KytdLC0teTspO3g9cy1rLFM9Q319fWVsc2UgaWYoeCs9Zi15LHk8dyl7Zm9yKHctPXk7Q1tzKytdPWNbeCsrXSwtLXk7KTt4PXMtayxTPUN9Zm9yKDsyPHc7KUNbcysrXT1TW3grK10sQ1tzKytdPVNbeCsrXSxDW3MrK109U1t4KytdLHctPTM7dyYmKENbcysrXT1TW3grK10sMTx3JiYoQ1tzKytdPVNbeCsrXSkpfWVsc2V7Zm9yKHg9cy1rO0NbcysrXT1DW3grK10sQ1tzKytdPUNbeCsrXSxDW3MrK109Q1t4KytdLDI8KHctPTMpOyk7dyYmKENbcysrXT1DW3grK10sMTx3JiYoQ1tzKytdPUNbeCsrXSkpfWJyZWFrfX1icmVha319d2hpbGUobjxpJiZzPG8pO24tPXc9cD4+MyxkJj0oMTw8KHAtPXc8PDMpKS0xLGUubmV4dF9pbj1uLGUubmV4dF9vdXQ9cyxlLmF2YWlsX2luPW48aT9pLW4rNTo1LShuLWkpLGUuYXZhaWxfb3V0PXM8bz9vLXMrMjU3OjI1Ny0ocy1vKSxyLmhvbGQ9ZCxyLmJpdHM9cH19LHt9XSw0OTpbZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBJPWUoXCIuLi91dGlscy9jb21tb25cIiksTz1lKFwiLi9hZGxlcjMyXCIpLEI9ZShcIi4vY3JjMzJcIiksUj1lKFwiLi9pbmZmYXN0XCIpLFQ9ZShcIi4vaW5mdHJlZXNcIiksRD0xLEY9MixOPTAsVT0tMixQPTEsbj04NTIsaT01OTI7ZnVuY3Rpb24gTChlKXtyZXR1cm4oZT4+PjI0JjI1NSkrKGU+Pj44JjY1MjgwKSsoKDY1MjgwJmUpPDw4KSsoKDI1NSZlKTw8MjQpfWZ1bmN0aW9uIHMoKXt0aGlzLm1vZGU9MCx0aGlzLmxhc3Q9ITEsdGhpcy53cmFwPTAsdGhpcy5oYXZlZGljdD0hMSx0aGlzLmZsYWdzPTAsdGhpcy5kbWF4PTAsdGhpcy5jaGVjaz0wLHRoaXMudG90YWw9MCx0aGlzLmhlYWQ9bnVsbCx0aGlzLndiaXRzPTAsdGhpcy53c2l6ZT0wLHRoaXMud2hhdmU9MCx0aGlzLnduZXh0PTAsdGhpcy53aW5kb3c9bnVsbCx0aGlzLmhvbGQ9MCx0aGlzLmJpdHM9MCx0aGlzLmxlbmd0aD0wLHRoaXMub2Zmc2V0PTAsdGhpcy5leHRyYT0wLHRoaXMubGVuY29kZT1udWxsLHRoaXMuZGlzdGNvZGU9bnVsbCx0aGlzLmxlbmJpdHM9MCx0aGlzLmRpc3RiaXRzPTAsdGhpcy5uY29kZT0wLHRoaXMubmxlbj0wLHRoaXMubmRpc3Q9MCx0aGlzLmhhdmU9MCx0aGlzLm5leHQ9bnVsbCx0aGlzLmxlbnM9bmV3IEkuQnVmMTYoMzIwKSx0aGlzLndvcms9bmV3IEkuQnVmMTYoMjg4KSx0aGlzLmxlbmR5bj1udWxsLHRoaXMuZGlzdGR5bj1udWxsLHRoaXMuc2FuZT0wLHRoaXMuYmFjaz0wLHRoaXMud2FzPTB9ZnVuY3Rpb24gYShlKXt2YXIgdDtyZXR1cm4gZSYmZS5zdGF0ZT8odD1lLnN0YXRlLGUudG90YWxfaW49ZS50b3RhbF9vdXQ9dC50b3RhbD0wLGUubXNnPVwiXCIsdC53cmFwJiYoZS5hZGxlcj0xJnQud3JhcCksdC5tb2RlPVAsdC5sYXN0PTAsdC5oYXZlZGljdD0wLHQuZG1heD0zMjc2OCx0LmhlYWQ9bnVsbCx0LmhvbGQ9MCx0LmJpdHM9MCx0LmxlbmNvZGU9dC5sZW5keW49bmV3IEkuQnVmMzIobiksdC5kaXN0Y29kZT10LmRpc3RkeW49bmV3IEkuQnVmMzIoaSksdC5zYW5lPTEsdC5iYWNrPS0xLE4pOlV9ZnVuY3Rpb24gbyhlKXt2YXIgdDtyZXR1cm4gZSYmZS5zdGF0ZT8oKHQ9ZS5zdGF0ZSkud3NpemU9MCx0LndoYXZlPTAsdC53bmV4dD0wLGEoZSkpOlV9ZnVuY3Rpb24gaChlLHQpe3ZhciByLG47cmV0dXJuIGUmJmUuc3RhdGU/KG49ZS5zdGF0ZSx0PDA/KHI9MCx0PS10KToocj0xKyh0Pj40KSx0PDQ4JiYodCY9MTUpKSx0JiYodDw4fHwxNTx0KT9VOihudWxsIT09bi53aW5kb3cmJm4ud2JpdHMhPT10JiYobi53aW5kb3c9bnVsbCksbi53cmFwPXIsbi53Yml0cz10LG8oZSkpKTpVfWZ1bmN0aW9uIHUoZSx0KXt2YXIgcixuO3JldHVybiBlPyhuPW5ldyBzLChlLnN0YXRlPW4pLndpbmRvdz1udWxsLChyPWgoZSx0KSkhPT1OJiYoZS5zdGF0ZT1udWxsKSxyKTpVfXZhciBsLGYsYz0hMDtmdW5jdGlvbiBqKGUpe2lmKGMpe3ZhciB0O2ZvcihsPW5ldyBJLkJ1ZjMyKDUxMiksZj1uZXcgSS5CdWYzMigzMiksdD0wO3Q8MTQ0OyllLmxlbnNbdCsrXT04O2Zvcig7dDwyNTY7KWUubGVuc1t0KytdPTk7Zm9yKDt0PDI4MDspZS5sZW5zW3QrK109Nztmb3IoO3Q8Mjg4OyllLmxlbnNbdCsrXT04O2ZvcihUKEQsZS5sZW5zLDAsMjg4LGwsMCxlLndvcmsse2JpdHM6OX0pLHQ9MDt0PDMyOyllLmxlbnNbdCsrXT01O1QoRixlLmxlbnMsMCwzMixmLDAsZS53b3JrLHtiaXRzOjV9KSxjPSExfWUubGVuY29kZT1sLGUubGVuYml0cz05LGUuZGlzdGNvZGU9ZixlLmRpc3RiaXRzPTV9ZnVuY3Rpb24gWihlLHQscixuKXt2YXIgaSxzPWUuc3RhdGU7cmV0dXJuIG51bGw9PT1zLndpbmRvdyYmKHMud3NpemU9MTw8cy53Yml0cyxzLnduZXh0PTAscy53aGF2ZT0wLHMud2luZG93PW5ldyBJLkJ1Zjgocy53c2l6ZSkpLG4+PXMud3NpemU/KEkuYXJyYXlTZXQocy53aW5kb3csdCxyLXMud3NpemUscy53c2l6ZSwwKSxzLnduZXh0PTAscy53aGF2ZT1zLndzaXplKToobjwoaT1zLndzaXplLXMud25leHQpJiYoaT1uKSxJLmFycmF5U2V0KHMud2luZG93LHQsci1uLGkscy53bmV4dCksKG4tPWkpPyhJLmFycmF5U2V0KHMud2luZG93LHQsci1uLG4sMCkscy53bmV4dD1uLHMud2hhdmU9cy53c2l6ZSk6KHMud25leHQrPWkscy53bmV4dD09PXMud3NpemUmJihzLnduZXh0PTApLHMud2hhdmU8cy53c2l6ZSYmKHMud2hhdmUrPWkpKSksMH1yLmluZmxhdGVSZXNldD1vLHIuaW5mbGF0ZVJlc2V0Mj1oLHIuaW5mbGF0ZVJlc2V0S2VlcD1hLHIuaW5mbGF0ZUluaXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHUoZSwxNSl9LHIuaW5mbGF0ZUluaXQyPXUsci5pbmZsYXRlPWZ1bmN0aW9uKGUsdCl7dmFyIHIsbixpLHMsYSxvLGgsdSxsLGYsYyxkLHAsbSxfLGcsYix2LHksdyxrLHgsUyx6LEM9MCxFPW5ldyBJLkJ1ZjgoNCksQT1bMTYsMTcsMTgsMCw4LDcsOSw2LDEwLDUsMTEsNCwxMiwzLDEzLDIsMTQsMSwxNV07aWYoIWV8fCFlLnN0YXRlfHwhZS5vdXRwdXR8fCFlLmlucHV0JiYwIT09ZS5hdmFpbF9pbilyZXR1cm4gVTsxMj09PShyPWUuc3RhdGUpLm1vZGUmJihyLm1vZGU9MTMpLGE9ZS5uZXh0X291dCxpPWUub3V0cHV0LGg9ZS5hdmFpbF9vdXQscz1lLm5leHRfaW4sbj1lLmlucHV0LG89ZS5hdmFpbF9pbix1PXIuaG9sZCxsPXIuYml0cyxmPW8sYz1oLHg9TjtlOmZvcig7Oylzd2l0Y2goci5tb2RlKXtjYXNlIFA6aWYoMD09PXIud3JhcCl7ci5tb2RlPTEzO2JyZWFrfWZvcig7bDwxNjspe2lmKDA9PT1vKWJyZWFrIGU7by0tLHUrPW5bcysrXTw8bCxsKz04fWlmKDImci53cmFwJiYzNTYxNT09PXUpe0Vbci5jaGVjaz0wXT0yNTUmdSxFWzFdPXU+Pj44JjI1NSxyLmNoZWNrPUIoci5jaGVjayxFLDIsMCksbD11PTAsci5tb2RlPTI7YnJlYWt9aWYoci5mbGFncz0wLHIuaGVhZCYmKHIuaGVhZC5kb25lPSExKSwhKDEmci53cmFwKXx8KCgoMjU1JnUpPDw4KSsodT4+OCkpJTMxKXtlLm1zZz1cImluY29ycmVjdCBoZWFkZXIgY2hlY2tcIixyLm1vZGU9MzA7YnJlYWt9aWYoOCE9KDE1JnUpKXtlLm1zZz1cInVua25vd24gY29tcHJlc3Npb24gbWV0aG9kXCIsci5tb2RlPTMwO2JyZWFrfWlmKGwtPTQsaz04KygxNSYodT4+Pj00KSksMD09PXIud2JpdHMpci53Yml0cz1rO2Vsc2UgaWYoaz5yLndiaXRzKXtlLm1zZz1cImludmFsaWQgd2luZG93IHNpemVcIixyLm1vZGU9MzA7YnJlYWt9ci5kbWF4PTE8PGssZS5hZGxlcj1yLmNoZWNrPTEsci5tb2RlPTUxMiZ1PzEwOjEyLGw9dT0wO2JyZWFrO2Nhc2UgMjpmb3IoO2w8MTY7KXtpZigwPT09bylicmVhayBlO28tLSx1Kz1uW3MrK108PGwsbCs9OH1pZihyLmZsYWdzPXUsOCE9KDI1NSZyLmZsYWdzKSl7ZS5tc2c9XCJ1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZFwiLHIubW9kZT0zMDticmVha31pZig1NzM0NCZyLmZsYWdzKXtlLm1zZz1cInVua25vd24gaGVhZGVyIGZsYWdzIHNldFwiLHIubW9kZT0zMDticmVha31yLmhlYWQmJihyLmhlYWQudGV4dD11Pj44JjEpLDUxMiZyLmZsYWdzJiYoRVswXT0yNTUmdSxFWzFdPXU+Pj44JjI1NSxyLmNoZWNrPUIoci5jaGVjayxFLDIsMCkpLGw9dT0wLHIubW9kZT0zO2Nhc2UgMzpmb3IoO2w8MzI7KXtpZigwPT09bylicmVhayBlO28tLSx1Kz1uW3MrK108PGwsbCs9OH1yLmhlYWQmJihyLmhlYWQudGltZT11KSw1MTImci5mbGFncyYmKEVbMF09MjU1JnUsRVsxXT11Pj4+OCYyNTUsRVsyXT11Pj4+MTYmMjU1LEVbM109dT4+PjI0JjI1NSxyLmNoZWNrPUIoci5jaGVjayxFLDQsMCkpLGw9dT0wLHIubW9kZT00O2Nhc2UgNDpmb3IoO2w8MTY7KXtpZigwPT09bylicmVhayBlO28tLSx1Kz1uW3MrK108PGwsbCs9OH1yLmhlYWQmJihyLmhlYWQueGZsYWdzPTI1NSZ1LHIuaGVhZC5vcz11Pj44KSw1MTImci5mbGFncyYmKEVbMF09MjU1JnUsRVsxXT11Pj4+OCYyNTUsci5jaGVjaz1CKHIuY2hlY2ssRSwyLDApKSxsPXU9MCxyLm1vZGU9NTtjYXNlIDU6aWYoMTAyNCZyLmZsYWdzKXtmb3IoO2w8MTY7KXtpZigwPT09bylicmVhayBlO28tLSx1Kz1uW3MrK108PGwsbCs9OH1yLmxlbmd0aD11LHIuaGVhZCYmKHIuaGVhZC5leHRyYV9sZW49dSksNTEyJnIuZmxhZ3MmJihFWzBdPTI1NSZ1LEVbMV09dT4+PjgmMjU1LHIuY2hlY2s9QihyLmNoZWNrLEUsMiwwKSksbD11PTB9ZWxzZSByLmhlYWQmJihyLmhlYWQuZXh0cmE9bnVsbCk7ci5tb2RlPTY7Y2FzZSA2OmlmKDEwMjQmci5mbGFncyYmKG88KGQ9ci5sZW5ndGgpJiYoZD1vKSxkJiYoci5oZWFkJiYoaz1yLmhlYWQuZXh0cmFfbGVuLXIubGVuZ3RoLHIuaGVhZC5leHRyYXx8KHIuaGVhZC5leHRyYT1uZXcgQXJyYXkoci5oZWFkLmV4dHJhX2xlbikpLEkuYXJyYXlTZXQoci5oZWFkLmV4dHJhLG4scyxkLGspKSw1MTImci5mbGFncyYmKHIuY2hlY2s9QihyLmNoZWNrLG4sZCxzKSksby09ZCxzKz1kLHIubGVuZ3RoLT1kKSxyLmxlbmd0aCkpYnJlYWsgZTtyLmxlbmd0aD0wLHIubW9kZT03O2Nhc2UgNzppZigyMDQ4JnIuZmxhZ3Mpe2lmKDA9PT1vKWJyZWFrIGU7Zm9yKGQ9MDtrPW5bcytkKytdLHIuaGVhZCYmayYmci5sZW5ndGg8NjU1MzYmJihyLmhlYWQubmFtZSs9U3RyaW5nLmZyb21DaGFyQ29kZShrKSksayYmZDxvOyk7aWYoNTEyJnIuZmxhZ3MmJihyLmNoZWNrPUIoci5jaGVjayxuLGQscykpLG8tPWQscys9ZCxrKWJyZWFrIGV9ZWxzZSByLmhlYWQmJihyLmhlYWQubmFtZT1udWxsKTtyLmxlbmd0aD0wLHIubW9kZT04O2Nhc2UgODppZig0MDk2JnIuZmxhZ3Mpe2lmKDA9PT1vKWJyZWFrIGU7Zm9yKGQ9MDtrPW5bcytkKytdLHIuaGVhZCYmayYmci5sZW5ndGg8NjU1MzYmJihyLmhlYWQuY29tbWVudCs9U3RyaW5nLmZyb21DaGFyQ29kZShrKSksayYmZDxvOyk7aWYoNTEyJnIuZmxhZ3MmJihyLmNoZWNrPUIoci5jaGVjayxuLGQscykpLG8tPWQscys9ZCxrKWJyZWFrIGV9ZWxzZSByLmhlYWQmJihyLmhlYWQuY29tbWVudD1udWxsKTtyLm1vZGU9OTtjYXNlIDk6aWYoNTEyJnIuZmxhZ3Mpe2Zvcig7bDwxNjspe2lmKDA9PT1vKWJyZWFrIGU7by0tLHUrPW5bcysrXTw8bCxsKz04fWlmKHUhPT0oNjU1MzUmci5jaGVjaykpe2UubXNnPVwiaGVhZGVyIGNyYyBtaXNtYXRjaFwiLHIubW9kZT0zMDticmVha31sPXU9MH1yLmhlYWQmJihyLmhlYWQuaGNyYz1yLmZsYWdzPj45JjEsci5oZWFkLmRvbmU9ITApLGUuYWRsZXI9ci5jaGVjaz0wLHIubW9kZT0xMjticmVhaztjYXNlIDEwOmZvcig7bDwzMjspe2lmKDA9PT1vKWJyZWFrIGU7by0tLHUrPW5bcysrXTw8bCxsKz04fWUuYWRsZXI9ci5jaGVjaz1MKHUpLGw9dT0wLHIubW9kZT0xMTtjYXNlIDExOmlmKDA9PT1yLmhhdmVkaWN0KXJldHVybiBlLm5leHRfb3V0PWEsZS5hdmFpbF9vdXQ9aCxlLm5leHRfaW49cyxlLmF2YWlsX2luPW8sci5ob2xkPXUsci5iaXRzPWwsMjtlLmFkbGVyPXIuY2hlY2s9MSxyLm1vZGU9MTI7Y2FzZSAxMjppZig1PT09dHx8Nj09PXQpYnJlYWsgZTtjYXNlIDEzOmlmKHIubGFzdCl7dT4+Pj03JmwsbC09NyZsLHIubW9kZT0yNzticmVha31mb3IoO2w8Mzspe2lmKDA9PT1vKWJyZWFrIGU7by0tLHUrPW5bcysrXTw8bCxsKz04fXN3aXRjaChyLmxhc3Q9MSZ1LGwtPTEsMyYodT4+Pj0xKSl7Y2FzZSAwOnIubW9kZT0xNDticmVhaztjYXNlIDE6aWYoaihyKSxyLm1vZGU9MjAsNiE9PXQpYnJlYWs7dT4+Pj0yLGwtPTI7YnJlYWsgZTtjYXNlIDI6ci5tb2RlPTE3O2JyZWFrO2Nhc2UgMzplLm1zZz1cImludmFsaWQgYmxvY2sgdHlwZVwiLHIubW9kZT0zMH11Pj4+PTIsbC09MjticmVhaztjYXNlIDE0OmZvcih1Pj4+PTcmbCxsLT03Jmw7bDwzMjspe2lmKDA9PT1vKWJyZWFrIGU7by0tLHUrPW5bcysrXTw8bCxsKz04fWlmKCg2NTUzNSZ1KSE9KHU+Pj4xNl42NTUzNSkpe2UubXNnPVwiaW52YWxpZCBzdG9yZWQgYmxvY2sgbGVuZ3Roc1wiLHIubW9kZT0zMDticmVha31pZihyLmxlbmd0aD02NTUzNSZ1LGw9dT0wLHIubW9kZT0xNSw2PT09dClicmVhayBlO2Nhc2UgMTU6ci5tb2RlPTE2O2Nhc2UgMTY6aWYoZD1yLmxlbmd0aCl7aWYobzxkJiYoZD1vKSxoPGQmJihkPWgpLDA9PT1kKWJyZWFrIGU7SS5hcnJheVNldChpLG4scyxkLGEpLG8tPWQscys9ZCxoLT1kLGErPWQsci5sZW5ndGgtPWQ7YnJlYWt9ci5tb2RlPTEyO2JyZWFrO2Nhc2UgMTc6Zm9yKDtsPDE0Oyl7aWYoMD09PW8pYnJlYWsgZTtvLS0sdSs9bltzKytdPDxsLGwrPTh9aWYoci5ubGVuPTI1NysoMzEmdSksdT4+Pj01LGwtPTUsci5uZGlzdD0xKygzMSZ1KSx1Pj4+PTUsbC09NSxyLm5jb2RlPTQrKDE1JnUpLHU+Pj49NCxsLT00LDI4NjxyLm5sZW58fDMwPHIubmRpc3Qpe2UubXNnPVwidG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHNcIixyLm1vZGU9MzA7YnJlYWt9ci5oYXZlPTAsci5tb2RlPTE4O2Nhc2UgMTg6Zm9yKDtyLmhhdmU8ci5uY29kZTspe2Zvcig7bDwzOyl7aWYoMD09PW8pYnJlYWsgZTtvLS0sdSs9bltzKytdPDxsLGwrPTh9ci5sZW5zW0Fbci5oYXZlKytdXT03JnUsdT4+Pj0zLGwtPTN9Zm9yKDtyLmhhdmU8MTk7KXIubGVuc1tBW3IuaGF2ZSsrXV09MDtpZihyLmxlbmNvZGU9ci5sZW5keW4sci5sZW5iaXRzPTcsUz17Yml0czpyLmxlbmJpdHN9LHg9VCgwLHIubGVucywwLDE5LHIubGVuY29kZSwwLHIud29yayxTKSxyLmxlbmJpdHM9Uy5iaXRzLHgpe2UubXNnPVwiaW52YWxpZCBjb2RlIGxlbmd0aHMgc2V0XCIsci5tb2RlPTMwO2JyZWFrfXIuaGF2ZT0wLHIubW9kZT0xOTtjYXNlIDE5OmZvcig7ci5oYXZlPHIubmxlbityLm5kaXN0Oyl7Zm9yKDtnPShDPXIubGVuY29kZVt1JigxPDxyLmxlbmJpdHMpLTFdKT4+PjE2JjI1NSxiPTY1NTM1JkMsISgoXz1DPj4+MjQpPD1sKTspe2lmKDA9PT1vKWJyZWFrIGU7by0tLHUrPW5bcysrXTw8bCxsKz04fWlmKGI8MTYpdT4+Pj1fLGwtPV8sci5sZW5zW3IuaGF2ZSsrXT1iO2Vsc2V7aWYoMTY9PT1iKXtmb3Ioej1fKzI7bDx6Oyl7aWYoMD09PW8pYnJlYWsgZTtvLS0sdSs9bltzKytdPDxsLGwrPTh9aWYodT4+Pj1fLGwtPV8sMD09PXIuaGF2ZSl7ZS5tc2c9XCJpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0XCIsci5tb2RlPTMwO2JyZWFrfWs9ci5sZW5zW3IuaGF2ZS0xXSxkPTMrKDMmdSksdT4+Pj0yLGwtPTJ9ZWxzZSBpZigxNz09PWIpe2Zvcih6PV8rMztsPHo7KXtpZigwPT09bylicmVhayBlO28tLSx1Kz1uW3MrK108PGwsbCs9OH1sLT1fLGs9MCxkPTMrKDcmKHU+Pj49XykpLHU+Pj49MyxsLT0zfWVsc2V7Zm9yKHo9Xys3O2w8ejspe2lmKDA9PT1vKWJyZWFrIGU7by0tLHUrPW5bcysrXTw8bCxsKz04fWwtPV8saz0wLGQ9MTErKDEyNyYodT4+Pj1fKSksdT4+Pj03LGwtPTd9aWYoci5oYXZlK2Q+ci5ubGVuK3IubmRpc3Qpe2UubXNnPVwiaW52YWxpZCBiaXQgbGVuZ3RoIHJlcGVhdFwiLHIubW9kZT0zMDticmVha31mb3IoO2QtLTspci5sZW5zW3IuaGF2ZSsrXT1rfX1pZigzMD09PXIubW9kZSlicmVhaztpZigwPT09ci5sZW5zWzI1Nl0pe2UubXNnPVwiaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrXCIsci5tb2RlPTMwO2JyZWFrfWlmKHIubGVuYml0cz05LFM9e2JpdHM6ci5sZW5iaXRzfSx4PVQoRCxyLmxlbnMsMCxyLm5sZW4sci5sZW5jb2RlLDAsci53b3JrLFMpLHIubGVuYml0cz1TLmJpdHMseCl7ZS5tc2c9XCJpbnZhbGlkIGxpdGVyYWwvbGVuZ3RocyBzZXRcIixyLm1vZGU9MzA7YnJlYWt9aWYoci5kaXN0Yml0cz02LHIuZGlzdGNvZGU9ci5kaXN0ZHluLFM9e2JpdHM6ci5kaXN0Yml0c30seD1UKEYsci5sZW5zLHIubmxlbixyLm5kaXN0LHIuZGlzdGNvZGUsMCxyLndvcmssUyksci5kaXN0Yml0cz1TLmJpdHMseCl7ZS5tc2c9XCJpbnZhbGlkIGRpc3RhbmNlcyBzZXRcIixyLm1vZGU9MzA7YnJlYWt9aWYoci5tb2RlPTIwLDY9PT10KWJyZWFrIGU7Y2FzZSAyMDpyLm1vZGU9MjE7Y2FzZSAyMTppZig2PD1vJiYyNTg8PWgpe2UubmV4dF9vdXQ9YSxlLmF2YWlsX291dD1oLGUubmV4dF9pbj1zLGUuYXZhaWxfaW49byxyLmhvbGQ9dSxyLmJpdHM9bCxSKGUsYyksYT1lLm5leHRfb3V0LGk9ZS5vdXRwdXQsaD1lLmF2YWlsX291dCxzPWUubmV4dF9pbixuPWUuaW5wdXQsbz1lLmF2YWlsX2luLHU9ci5ob2xkLGw9ci5iaXRzLDEyPT09ci5tb2RlJiYoci5iYWNrPS0xKTticmVha31mb3Ioci5iYWNrPTA7Zz0oQz1yLmxlbmNvZGVbdSYoMTw8ci5sZW5iaXRzKS0xXSk+Pj4xNiYyNTUsYj02NTUzNSZDLCEoKF89Qz4+PjI0KTw9bCk7KXtpZigwPT09bylicmVhayBlO28tLSx1Kz1uW3MrK108PGwsbCs9OH1pZihnJiYwPT0oMjQwJmcpKXtmb3Iodj1fLHk9Zyx3PWI7Zz0oQz1yLmxlbmNvZGVbdysoKHUmKDE8PHYreSktMSk+PnYpXSk+Pj4xNiYyNTUsYj02NTUzNSZDLCEodisoXz1DPj4+MjQpPD1sKTspe2lmKDA9PT1vKWJyZWFrIGU7by0tLHUrPW5bcysrXTw8bCxsKz04fXU+Pj49dixsLT12LHIuYmFjays9dn1pZih1Pj4+PV8sbC09XyxyLmJhY2srPV8sci5sZW5ndGg9YiwwPT09Zyl7ci5tb2RlPTI2O2JyZWFrfWlmKDMyJmcpe3IuYmFjaz0tMSxyLm1vZGU9MTI7YnJlYWt9aWYoNjQmZyl7ZS5tc2c9XCJpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGVcIixyLm1vZGU9MzA7YnJlYWt9ci5leHRyYT0xNSZnLHIubW9kZT0yMjtjYXNlIDIyOmlmKHIuZXh0cmEpe2Zvcih6PXIuZXh0cmE7bDx6Oyl7aWYoMD09PW8pYnJlYWsgZTtvLS0sdSs9bltzKytdPDxsLGwrPTh9ci5sZW5ndGgrPXUmKDE8PHIuZXh0cmEpLTEsdT4+Pj1yLmV4dHJhLGwtPXIuZXh0cmEsci5iYWNrKz1yLmV4dHJhfXIud2FzPXIubGVuZ3RoLHIubW9kZT0yMztjYXNlIDIzOmZvcig7Zz0oQz1yLmRpc3Rjb2RlW3UmKDE8PHIuZGlzdGJpdHMpLTFdKT4+PjE2JjI1NSxiPTY1NTM1JkMsISgoXz1DPj4+MjQpPD1sKTspe2lmKDA9PT1vKWJyZWFrIGU7by0tLHUrPW5bcysrXTw8bCxsKz04fWlmKDA9PSgyNDAmZykpe2Zvcih2PV8seT1nLHc9YjtnPShDPXIuZGlzdGNvZGVbdysoKHUmKDE8PHYreSktMSk+PnYpXSk+Pj4xNiYyNTUsYj02NTUzNSZDLCEodisoXz1DPj4+MjQpPD1sKTspe2lmKDA9PT1vKWJyZWFrIGU7by0tLHUrPW5bcysrXTw8bCxsKz04fXU+Pj49dixsLT12LHIuYmFjays9dn1pZih1Pj4+PV8sbC09XyxyLmJhY2srPV8sNjQmZyl7ZS5tc2c9XCJpbnZhbGlkIGRpc3RhbmNlIGNvZGVcIixyLm1vZGU9MzA7YnJlYWt9ci5vZmZzZXQ9YixyLmV4dHJhPTE1Jmcsci5tb2RlPTI0O2Nhc2UgMjQ6aWYoci5leHRyYSl7Zm9yKHo9ci5leHRyYTtsPHo7KXtpZigwPT09bylicmVhayBlO28tLSx1Kz1uW3MrK108PGwsbCs9OH1yLm9mZnNldCs9dSYoMTw8ci5leHRyYSktMSx1Pj4+PXIuZXh0cmEsbC09ci5leHRyYSxyLmJhY2srPXIuZXh0cmF9aWYoci5vZmZzZXQ+ci5kbWF4KXtlLm1zZz1cImludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrXCIsci5tb2RlPTMwO2JyZWFrfXIubW9kZT0yNTtjYXNlIDI1OmlmKDA9PT1oKWJyZWFrIGU7aWYoZD1jLWgsci5vZmZzZXQ+ZCl7aWYoKGQ9ci5vZmZzZXQtZCk+ci53aGF2ZSYmci5zYW5lKXtlLm1zZz1cImludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrXCIsci5tb2RlPTMwO2JyZWFrfXA9ZD5yLnduZXh0PyhkLT1yLnduZXh0LHIud3NpemUtZCk6ci53bmV4dC1kLGQ+ci5sZW5ndGgmJihkPXIubGVuZ3RoKSxtPXIud2luZG93fWVsc2UgbT1pLHA9YS1yLm9mZnNldCxkPXIubGVuZ3RoO2ZvcihoPGQmJihkPWgpLGgtPWQsci5sZW5ndGgtPWQ7aVthKytdPW1bcCsrXSwtLWQ7KTswPT09ci5sZW5ndGgmJihyLm1vZGU9MjEpO2JyZWFrO2Nhc2UgMjY6aWYoMD09PWgpYnJlYWsgZTtpW2ErK109ci5sZW5ndGgsaC0tLHIubW9kZT0yMTticmVhaztjYXNlIDI3OmlmKHIud3JhcCl7Zm9yKDtsPDMyOyl7aWYoMD09PW8pYnJlYWsgZTtvLS0sdXw9bltzKytdPDxsLGwrPTh9aWYoYy09aCxlLnRvdGFsX291dCs9YyxyLnRvdGFsKz1jLGMmJihlLmFkbGVyPXIuY2hlY2s9ci5mbGFncz9CKHIuY2hlY2ssaSxjLGEtYyk6TyhyLmNoZWNrLGksYyxhLWMpKSxjPWgsKHIuZmxhZ3M/dTpMKHUpKSE9PXIuY2hlY2spe2UubXNnPVwiaW5jb3JyZWN0IGRhdGEgY2hlY2tcIixyLm1vZGU9MzA7YnJlYWt9bD11PTB9ci5tb2RlPTI4O2Nhc2UgMjg6aWYoci53cmFwJiZyLmZsYWdzKXtmb3IoO2w8MzI7KXtpZigwPT09bylicmVhayBlO28tLSx1Kz1uW3MrK108PGwsbCs9OH1pZih1IT09KDQyOTQ5NjcyOTUmci50b3RhbCkpe2UubXNnPVwiaW5jb3JyZWN0IGxlbmd0aCBjaGVja1wiLHIubW9kZT0zMDticmVha31sPXU9MH1yLm1vZGU9Mjk7Y2FzZSAyOTp4PTE7YnJlYWsgZTtjYXNlIDMwOng9LTM7YnJlYWsgZTtjYXNlIDMxOnJldHVybi00O2Nhc2UgMzI6ZGVmYXVsdDpyZXR1cm4gVX1yZXR1cm4gZS5uZXh0X291dD1hLGUuYXZhaWxfb3V0PWgsZS5uZXh0X2luPXMsZS5hdmFpbF9pbj1vLHIuaG9sZD11LHIuYml0cz1sLChyLndzaXplfHxjIT09ZS5hdmFpbF9vdXQmJnIubW9kZTwzMCYmKHIubW9kZTwyN3x8NCE9PXQpKSYmWihlLGUub3V0cHV0LGUubmV4dF9vdXQsYy1lLmF2YWlsX291dCk/KHIubW9kZT0zMSwtNCk6KGYtPWUuYXZhaWxfaW4sYy09ZS5hdmFpbF9vdXQsZS50b3RhbF9pbis9ZixlLnRvdGFsX291dCs9YyxyLnRvdGFsKz1jLHIud3JhcCYmYyYmKGUuYWRsZXI9ci5jaGVjaz1yLmZsYWdzP0Ioci5jaGVjayxpLGMsZS5uZXh0X291dC1jKTpPKHIuY2hlY2ssaSxjLGUubmV4dF9vdXQtYykpLGUuZGF0YV90eXBlPXIuYml0cysoci5sYXN0PzY0OjApKygxMj09PXIubW9kZT8xMjg6MCkrKDIwPT09ci5tb2RlfHwxNT09PXIubW9kZT8yNTY6MCksKDA9PWYmJjA9PT1jfHw0PT09dCkmJng9PT1OJiYoeD0tNSkseCl9LHIuaW5mbGF0ZUVuZD1mdW5jdGlvbihlKXtpZighZXx8IWUuc3RhdGUpcmV0dXJuIFU7dmFyIHQ9ZS5zdGF0ZTtyZXR1cm4gdC53aW5kb3cmJih0LndpbmRvdz1udWxsKSxlLnN0YXRlPW51bGwsTn0sci5pbmZsYXRlR2V0SGVhZGVyPWZ1bmN0aW9uKGUsdCl7dmFyIHI7cmV0dXJuIGUmJmUuc3RhdGU/MD09KDImKHI9ZS5zdGF0ZSkud3JhcCk/VTooKHIuaGVhZD10KS5kb25lPSExLE4pOlV9LHIuaW5mbGF0ZVNldERpY3Rpb25hcnk9ZnVuY3Rpb24oZSx0KXt2YXIgcixuPXQubGVuZ3RoO3JldHVybiBlJiZlLnN0YXRlPzAhPT0ocj1lLnN0YXRlKS53cmFwJiYxMSE9PXIubW9kZT9VOjExPT09ci5tb2RlJiZPKDEsdCxuLDApIT09ci5jaGVjaz8tMzpaKGUsdCxuLG4pPyhyLm1vZGU9MzEsLTQpOihyLmhhdmVkaWN0PTEsTik6VX0sci5pbmZsYXRlSW5mbz1cInBha28gaW5mbGF0ZSAoZnJvbSBOb2RlY2EgcHJvamVjdClcIn0se1wiLi4vdXRpbHMvY29tbW9uXCI6NDEsXCIuL2FkbGVyMzJcIjo0MyxcIi4vY3JjMzJcIjo0NSxcIi4vaW5mZmFzdFwiOjQ4LFwiLi9pbmZ0cmVlc1wiOjUwfV0sNTA6W2Z1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgRD1lKFwiLi4vdXRpbHMvY29tbW9uXCIpLEY9WzMsNCw1LDYsNyw4LDksMTAsMTEsMTMsMTUsMTcsMTksMjMsMjcsMzEsMzUsNDMsNTEsNTksNjcsODMsOTksMTE1LDEzMSwxNjMsMTk1LDIyNywyNTgsMCwwXSxOPVsxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNywxNywxNywxNywxOCwxOCwxOCwxOCwxOSwxOSwxOSwxOSwyMCwyMCwyMCwyMCwyMSwyMSwyMSwyMSwxNiw3Miw3OF0sVT1bMSwyLDMsNCw1LDcsOSwxMywxNywyNSwzMyw0OSw2NSw5NywxMjksMTkzLDI1NywzODUsNTEzLDc2OSwxMDI1LDE1MzcsMjA0OSwzMDczLDQwOTcsNjE0NSw4MTkzLDEyMjg5LDE2Mzg1LDI0NTc3LDAsMF0sUD1bMTYsMTYsMTYsMTYsMTcsMTcsMTgsMTgsMTksMTksMjAsMjAsMjEsMjEsMjIsMjIsMjMsMjMsMjQsMjQsMjUsMjUsMjYsMjYsMjcsMjcsMjgsMjgsMjksMjksNjQsNjRdO3QuZXhwb3J0cz1mdW5jdGlvbihlLHQscixuLGkscyxhLG8pe3ZhciBoLHUsbCxmLGMsZCxwLG0sXyxnPW8uYml0cyxiPTAsdj0wLHk9MCx3PTAsaz0wLHg9MCxTPTAsej0wLEM9MCxFPTAsQT1udWxsLEk9MCxPPW5ldyBELkJ1ZjE2KDE2KSxCPW5ldyBELkJ1ZjE2KDE2KSxSPW51bGwsVD0wO2ZvcihiPTA7Yjw9MTU7YisrKU9bYl09MDtmb3Iodj0wO3Y8bjt2KyspT1t0W3Irdl1dKys7Zm9yKGs9Zyx3PTE1OzE8PXcmJjA9PT1PW3ddO3ctLSk7aWYodzxrJiYoaz13KSwwPT09dylyZXR1cm4gaVtzKytdPTIwOTcxNTIwLGlbcysrXT0yMDk3MTUyMCxvLmJpdHM9MSwwO2Zvcih5PTE7eTx3JiYwPT09T1t5XTt5KyspO2ZvcihrPHkmJihrPXkpLGI9ej0xO2I8PTE1O2IrKylpZih6PDw9MSwoei09T1tiXSk8MClyZXR1cm4tMTtpZigwPHomJigwPT09ZXx8MSE9PXcpKXJldHVybi0xO2ZvcihCWzFdPTAsYj0xO2I8MTU7YisrKUJbYisxXT1CW2JdK09bYl07Zm9yKHY9MDt2PG47disrKTAhPT10W3Irdl0mJihhW0JbdFtyK3ZdXSsrXT12KTtpZihkPTA9PT1lPyhBPVI9YSwxOSk6MT09PWU/KEE9RixJLT0yNTcsUj1OLFQtPTI1NywyNTYpOihBPVUsUj1QLC0xKSxiPXksYz1zLFM9dj1FPTAsbD0tMSxmPShDPTE8PCh4PWspKS0xLDE9PT1lJiY4NTI8Q3x8Mj09PWUmJjU5MjxDKXJldHVybiAxO2Zvcig7Oyl7Zm9yKHA9Yi1TLF89YVt2XTxkPyhtPTAsYVt2XSk6YVt2XT5kPyhtPVJbVCthW3ZdXSxBW0krYVt2XV0pOihtPTk2LDApLGg9MTw8Yi1TLHk9dT0xPDx4O2lbYysoRT4+UykrKHUtPWgpXT1wPDwyNHxtPDwxNnxffDAsMCE9PXU7KTtmb3IoaD0xPDxiLTE7RSZoOyloPj49MTtpZigwIT09aD8oRSY9aC0xLEUrPWgpOkU9MCx2KyssMD09LS1PW2JdKXtpZihiPT09dylicmVhaztiPXRbcithW3ZdXX1pZihrPGImJihFJmYpIT09bCl7Zm9yKDA9PT1TJiYoUz1rKSxjKz15LHo9MTw8KHg9Yi1TKTt4K1M8dyYmISgoei09T1t4K1NdKTw9MCk7KXgrKyx6PDw9MTtpZihDKz0xPDx4LDE9PT1lJiY4NTI8Q3x8Mj09PWUmJjU5MjxDKXJldHVybiAxO2lbbD1FJmZdPWs8PDI0fHg8PDE2fGMtc3wwfX1yZXR1cm4gMCE9PUUmJihpW2MrRV09Yi1TPDwyNHw2NDw8MTZ8MCksby5iaXRzPWssMH19LHtcIi4uL3V0aWxzL2NvbW1vblwiOjQxfV0sNTE6W2Z1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt0LmV4cG9ydHM9ezI6XCJuZWVkIGRpY3Rpb25hcnlcIiwxOlwic3RyZWFtIGVuZFwiLDA6XCJcIixcIi0xXCI6XCJmaWxlIGVycm9yXCIsXCItMlwiOlwic3RyZWFtIGVycm9yXCIsXCItM1wiOlwiZGF0YSBlcnJvclwiLFwiLTRcIjpcImluc3VmZmljaWVudCBtZW1vcnlcIixcIi01XCI6XCJidWZmZXIgZXJyb3JcIixcIi02XCI6XCJpbmNvbXBhdGlibGUgdmVyc2lvblwifX0se31dLDUyOltmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGk9ZShcIi4uL3V0aWxzL2NvbW1vblwiKSxvPTAsaD0xO2Z1bmN0aW9uIG4oZSl7Zm9yKHZhciB0PWUubGVuZ3RoOzA8PS0tdDspZVt0XT0wfXZhciBzPTAsYT0yOSx1PTI1NixsPXUrMSthLGY9MzAsYz0xOSxfPTIqbCsxLGc9MTUsZD0xNixwPTcsbT0yNTYsYj0xNix2PTE3LHk9MTgsdz1bMCwwLDAsMCwwLDAsMCwwLDEsMSwxLDEsMiwyLDIsMiwzLDMsMywzLDQsNCw0LDQsNSw1LDUsNSwwXSxrPVswLDAsMCwwLDEsMSwyLDIsMywzLDQsNCw1LDUsNiw2LDcsNyw4LDgsOSw5LDEwLDEwLDExLDExLDEyLDEyLDEzLDEzXSx4PVswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMyw3XSxTPVsxNiwxNywxOCwwLDgsNyw5LDYsMTAsNSwxMSw0LDEyLDMsMTMsMiwxNCwxLDE1XSx6PW5ldyBBcnJheSgyKihsKzIpKTtuKHopO3ZhciBDPW5ldyBBcnJheSgyKmYpO24oQyk7dmFyIEU9bmV3IEFycmF5KDUxMik7bihFKTt2YXIgQT1uZXcgQXJyYXkoMjU2KTtuKEEpO3ZhciBJPW5ldyBBcnJheShhKTtuKEkpO3ZhciBPLEIsUixUPW5ldyBBcnJheShmKTtmdW5jdGlvbiBEKGUsdCxyLG4saSl7dGhpcy5zdGF0aWNfdHJlZT1lLHRoaXMuZXh0cmFfYml0cz10LHRoaXMuZXh0cmFfYmFzZT1yLHRoaXMuZWxlbXM9bix0aGlzLm1heF9sZW5ndGg9aSx0aGlzLmhhc19zdHJlZT1lJiZlLmxlbmd0aH1mdW5jdGlvbiBGKGUsdCl7dGhpcy5keW5fdHJlZT1lLHRoaXMubWF4X2NvZGU9MCx0aGlzLnN0YXRfZGVzYz10fWZ1bmN0aW9uIE4oZSl7cmV0dXJuIGU8MjU2P0VbZV06RVsyNTYrKGU+Pj43KV19ZnVuY3Rpb24gVShlLHQpe2UucGVuZGluZ19idWZbZS5wZW5kaW5nKytdPTI1NSZ0LGUucGVuZGluZ19idWZbZS5wZW5kaW5nKytdPXQ+Pj44JjI1NX1mdW5jdGlvbiBQKGUsdCxyKXtlLmJpX3ZhbGlkPmQtcj8oZS5iaV9idWZ8PXQ8PGUuYmlfdmFsaWQmNjU1MzUsVShlLGUuYmlfYnVmKSxlLmJpX2J1Zj10Pj5kLWUuYmlfdmFsaWQsZS5iaV92YWxpZCs9ci1kKTooZS5iaV9idWZ8PXQ8PGUuYmlfdmFsaWQmNjU1MzUsZS5iaV92YWxpZCs9cil9ZnVuY3Rpb24gTChlLHQscil7UChlLHJbMip0XSxyWzIqdCsxXSl9ZnVuY3Rpb24gaihlLHQpe2Zvcih2YXIgcj0wO3J8PTEmZSxlPj4+PTEscjw8PTEsMDwtLXQ7KTtyZXR1cm4gcj4+PjF9ZnVuY3Rpb24gWihlLHQscil7dmFyIG4saSxzPW5ldyBBcnJheShnKzEpLGE9MDtmb3Iobj0xO248PWc7bisrKXNbbl09YT1hK3Jbbi0xXTw8MTtmb3IoaT0wO2k8PXQ7aSsrKXt2YXIgbz1lWzIqaSsxXTswIT09byYmKGVbMippXT1qKHNbb10rKyxvKSl9fWZ1bmN0aW9uIFcoZSl7dmFyIHQ7Zm9yKHQ9MDt0PGw7dCsrKWUuZHluX2x0cmVlWzIqdF09MDtmb3IodD0wO3Q8Zjt0KyspZS5keW5fZHRyZWVbMip0XT0wO2Zvcih0PTA7dDxjO3QrKyllLmJsX3RyZWVbMip0XT0wO2UuZHluX2x0cmVlWzIqbV09MSxlLm9wdF9sZW49ZS5zdGF0aWNfbGVuPTAsZS5sYXN0X2xpdD1lLm1hdGNoZXM9MH1mdW5jdGlvbiBNKGUpezg8ZS5iaV92YWxpZD9VKGUsZS5iaV9idWYpOjA8ZS5iaV92YWxpZCYmKGUucGVuZGluZ19idWZbZS5wZW5kaW5nKytdPWUuYmlfYnVmKSxlLmJpX2J1Zj0wLGUuYmlfdmFsaWQ9MH1mdW5jdGlvbiBIKGUsdCxyLG4pe3ZhciBpPTIqdCxzPTIqcjtyZXR1cm4gZVtpXTxlW3NdfHxlW2ldPT09ZVtzXSYmblt0XTw9bltyXX1mdW5jdGlvbiBHKGUsdCxyKXtmb3IodmFyIG49ZS5oZWFwW3JdLGk9cjw8MTtpPD1lLmhlYXBfbGVuJiYoaTxlLmhlYXBfbGVuJiZIKHQsZS5oZWFwW2krMV0sZS5oZWFwW2ldLGUuZGVwdGgpJiZpKyssIUgodCxuLGUuaGVhcFtpXSxlLmRlcHRoKSk7KWUuaGVhcFtyXT1lLmhlYXBbaV0scj1pLGk8PD0xO2UuaGVhcFtyXT1ufWZ1bmN0aW9uIEsoZSx0LHIpe3ZhciBuLGkscyxhLG89MDtpZigwIT09ZS5sYXN0X2xpdClmb3IoO249ZS5wZW5kaW5nX2J1ZltlLmRfYnVmKzIqb108PDh8ZS5wZW5kaW5nX2J1ZltlLmRfYnVmKzIqbysxXSxpPWUucGVuZGluZ19idWZbZS5sX2J1ZitvXSxvKyssMD09PW4/TChlLGksdCk6KEwoZSwocz1BW2ldKSt1KzEsdCksMCE9PShhPXdbc10pJiZQKGUsaS09SVtzXSxhKSxMKGUscz1OKC0tbiksciksMCE9PShhPWtbc10pJiZQKGUsbi09VFtzXSxhKSksbzxlLmxhc3RfbGl0Oyk7TChlLG0sdCl9ZnVuY3Rpb24gWShlLHQpe3ZhciByLG4saSxzPXQuZHluX3RyZWUsYT10LnN0YXRfZGVzYy5zdGF0aWNfdHJlZSxvPXQuc3RhdF9kZXNjLmhhc19zdHJlZSxoPXQuc3RhdF9kZXNjLmVsZW1zLHU9LTE7Zm9yKGUuaGVhcF9sZW49MCxlLmhlYXBfbWF4PV8scj0wO3I8aDtyKyspMCE9PXNbMipyXT8oZS5oZWFwWysrZS5oZWFwX2xlbl09dT1yLGUuZGVwdGhbcl09MCk6c1syKnIrMV09MDtmb3IoO2UuaGVhcF9sZW48Mjspc1syKihpPWUuaGVhcFsrK2UuaGVhcF9sZW5dPXU8Mj8rK3U6MCldPTEsZS5kZXB0aFtpXT0wLGUub3B0X2xlbi0tLG8mJihlLnN0YXRpY19sZW4tPWFbMippKzFdKTtmb3IodC5tYXhfY29kZT11LHI9ZS5oZWFwX2xlbj4+MTsxPD1yO3ItLSlHKGUscyxyKTtmb3IoaT1oO3I9ZS5oZWFwWzFdLGUuaGVhcFsxXT1lLmhlYXBbZS5oZWFwX2xlbi0tXSxHKGUscywxKSxuPWUuaGVhcFsxXSxlLmhlYXBbLS1lLmhlYXBfbWF4XT1yLGUuaGVhcFstLWUuaGVhcF9tYXhdPW4sc1syKmldPXNbMipyXStzWzIqbl0sZS5kZXB0aFtpXT0oZS5kZXB0aFtyXT49ZS5kZXB0aFtuXT9lLmRlcHRoW3JdOmUuZGVwdGhbbl0pKzEsc1syKnIrMV09c1syKm4rMV09aSxlLmhlYXBbMV09aSsrLEcoZSxzLDEpLDI8PWUuaGVhcF9sZW47KTtlLmhlYXBbLS1lLmhlYXBfbWF4XT1lLmhlYXBbMV0sZnVuY3Rpb24oZSx0KXt2YXIgcixuLGkscyxhLG8saD10LmR5bl90cmVlLHU9dC5tYXhfY29kZSxsPXQuc3RhdF9kZXNjLnN0YXRpY190cmVlLGY9dC5zdGF0X2Rlc2MuaGFzX3N0cmVlLGM9dC5zdGF0X2Rlc2MuZXh0cmFfYml0cyxkPXQuc3RhdF9kZXNjLmV4dHJhX2Jhc2UscD10LnN0YXRfZGVzYy5tYXhfbGVuZ3RoLG09MDtmb3Iocz0wO3M8PWc7cysrKWUuYmxfY291bnRbc109MDtmb3IoaFsyKmUuaGVhcFtlLmhlYXBfbWF4XSsxXT0wLHI9ZS5oZWFwX21heCsxO3I8XztyKyspcDwocz1oWzIqaFsyKihuPWUuaGVhcFtyXSkrMV0rMV0rMSkmJihzPXAsbSsrKSxoWzIqbisxXT1zLHU8bnx8KGUuYmxfY291bnRbc10rKyxhPTAsZDw9biYmKGE9Y1tuLWRdKSxvPWhbMipuXSxlLm9wdF9sZW4rPW8qKHMrYSksZiYmKGUuc3RhdGljX2xlbis9byoobFsyKm4rMV0rYSkpKTtpZigwIT09bSl7ZG97Zm9yKHM9cC0xOzA9PT1lLmJsX2NvdW50W3NdOylzLS07ZS5ibF9jb3VudFtzXS0tLGUuYmxfY291bnRbcysxXSs9MixlLmJsX2NvdW50W3BdLS0sbS09Mn13aGlsZSgwPG0pO2ZvcihzPXA7MCE9PXM7cy0tKWZvcihuPWUuYmxfY291bnRbc107MCE9PW47KXU8KGk9ZS5oZWFwWy0tcl0pfHwoaFsyKmkrMV0hPT1zJiYoZS5vcHRfbGVuKz0ocy1oWzIqaSsxXSkqaFsyKmldLGhbMippKzFdPXMpLG4tLSl9fShlLHQpLFoocyx1LGUuYmxfY291bnQpfWZ1bmN0aW9uIFgoZSx0LHIpe3ZhciBuLGkscz0tMSxhPXRbMV0sbz0wLGg9Nyx1PTQ7Zm9yKDA9PT1hJiYoaD0xMzgsdT0zKSx0WzIqKHIrMSkrMV09NjU1MzUsbj0wO248PXI7bisrKWk9YSxhPXRbMioobisxKSsxXSwrK288aCYmaT09PWF8fChvPHU/ZS5ibF90cmVlWzIqaV0rPW86MCE9PWk/KGkhPT1zJiZlLmJsX3RyZWVbMippXSsrLGUuYmxfdHJlZVsyKmJdKyspOm88PTEwP2UuYmxfdHJlZVsyKnZdKys6ZS5ibF90cmVlWzIqeV0rKyxzPWksdT0obz0wKT09PWE/KGg9MTM4LDMpOmk9PT1hPyhoPTYsMyk6KGg9Nyw0KSl9ZnVuY3Rpb24gVihlLHQscil7dmFyIG4saSxzPS0xLGE9dFsxXSxvPTAsaD03LHU9NDtmb3IoMD09PWEmJihoPTEzOCx1PTMpLG49MDtuPD1yO24rKylpZihpPWEsYT10WzIqKG4rMSkrMV0sISgrK288aCYmaT09PWEpKXtpZihvPHUpZm9yKDtMKGUsaSxlLmJsX3RyZWUpLDAhPS0tbzspO2Vsc2UgMCE9PWk/KGkhPT1zJiYoTChlLGksZS5ibF90cmVlKSxvLS0pLEwoZSxiLGUuYmxfdHJlZSksUChlLG8tMywyKSk6bzw9MTA/KEwoZSx2LGUuYmxfdHJlZSksUChlLG8tMywzKSk6KEwoZSx5LGUuYmxfdHJlZSksUChlLG8tMTEsNykpO3M9aSx1PShvPTApPT09YT8oaD0xMzgsMyk6aT09PWE/KGg9NiwzKTooaD03LDQpfX1uKFQpO3ZhciBxPSExO2Z1bmN0aW9uIEooZSx0LHIsbil7UChlLChzPDwxKSsobj8xOjApLDMpLGZ1bmN0aW9uKGUsdCxyLG4pe00oZSksbiYmKFUoZSxyKSxVKGUsfnIpKSxpLmFycmF5U2V0KGUucGVuZGluZ19idWYsZS53aW5kb3csdCxyLGUucGVuZGluZyksZS5wZW5kaW5nKz1yfShlLHQsciwhMCl9ci5fdHJfaW5pdD1mdW5jdGlvbihlKXtxfHwoZnVuY3Rpb24oKXt2YXIgZSx0LHIsbixpLHM9bmV3IEFycmF5KGcrMSk7Zm9yKG49cj0wO248YS0xO24rKylmb3IoSVtuXT1yLGU9MDtlPDE8PHdbbl07ZSsrKUFbcisrXT1uO2ZvcihBW3ItMV09bixuPWk9MDtuPDE2O24rKylmb3IoVFtuXT1pLGU9MDtlPDE8PGtbbl07ZSsrKUVbaSsrXT1uO2ZvcihpPj49NztuPGY7bisrKWZvcihUW25dPWk8PDcsZT0wO2U8MTw8a1tuXS03O2UrKylFWzI1NitpKytdPW47Zm9yKHQ9MDt0PD1nO3QrKylzW3RdPTA7Zm9yKGU9MDtlPD0xNDM7KXpbMiplKzFdPTgsZSsrLHNbOF0rKztmb3IoO2U8PTI1NTspelsyKmUrMV09OSxlKyssc1s5XSsrO2Zvcig7ZTw9Mjc5Oyl6WzIqZSsxXT03LGUrKyxzWzddKys7Zm9yKDtlPD0yODc7KXpbMiplKzFdPTgsZSsrLHNbOF0rKztmb3IoWih6LGwrMSxzKSxlPTA7ZTxmO2UrKylDWzIqZSsxXT01LENbMiplXT1qKGUsNSk7Tz1uZXcgRCh6LHcsdSsxLGwsZyksQj1uZXcgRChDLGssMCxmLGcpLFI9bmV3IEQobmV3IEFycmF5KDApLHgsMCxjLHApfSgpLHE9ITApLGUubF9kZXNjPW5ldyBGKGUuZHluX2x0cmVlLE8pLGUuZF9kZXNjPW5ldyBGKGUuZHluX2R0cmVlLEIpLGUuYmxfZGVzYz1uZXcgRihlLmJsX3RyZWUsUiksZS5iaV9idWY9MCxlLmJpX3ZhbGlkPTAsVyhlKX0sci5fdHJfc3RvcmVkX2Jsb2NrPUosci5fdHJfZmx1c2hfYmxvY2s9ZnVuY3Rpb24oZSx0LHIsbil7dmFyIGkscyxhPTA7MDxlLmxldmVsPygyPT09ZS5zdHJtLmRhdGFfdHlwZSYmKGUuc3RybS5kYXRhX3R5cGU9ZnVuY3Rpb24oZSl7dmFyIHQscj00MDkzNjI0NDQ3O2Zvcih0PTA7dDw9MzE7dCsrLHI+Pj49MSlpZigxJnImJjAhPT1lLmR5bl9sdHJlZVsyKnRdKXJldHVybiBvO2lmKDAhPT1lLmR5bl9sdHJlZVsxOF18fDAhPT1lLmR5bl9sdHJlZVsyMF18fDAhPT1lLmR5bl9sdHJlZVsyNl0pcmV0dXJuIGg7Zm9yKHQ9MzI7dDx1O3QrKylpZigwIT09ZS5keW5fbHRyZWVbMip0XSlyZXR1cm4gaDtyZXR1cm4gb30oZSkpLFkoZSxlLmxfZGVzYyksWShlLGUuZF9kZXNjKSxhPWZ1bmN0aW9uKGUpe3ZhciB0O2ZvcihYKGUsZS5keW5fbHRyZWUsZS5sX2Rlc2MubWF4X2NvZGUpLFgoZSxlLmR5bl9kdHJlZSxlLmRfZGVzYy5tYXhfY29kZSksWShlLGUuYmxfZGVzYyksdD1jLTE7Mzw9dCYmMD09PWUuYmxfdHJlZVsyKlNbdF0rMV07dC0tKTtyZXR1cm4gZS5vcHRfbGVuKz0zKih0KzEpKzUrNSs0LHR9KGUpLGk9ZS5vcHRfbGVuKzMrNz4+PjMsKHM9ZS5zdGF0aWNfbGVuKzMrNz4+PjMpPD1pJiYoaT1zKSk6aT1zPXIrNSxyKzQ8PWkmJi0xIT09dD9KKGUsdCxyLG4pOjQ9PT1lLnN0cmF0ZWd5fHxzPT09aT8oUChlLDIrKG4/MTowKSwzKSxLKGUseixDKSk6KFAoZSw0KyhuPzE6MCksMyksZnVuY3Rpb24oZSx0LHIsbil7dmFyIGk7Zm9yKFAoZSx0LTI1Nyw1KSxQKGUsci0xLDUpLFAoZSxuLTQsNCksaT0wO2k8bjtpKyspUChlLGUuYmxfdHJlZVsyKlNbaV0rMV0sMyk7VihlLGUuZHluX2x0cmVlLHQtMSksVihlLGUuZHluX2R0cmVlLHItMSl9KGUsZS5sX2Rlc2MubWF4X2NvZGUrMSxlLmRfZGVzYy5tYXhfY29kZSsxLGErMSksSyhlLGUuZHluX2x0cmVlLGUuZHluX2R0cmVlKSksVyhlKSxuJiZNKGUpfSxyLl90cl90YWxseT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGUucGVuZGluZ19idWZbZS5kX2J1ZisyKmUubGFzdF9saXRdPXQ+Pj44JjI1NSxlLnBlbmRpbmdfYnVmW2UuZF9idWYrMiplLmxhc3RfbGl0KzFdPTI1NSZ0LGUucGVuZGluZ19idWZbZS5sX2J1ZitlLmxhc3RfbGl0XT0yNTUmcixlLmxhc3RfbGl0KyssMD09PXQ/ZS5keW5fbHRyZWVbMipyXSsrOihlLm1hdGNoZXMrKyx0LS0sZS5keW5fbHRyZWVbMiooQVtyXSt1KzEpXSsrLGUuZHluX2R0cmVlWzIqTih0KV0rKyksZS5sYXN0X2xpdD09PWUubGl0X2J1ZnNpemUtMX0sci5fdHJfYWxpZ249ZnVuY3Rpb24oZSl7UChlLDIsMyksTChlLG0seiksZnVuY3Rpb24oZSl7MTY9PT1lLmJpX3ZhbGlkPyhVKGUsZS5iaV9idWYpLGUuYmlfYnVmPTAsZS5iaV92YWxpZD0wKTo4PD1lLmJpX3ZhbGlkJiYoZS5wZW5kaW5nX2J1ZltlLnBlbmRpbmcrK109MjU1JmUuYmlfYnVmLGUuYmlfYnVmPj49OCxlLmJpX3ZhbGlkLT04KX0oZSl9fSx7XCIuLi91dGlscy9jb21tb25cIjo0MX1dLDUzOltmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dC5leHBvcnRzPWZ1bmN0aW9uKCl7dGhpcy5pbnB1dD1udWxsLHRoaXMubmV4dF9pbj0wLHRoaXMuYXZhaWxfaW49MCx0aGlzLnRvdGFsX2luPTAsdGhpcy5vdXRwdXQ9bnVsbCx0aGlzLm5leHRfb3V0PTAsdGhpcy5hdmFpbF9vdXQ9MCx0aGlzLnRvdGFsX291dD0wLHRoaXMubXNnPVwiXCIsdGhpcy5zdGF0ZT1udWxsLHRoaXMuZGF0YV90eXBlPTIsdGhpcy5hZGxlcj0wfX0se31dLDU0OltmdW5jdGlvbihlLHQscil7KGZ1bmN0aW9uKGUpeyFmdW5jdGlvbihyLG4pe1widXNlIHN0cmljdFwiO2lmKCFyLnNldEltbWVkaWF0ZSl7dmFyIGkscyx0LGEsbz0xLGg9e30sdT0hMSxsPXIuZG9jdW1lbnQsZT1PYmplY3QuZ2V0UHJvdG90eXBlT2YmJk9iamVjdC5nZXRQcm90b3R5cGVPZihyKTtlPWUmJmUuc2V0VGltZW91dD9lOnIsaT1cIltvYmplY3QgcHJvY2Vzc11cIj09PXt9LnRvU3RyaW5nLmNhbGwoci5wcm9jZXNzKT9mdW5jdGlvbihlKXtwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uKCl7YyhlKX0pfTpmdW5jdGlvbigpe2lmKHIucG9zdE1lc3NhZ2UmJiFyLmltcG9ydFNjcmlwdHMpe3ZhciBlPSEwLHQ9ci5vbm1lc3NhZ2U7cmV0dXJuIHIub25tZXNzYWdlPWZ1bmN0aW9uKCl7ZT0hMX0sci5wb3N0TWVzc2FnZShcIlwiLFwiKlwiKSxyLm9ubWVzc2FnZT10LGV9fSgpPyhhPVwic2V0SW1tZWRpYXRlJFwiK01hdGgucmFuZG9tKCkrXCIkXCIsci5hZGRFdmVudExpc3RlbmVyP3IuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIixkLCExKTpyLmF0dGFjaEV2ZW50KFwib25tZXNzYWdlXCIsZCksZnVuY3Rpb24oZSl7ci5wb3N0TWVzc2FnZShhK2UsXCIqXCIpfSk6ci5NZXNzYWdlQ2hhbm5lbD8oKHQ9bmV3IE1lc3NhZ2VDaGFubmVsKS5wb3J0MS5vbm1lc3NhZ2U9ZnVuY3Rpb24oZSl7YyhlLmRhdGEpfSxmdW5jdGlvbihlKXt0LnBvcnQyLnBvc3RNZXNzYWdlKGUpfSk6bCYmXCJvbnJlYWR5c3RhdGVjaGFuZ2VcImluIGwuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKT8ocz1sLmRvY3VtZW50RWxlbWVudCxmdW5jdGlvbihlKXt2YXIgdD1sLmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7dC5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtjKGUpLHQub25yZWFkeXN0YXRlY2hhbmdlPW51bGwscy5yZW1vdmVDaGlsZCh0KSx0PW51bGx9LHMuYXBwZW5kQ2hpbGQodCl9KTpmdW5jdGlvbihlKXtzZXRUaW1lb3V0KGMsMCxlKX0sZS5zZXRJbW1lZGlhdGU9ZnVuY3Rpb24oZSl7XCJmdW5jdGlvblwiIT10eXBlb2YgZSYmKGU9bmV3IEZ1bmN0aW9uKFwiXCIrZSkpO2Zvcih2YXIgdD1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aC0xKSxyPTA7cjx0Lmxlbmd0aDtyKyspdFtyXT1hcmd1bWVudHNbcisxXTt2YXIgbj17Y2FsbGJhY2s6ZSxhcmdzOnR9O3JldHVybiBoW29dPW4saShvKSxvKyt9LGUuY2xlYXJJbW1lZGlhdGU9Zn1mdW5jdGlvbiBmKGUpe2RlbGV0ZSBoW2VdfWZ1bmN0aW9uIGMoZSl7aWYodSlzZXRUaW1lb3V0KGMsMCxlKTtlbHNle3ZhciB0PWhbZV07aWYodCl7dT0hMDt0cnl7IWZ1bmN0aW9uKGUpe3ZhciB0PWUuY2FsbGJhY2sscj1lLmFyZ3M7c3dpdGNoKHIubGVuZ3RoKXtjYXNlIDA6dCgpO2JyZWFrO2Nhc2UgMTp0KHJbMF0pO2JyZWFrO2Nhc2UgMjp0KHJbMF0sclsxXSk7YnJlYWs7Y2FzZSAzOnQoclswXSxyWzFdLHJbMl0pO2JyZWFrO2RlZmF1bHQ6dC5hcHBseShuLHIpfX0odCl9ZmluYWxseXtmKGUpLHU9ITF9fX19ZnVuY3Rpb24gZChlKXtlLnNvdXJjZT09PXImJlwic3RyaW5nXCI9PXR5cGVvZiBlLmRhdGEmJjA9PT1lLmRhdGEuaW5kZXhPZihhKSYmYygrZS5kYXRhLnNsaWNlKGEubGVuZ3RoKSl9fShcInVuZGVmaW5lZFwiPT10eXBlb2Ygc2VsZj92b2lkIDA9PT1lP3RoaXM6ZTpzZWxmKX0pLmNhbGwodGhpcyxcInVuZGVmaW5lZFwiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDpcInVuZGVmaW5lZFwiIT10eXBlb2Ygc2VsZj9zZWxmOlwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0se31dfSx7fSxbMTBdKSgxMCl9KTsiLCAibW9kdWxlLmV4cG9ydHMgPSB7XG4gIGFxdWE6IC8jMDBmZmZmKGZmKT8oPyFcXHcpfCMwZmYoZik/KD8hXFx3KS9naSxcbiAgYXp1cmU6IC8jZjBmZmZmKGZmKT8oPyFcXHcpL2dpLFxuICBiZWlnZTogLyNmNWY1ZGMoZmYpPyg/IVxcdykvZ2ksXG4gIGJpc3F1ZTogLyNmZmU0YzQoZmYpPyg/IVxcdykvZ2ksXG4gIGJsYWNrOiAvIzAwMDAwMChmZik/KD8hXFx3KXwjMDAwKGYpPyg/IVxcdykvZ2ksXG4gIGJsdWU6IC8jMDAwMGZmKGZmKT8oPyFcXHcpfCMwMGYoZik/KD8hXFx3KS9naSxcbiAgYnJvd246IC8jYTUyYTJhKGZmKT8oPyFcXHcpL2dpLFxuICBjb3JhbDogLyNmZjdmNTAoZmYpPyg/IVxcdykvZ2ksXG4gIGNvcm5zaWxrOiAvI2ZmZjhkYyhmZik/KD8hXFx3KS9naSxcbiAgY3JpbXNvbjogLyNkYzE0M2MoZmYpPyg/IVxcdykvZ2ksXG4gIGN5YW46IC8jMDBmZmZmKGZmKT8oPyFcXHcpfCMwZmYoZik/KD8hXFx3KS9naSxcbiAgZGFya2JsdWU6IC8jMDAwMDhiKGZmKT8oPyFcXHcpL2dpLFxuICBkYXJrY3lhbjogLyMwMDhiOGIoZmYpPyg/IVxcdykvZ2ksXG4gIGRhcmtncmV5OiAvI2E5YTlhOShmZik/KD8hXFx3KS9naSxcbiAgZGFya3JlZDogLyM4YjAwMDAoZmYpPyg/IVxcdykvZ2ksXG4gIGRlZXBwaW5rOiAvI2ZmMTQ5MyhmZik/KD8hXFx3KS9naSxcbiAgZGltZ3JleTogLyM2OTY5NjkoZmYpPyg/IVxcdykvZ2ksXG4gIGdvbGQ6IC8jZmZkNzAwKGZmKT8oPyFcXHcpL2dpLFxuICBncmVlbjogLyMwMDgwMDAoZmYpPyg/IVxcdykvZ2ksXG4gIGdyZXk6IC8jODA4MDgwKGZmKT8oPyFcXHcpL2dpLFxuICBob25leWRldzogLyNmMGZmZjAoZmYpPyg/IVxcdykvZ2ksXG4gIGhvdHBpbms6IC8jZmY2OWI0KGZmKT8oPyFcXHcpL2dpLFxuICBpbmRpZ286IC8jNGIwMDgyKGZmKT8oPyFcXHcpL2dpLFxuICBpdm9yeTogLyNmZmZmZjAoZmYpPyg/IVxcdykvZ2ksXG4gIGtoYWtpOiAvI2YwZTY4YyhmZik/KD8hXFx3KS9naSxcbiAgbGF2ZW5kZXI6IC8jZTZlNmZhKGZmKT8oPyFcXHcpL2dpLFxuICBsaW1lOiAvIzAwZmYwMChmZik/KD8hXFx3KXwjMGYwKGYpPyg/IVxcdykvZ2ksXG4gIGxpbmVuOiAvI2ZhZjBlNihmZik/KD8hXFx3KS9naSxcbiAgbWFyb29uOiAvIzgwMDAwMChmZik/KD8hXFx3KS9naSxcbiAgbW9jY2FzaW46IC8jZmZlNGI1KGZmKT8oPyFcXHcpL2dpLFxuICBuYXZ5OiAvIzAwMDA4MChmZik/KD8hXFx3KS9naSxcbiAgb2xkbGFjZTogLyNmZGY1ZTYoZmYpPyg/IVxcdykvZ2ksXG4gIG9saXZlOiAvIzgwODAwMChmZik/KD8hXFx3KS9naSxcbiAgb3JhbmdlOiAvI2ZmYTUwMChmZik/KD8hXFx3KS9naSxcbiAgb3JjaGlkOiAvI2RhNzBkNihmZik/KD8hXFx3KS9naSxcbiAgcGVydTogLyNjZDg1M2YoZmYpPyg/IVxcdykvZ2ksXG4gIHBpbms6IC8jZmZjMGNiKGZmKT8oPyFcXHcpL2dpLFxuICBwbHVtOiAvI2RkYTBkZChmZik/KD8hXFx3KS9naSxcbiAgcHVycGxlOiAvIzgwMDA4MChmZik/KD8hXFx3KS9naSxcbiAgcmVkOiAvI2ZmMDAwMChmZik/KD8hXFx3KXwjZjAwKGYpPyg/IVxcdykvZ2ksXG4gIHNhbG1vbjogLyNmYTgwNzIoZmYpPyg/IVxcdykvZ2ksXG4gIHNlYWdyZWVuOiAvIzJlOGI1NyhmZik/KD8hXFx3KS9naSxcbiAgc2Vhc2hlbGw6IC8jZmZmNWVlKGZmKT8oPyFcXHcpL2dpLFxuICBzaWVubmE6IC8jYTA1MjJkKGZmKT8oPyFcXHcpL2dpLFxuICBzaWx2ZXI6IC8jYzBjMGMwKGZmKT8oPyFcXHcpL2dpLFxuICBza3libHVlOiAvIzg3Y2VlYihmZik/KD8hXFx3KS9naSxcbiAgc25vdzogLyNmZmZhZmEoZmYpPyg/IVxcdykvZ2ksXG4gIHRhbjogLyNkMmI0OGMoZmYpPyg/IVxcdykvZ2ksXG4gIHRlYWw6IC8jMDA4MDgwKGZmKT8oPyFcXHcpL2dpLFxuICB0aGlzdGxlOiAvI2Q4YmZkOChmZik/KD8hXFx3KS9naSxcbiAgdG9tYXRvOiAvI2ZmNjM0NyhmZik/KD8hXFx3KS9naSxcbiAgdmlvbGV0OiAvI2VlODJlZShmZik/KD8hXFx3KS9naSxcbiAgd2hlYXQ6IC8jZjVkZWIzKGZmKT8oPyFcXHcpL2dpLFxuICB3aGl0ZTogLyNmZmZmZmYoZmYpPyg/IVxcdyl8I2ZmZihmKT8oPyFcXHcpL2dpLFxufTtcbiIsICJ2YXIgc2hvcnRlck5hbWVzID0gcmVxdWlyZSgnLi9zaG9ydGVyLWNzcy1jb2xvci1uYW1lcycpO1xudmFyIFJFR0VYID0ge1xuICB3aGl0ZXNwYWNlOiAvXFxzKy9nLFxuICB1cmxIZXhQYWlyczogLyVbXFxkQS1GXXsyfS9nLFxuICBxdW90ZXM6IC9cIi9nLFxufVxuXG5mdW5jdGlvbiBjb2xsYXBzZVdoaXRlc3BhY2Uoc3RyKSB7XG4gIHJldHVybiBzdHIudHJpbSgpLnJlcGxhY2UoUkVHRVgud2hpdGVzcGFjZSwgJyAnKTtcbn1cblxuZnVuY3Rpb24gZGF0YVVSSVBheWxvYWQoc3RyaW5nKSB7XG4gIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoc3RyaW5nKVxuICAgIC5yZXBsYWNlKFJFR0VYLnVybEhleFBhaXJzLCBzcGVjaWFsSGV4RW5jb2RlKTtcbn1cblxuLy8gYCNgIGdldHMgY29udmVydGVkIHRvIGAlMjNgLCBzbyBxdWl0ZSBhIGZldyBDU1MgbmFtZWQgY29sb3JzIGFyZSBzaG9ydGVyIHRoYW5cbi8vIHRoZWlyIGVxdWl2YWxlbnQgVVJMLWVuY29kZWQgaGV4IGNvZGVzLlxuZnVuY3Rpb24gY29sb3JDb2RlVG9TaG9ydGVyTmFtZXMoc3RyaW5nKSB7XG4gIE9iamVjdC5rZXlzKHNob3J0ZXJOYW1lcykuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcbiAgICBpZiAoc2hvcnRlck5hbWVzW2tleV0udGVzdChzdHJpbmcpKSB7XG4gICAgICBzdHJpbmcgPSBzdHJpbmcucmVwbGFjZShzaG9ydGVyTmFtZXNba2V5XSwga2V5KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIHNwZWNpYWxIZXhFbmNvZGUobWF0Y2gpIHtcbiAgc3dpdGNoIChtYXRjaCkgeyAvLyBCcm93c2VycyB0b2xlcmF0ZSB0aGVzZSBjaGFyYWN0ZXJzLCBhbmQgdGhleSdyZSBmcmVxdWVudFxuICAgIGNhc2UgJyUyMCc6IHJldHVybiAnICc7XG4gICAgY2FzZSAnJTNEJzogcmV0dXJuICc9JztcbiAgICBjYXNlICclM0EnOiByZXR1cm4gJzonO1xuICAgIGNhc2UgJyUyRic6IHJldHVybiAnLyc7XG4gICAgZGVmYXVsdDogcmV0dXJuIG1hdGNoLnRvTG93ZXJDYXNlKCk7IC8vIGNvbXByZXNzZXMgYmV0dGVyXG4gIH1cbn1cblxuZnVuY3Rpb24gc3ZnVG9UaW55RGF0YVVyaShzdmdTdHJpbmcpIHtcbiAgaWYgKHR5cGVvZiBzdmdTdHJpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgYSBzdHJpbmcsIGJ1dCByZWNlaXZlZCAnICsgdHlwZW9mIHN2Z1N0cmluZyk7XG4gIH1cbiAgLy8gU3RyaXAgdGhlIEJ5dGUtT3JkZXIgTWFyayBpZiB0aGUgU1ZHIGhhcyBvbmVcbiAgaWYgKHN2Z1N0cmluZy5jaGFyQ29kZUF0KDApID09PSAweGZlZmYpIHsgc3ZnU3RyaW5nID0gc3ZnU3RyaW5nLnNsaWNlKDEpIH1cblxuICB2YXIgYm9keSA9IGNvbG9yQ29kZVRvU2hvcnRlck5hbWVzKGNvbGxhcHNlV2hpdGVzcGFjZShzdmdTdHJpbmcpKVxuICAgIC5yZXBsYWNlKFJFR0VYLnF1b3RlcywgXCInXCIpO1xuICByZXR1cm4gJ2RhdGE6aW1hZ2Uvc3ZnK3htbCwnICsgZGF0YVVSSVBheWxvYWQoYm9keSk7XG59XG5cbnN2Z1RvVGlueURhdGFVcmkudG9TcmNzZXQgPSBmdW5jdGlvbiB0b1NyY3NldChzdmdTdHJpbmcpIHtcbiAgcmV0dXJuIHN2Z1RvVGlueURhdGFVcmkoc3ZnU3RyaW5nKS5yZXBsYWNlKC8gL2csICclMjAnKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdmdUb1RpbnlEYXRhVXJpO1xuIiwgImltcG9ydCB7IFBsdWdpbiwgc2V0SWNvbiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgYnVpbGRJY29uUGx1Z2luIGZyb20gXCIuL2ljb24taW4tZWRpdG9yXCI7XG5pbXBvcnQgdHlwZSB7IFNob3J0Y29kZVBvc0ZpZWxkIH0gZnJvbSBcIi4vaWNvbi1pbi1lZGl0b3Ivc3RhdGVcIjtcbmltcG9ydCBnZXRTaG9ydGNvZGVQb3NGaWVsZCBmcm9tIFwiLi9pY29uLWluLWVkaXRvci9zdGF0ZVwiO1xuaW1wb3J0IEZpbGVJY29uQ2FjaGUgZnJvbSBcIi4vaWNvbi1wYWNrcy9pY29uLWNhY2hlXCI7XG5pbXBvcnQgUGFja01hbmFnZXIgZnJvbSBcIi4vaWNvbi1wYWNrcy9wYWNrLW1hbmFnZXJcIjtcbmltcG9ydCB0cnlVcGRhdGVJY29ucyBmcm9tIFwiLi9tb2R1bGVzL2pzb24tdG8tc3ZnXCI7XG5pbXBvcnQgeyBFbW9qaVN1Z2dlc3RlciB9IGZyb20gXCIuL21vZHVsZXMvc3VnZ2VzdGVyXCI7XG5pbXBvcnQgeyBnZXRNRFBvc3RQcm9jZXNzb3IsIGdldE5vZGVQb3N0UHJvY2Vzc29yIH0gZnJvbSBcIi4vcG9zdC1wc1wiO1xuaW1wb3J0IHsgc2V0dXBQb3N0UHJvY2Vzc29ycyB9IGZyb20gXCIuL3Bvc3QtcHNcIjtcbmltcG9ydCB7IERFRkFVTFRfU0VUVElOR1MsIEljb25TQ1NldHRpbmdzLCBJY29uU0NTZXR0aW5nVGFiIH0gZnJvbSBcIi4vc2V0dGluZ3NcIjtcbmltcG9ydCB7IGdldEFwaSB9IGZyb20gXCIuL3R5cGluZ3MvYXBpXCI7XG5pbXBvcnQgQVBJLCB7IEFQSV9OQU1FIH0gZnJvbSBcIi4vdHlwaW5ncy9hcGlcIjtcblxuY29uc3QgQVBJX05BTUU6IEFQSV9OQU1FIGV4dGVuZHMga2V5b2YgdHlwZW9mIHdpbmRvdyA/IEFQSV9OQU1FIDogbmV2ZXIgPVxuICBcIkljb25TQ0FQSXYwXCIgYXMgY29uc3Q7IC8vIHRoaXMgbGluZSB3aWxsIHRocm93IGVycm9yIGlmIG5hbWUgb3V0IG9mIHN5bmNcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSWNvblNDIGV4dGVuZHMgUGx1Z2luIHtcbiAgc2V0dGluZ3M6IEljb25TQ1NldHRpbmdzID0gREVGQVVMVF9TRVRUSU5HUztcblxuICBwYWNrTWFuYWdlciA9IG5ldyBQYWNrTWFuYWdlcih0aGlzKTtcblxuICBfbm9kZVByb2Nlc3NvciA9IGdldE5vZGVQb3N0UHJvY2Vzc29yKHRoaXMpO1xuICBfbWRQcm9jZXNzb3IgPSBnZXRNRFBvc3RQcm9jZXNzb3IodGhpcyk7XG5cbiAgc2hvcnRjb2RlUG9zRmllbGQ6IFNob3J0Y29kZVBvc0ZpZWxkID0gZ2V0U2hvcnRjb2RlUG9zRmllbGQodGhpcyk7XG5cbiAgcG9zdFByb2Nlc3NvcihpbnB1dDogc3RyaW5nLCByZXBsYWNlcjogKHNob3J0Y29kZTogc3RyaW5nKSA9PiBzdHJpbmcpOiBzdHJpbmc7XG4gIHBvc3RQcm9jZXNzb3IoaW5wdXQ6IEhUTUxFbGVtZW50KTogdm9pZDtcbiAgcG9zdFByb2Nlc3NvcihcbiAgICBpbnB1dDogSFRNTEVsZW1lbnQgfCBzdHJpbmcsXG4gICAgcmVwbGFjZXI/OiAoc2hvcnRjb2RlOiBzdHJpbmcpID0+IHN0cmluZyxcbiAgKTogc3RyaW5nIHwgdm9pZCB7XG4gICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gXCJzdHJpbmdcIiAmJiByZXBsYWNlcikge1xuICAgICAgcmV0dXJuIHRoaXMuX21kUHJvY2Vzc29yKGlucHV0LCByZXBsYWNlcik7XG4gICAgfSBlbHNlIGlmIChpbnB1dCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5fbm9kZVByb2Nlc3NvcihpbnB1dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGFyZ3MgZ2l2ZW4gdG8gcG9zdFByb2Nlc3NvclwiKTtcbiAgICB9XG4gIH1cblxuICBhcGkgPSBnZXRBcGkodGhpcy5wYWNrTWFuYWdlciwgdGhpcyk7XG4gIGZpbGVJY29uQ2FjaGUgPSBuZXcgRmlsZUljb25DYWNoZSh0aGlzKTtcblxuICBhc3luYyBvbmxvYWQoKSB7XG4gICAgY29uc29sZS5sb2coXCJsb2FkaW5nIEljb24gU2hvcnRjb2Rlc1wiKTtcblxuICAgIGF3YWl0IHRoaXMubG9hZFNldHRpbmdzKCk7XG4gICAgYXdhaXQgdHJ5VXBkYXRlSWNvbnModGhpcyk7XG4gICAgYXdhaXQgdGhpcy5wYWNrTWFuYWdlci5sb2FkSWNvbnMoKTtcblxuICAgICh3aW5kb3dbQVBJX05BTUVdID0gdGhpcy5hcGkpICYmXG4gICAgICB0aGlzLnJlZ2lzdGVyKCgpID0+ICh3aW5kb3dbQVBJX05BTUVdID0gdW5kZWZpbmVkKSk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyRWRpdG9yU3VnZ2VzdChuZXcgRW1vamlTdWdnZXN0ZXIodGhpcykpO1xuICAgIHNldHVwUG9zdFByb2Nlc3NvcnModGhpcyk7XG4gICAgYnVpbGRJY29uUGx1Z2luKHRoaXMpO1xuXG4gICAgdGhpcy5hZGRTZXR0aW5nVGFiKG5ldyBJY29uU0NTZXR0aW5nVGFiKHRoaXMuYXBwLCB0aGlzKSk7XG4gIH1cblxuICAvLyBvbnVubG9hZCgpIHtcbiAgLy8gICBjb25zb2xlLmxvZyhcInVubG9hZGluZyBJY29uIFNob3J0Y29kZXNcIik7XG4gIC8vIH1cblxuICBhc3luYyBsb2FkU2V0dGluZ3MoKSB7XG4gICAgbGV0IGxvYWRlZCA9IChhd2FpdCB0aGlzLmxvYWREYXRhKCkpIGFzIEljb25TQ1NldHRpbmdzIHwgdW5kZWZpbmVkO1xuICAgIGlmIChsb2FkZWQpIHtcbiAgICAgIGlmICgobG9hZGVkIGFzIGFueSkuaWNvbnBhY2spIHtcbiAgICAgICAgZGVsZXRlIChsb2FkZWQgYXMgYW55KVtcImljb25wYWNrXCJdO1xuICAgICAgfVxuICAgICAgdGhpcy5zZXR0aW5ncyA9IHtcbiAgICAgICAgLi4udGhpcy5zZXR0aW5ncyxcbiAgICAgICAgLi4ubG9hZGVkLFxuICAgICAgICBkaXNhYmxlZFBhY2tzOiBsb2FkZWQuZGlzYWJsZWRQYWNrc1xuICAgICAgICAgID8gbmV3IFNldChsb2FkZWQuZGlzYWJsZWRQYWNrcylcbiAgICAgICAgICA6IHRoaXMuc2V0dGluZ3MuZGlzYWJsZWRQYWNrcyxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc2F2ZVNldHRpbmdzKCkge1xuICAgIGF3YWl0IHRoaXMuc2F2ZURhdGEoe1xuICAgICAgLi4udGhpcy5zZXR0aW5ncyxcbiAgICAgIGRpc2FibGVkUGFja3M6IFsuLi50aGlzLnNldHRpbmdzLmRpc2FibGVkUGFja3NdLFxuICAgIH0pO1xuICB9XG59XG4iLCAiaW1wb3J0IHtcbiAgRGVjb3JhdGlvbixcbiAgRGVjb3JhdGlvblNldCxcbiAgRWRpdG9yVmlldyxcbiAgVmlld1BsdWdpbixcbiAgVmlld1VwZGF0ZSxcbn0gZnJvbSBcIkBjb2RlbWlycm9yL3ZpZXdcIjtcbmltcG9ydCB7IGVkaXRvckxpdmVQcmV2aWV3RmllbGQgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHR5cGUgSWNvblNDIGZyb20gXCIuLi9pc2MtbWFpblwiO1xuaW1wb3J0IGljb25zIGZyb20gXCIuL2RlY29cIjtcbmltcG9ydCBnZXRNZW51IGZyb20gXCIuL2dldC1tZW51XCI7XG5cbmludGVyZmFjZSBJY29uUGx1Z2luIHtcbiAgY29uc3RydWN0b3IodmlldzogRWRpdG9yVmlldyk6IEljb25QbHVnaW47XG4gIHVwZGF0ZSh1cGRhdGU6IFZpZXdVcGRhdGUpOiB2b2lkO1xufVxuXG5jb25zdCBnZXRJY29uTGl2ZVByZXZpZXdQbHVnaW4gPSAocGx1Z2luOiBJY29uU0MpOiBWaWV3UGx1Z2luPEljb25QbHVnaW4+ID0+IHtcbiAgY2xhc3MgSWNvblBsdWdpbiB7XG4gICAgZGVjb3JhdGlvbnM6IERlY29yYXRpb25TZXQ7XG4gICAgcGx1Z2luOiBJY29uU0M7XG5cbiAgICBjb25zdHJ1Y3Rvcih2aWV3OiBFZGl0b3JWaWV3KSB7XG4gICAgICB0aGlzLnBsdWdpbiA9IHBsdWdpbjtcbiAgICAgIHRoaXMuZGVjb3JhdGlvbnMgPSBpY29ucyh2aWV3LCB0aGlzLnBsdWdpbik7XG4gICAgfVxuXG4gICAgdXBkYXRlKHVwZGF0ZTogVmlld1VwZGF0ZSkge1xuICAgICAgY29uc3QgcHJldk1vZGUgPSB1cGRhdGUuc3RhcnRTdGF0ZS5maWVsZChlZGl0b3JMaXZlUHJldmlld0ZpZWxkKSxcbiAgICAgICAgY3Vyck1vZGUgPSB1cGRhdGUuc3RhdGUuZmllbGQoZWRpdG9yTGl2ZVByZXZpZXdGaWVsZCk7XG4gICAgICBpZiAoXG4gICAgICAgIHVwZGF0ZS5kb2NDaGFuZ2VkIHx8XG4gICAgICAgIHVwZGF0ZS52aWV3cG9ydENoYW5nZWQgfHxcbiAgICAgICAgcHJldk1vZGUgIT09IGN1cnJNb2RlXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5kZWNvcmF0aW9ucyA9IGljb25zKHVwZGF0ZS52aWV3LCBwbHVnaW4pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBWaWV3UGx1Z2luLmZyb21DbGFzcyhJY29uUGx1Z2luLCB7XG4gICAgZXZlbnRIYW5kbGVyczoge1xuICAgICAgbW91c2Vkb3duOiBJY29uQ2xpY2tIYW5kbGVyLFxuICAgIH0sXG4gICAgZGVjb3JhdGlvbnM6ICh2KSA9PiB2LmRlY29yYXRpb25zLFxuICAgIHByb3ZpZGU6IChwbHVnaW4pID0+XG4gICAgICBFZGl0b3JWaWV3LmF0b21pY1Jhbmdlcy5vZigodmlldykgPT4ge1xuICAgICAgICBsZXQgdmFsdWUgPSB2aWV3LnBsdWdpbihwbHVnaW4pO1xuICAgICAgICByZXR1cm4gdmFsdWUgPyB2YWx1ZS5kZWNvcmF0aW9ucyA6IERlY29yYXRpb24ubm9uZTtcbiAgICAgIH0pLFxuICB9KTtcbiAgLyogZXNsaW50LWRpc2FibGUgcHJlZmVyLWFycm93L3ByZWZlci1hcnJvdy1mdW5jdGlvbnMgKi9cbiAgZnVuY3Rpb24gSWNvbkNsaWNrSGFuZGxlcihcbiAgICB0aGlzOiBJY29uUGx1Z2luLFxuICAgIGV2dDogTW91c2VFdmVudCxcbiAgICB2aWV3OiBFZGl0b3JWaWV3LFxuICApIHtcbiAgICBsZXQgdGFyZ2V0ID0gZXZ0LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBpZiAodGFyZ2V0Lm1hdGNoUGFyZW50KFwiLmNtLWlzYy1pY29uXCIsIHZpZXcuY29udGVudERPTSkpIHtcbiAgICAgIGNvbnN0IGVsRnJvbSA9IHZpZXcucG9zQXRET00odGFyZ2V0KTtcbiAgICAgIGxldCBhbmNob3I6IG51bWJlciA9IC0xLFxuICAgICAgICBoZWFkOiBudW1iZXIgPSAtMTtcbiAgICAgIHRoaXMuZGVjb3JhdGlvbnMuYmV0d2VlbihlbEZyb20gLSAxLCBlbEZyb20gKyAxLCAoZnJvbSwgdG8sIHZhbHVlKSA9PiB7XG4gICAgICAgIGlmIChlbEZyb20gPj0gZnJvbSAmJiBlbEZyb20gPD0gdG8pIHtcbiAgICAgICAgICBpZiAoZnJvbSA9PT0gdG8pIHtcbiAgICAgICAgICAgIGFuY2hvciA9IHZhbHVlLnNwZWMuZnJvbTtcbiAgICAgICAgICAgIGhlYWQgPSB2YWx1ZS5zcGVjLnRvO1xuICAgICAgICAgIH0gZWxzZSAoYW5jaG9yID0gZnJvbSksIChoZWFkID0gdG8pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZiAoYW5jaG9yIDwgMCB8fCBoZWFkIDwgMCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwibm8gcmFuZ2UgZm91bmQgZm9yXCIsIHRhcmdldCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHdhaXQoMCkudGhlbigoKSA9PiB2aWV3LmRpc3BhdGNoKHsgc2VsZWN0aW9uOiB7IGFuY2hvciwgaGVhZCB9IH0pKTtcbiAgICAgIGlmIChldnQuYnV0dG9uID09PSAwIHx8IGV2dC5idXR0b24gPT09IDEpIHtcbiAgICAgICAgY29uc3QgbWVudSA9IGdldE1lbnUoYW5jaG9yLCBoZWFkLCBwbHVnaW4sIHZpZXcpO1xuICAgICAgICB3YWl0KDIwMCkudGhlbigoKSA9PiBtZW51LnNob3dBdE1vdXNlRXZlbnQoZXZ0KSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5jb25zdCB3YWl0ID0gKG1zOiBudW1iZXIpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSk7XG5leHBvcnQgZGVmYXVsdCBnZXRJY29uTGl2ZVByZXZpZXdQbHVnaW47XG4iLCAiaW1wb3J0IHR5cGUgeyBFZGl0b3JWaWV3IH0gZnJvbSBcIkBjb2RlbWlycm9yL3ZpZXdcIjtcbmltcG9ydCB7IERlY29yYXRpb24gfSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuaW1wb3J0IHsgZWRpdG9yTGl2ZVByZXZpZXdGaWVsZCB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgdHlwZSBJY29uU0MgZnJvbSBcIi4uL2lzYy1tYWluXCI7XG5pbXBvcnQgSWNvbldpZGdldCBmcm9tIFwiLi93aWRnZXRcIjtcblxuY29uc3QgaWNvbnMgPSAodmlldzogRWRpdG9yVmlldywgcGx1Z2luOiBJY29uU0MpID0+IHtcbiAgbGV0IHJhbmdlczogW2ljb25JZDogc3RyaW5nLCBmcm9tOiBudW1iZXIsIHRvOiBudW1iZXJdW10gPSBbXTtcbiAgY29uc3QgU0NJbmZvID0gdmlldy5zdGF0ZS5maWVsZChwbHVnaW4uc2hvcnRjb2RlUG9zRmllbGQpO1xuICBmb3IgKGxldCB7IGZyb20sIHRvIH0gb2Ygdmlldy52aXNpYmxlUmFuZ2VzKSB7XG4gICAgU0NJbmZvLmJldHdlZW4oZnJvbSwgdG8sIChmcm9tLCB0bywgeyBpY29uSWQgfSkgPT4ge1xuICAgICAgcmFuZ2VzLnB1c2goW2ljb25JZCwgZnJvbSwgdG9dKTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gRGVjb3JhdGlvbi5zZXQoXG4gICAgcmFuZ2VzLm1hcCgoW2ljb25JZCwgZnJvbSwgdG9dKSA9PiB7XG4gICAgICBjb25zdCB3aWRnZXQgPSBuZXcgSWNvbldpZGdldChpY29uSWQsIHBsdWdpbik7XG4gICAgICBjb25zdCBzcGVjID0geyB3aWRnZXQsIHNpZGU6IC0xLCBmcm9tLCB0byB9O1xuICAgICAgaWYgKHZpZXcuc3RhdGUuZmllbGQoZWRpdG9yTGl2ZVByZXZpZXdGaWVsZCkpIHtcbiAgICAgICAgcmV0dXJuIERlY29yYXRpb24ucmVwbGFjZShzcGVjKS5yYW5nZShmcm9tLCB0byk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gRGVjb3JhdGlvbi53aWRnZXQoc3BlYykucmFuZ2UodG8pO1xuICAgICAgfVxuICAgIH0pLFxuICAgIHRydWUsXG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBpY29ucztcbiIsICJpbXBvcnQgdHlwZSB7IEVkaXRvclZpZXcgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuaW1wb3J0IHsgV2lkZ2V0VHlwZSB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XG5cbmltcG9ydCB0eXBlIEljb25TQyBmcm9tIFwiLi4vaXNjLW1haW5cIjtcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEljb25XaWRnZXQgZXh0ZW5kcyBXaWRnZXRUeXBlIHtcbiAgY29uc3RydWN0b3IocHVibGljIGlkOiBzdHJpbmcsIHB1YmxpYyBwbHVnaW46IEljb25TQykge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBlcShvdGhlcjogSWNvbldpZGdldCkge1xuICAgIHJldHVybiBvdGhlciBpbnN0YW5jZW9mIEljb25XaWRnZXQgJiYgb3RoZXIuaWQgPT09IHRoaXMuaWQ7XG4gIH1cblxuICB0b0RPTSh2aWV3OiBFZGl0b3JWaWV3KSB7XG4gICAgbGV0IHdyYXAgPSBjcmVhdGVTcGFuKHtcbiAgICAgIGNsczogXCJjbS1pc2MtaWNvblwiLFxuICAgICAgYXR0cjogeyBcImFyaWEtbGFiZWxcIjogdGhpcy5pZC5yZXBsYWNlKC9fL2csIFwiIFwiKSB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5wbHVnaW4ucGFja01hbmFnZXIuZ2V0U1ZHSWNvbih0aGlzLmlkKS50aGVuKChzcGFuKSA9PiB7XG4gICAgICBpZiAoIXNwYW4pIHtcbiAgICAgICAgd3JhcC5hcHBlbmQoYDoke3RoaXMuaWR9OmApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3Bhbi5jbGFzc0xpc3QuZm9yRWFjaCgoY2xzKSA9PiB3cmFwLmFkZENsYXNzKGNscykpO1xuICAgICAgICB3cmFwLnJlcGxhY2VDaGlsZHJlbiguLi5zcGFuLmNoaWxkTm9kZXMpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB3cmFwO1xuICB9XG5cbiAgaWdub3JlRXZlbnQoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iLCAiaW1wb3J0IHsgRWRpdG9yVmlldyB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5pbXBvcnQgeyBNZW51IH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCBJY29uU0MgZnJvbSBcIi4uL2lzYy1tYWluXCI7XG5cbmNvbnN0IGdldE1lbnUgPSAoXG4gIHN0YXJ0OiBudW1iZXIsXG4gIGVuZDogbnVtYmVyLFxuICBwbHVnaW46IEljb25TQyxcbiAgdmlldzogRWRpdG9yVmlldyxcbikgPT4ge1xuICByZXR1cm4gbmV3IE1lbnUoKVxuICAgIC5hZGRJdGVtKChpdGVtKSA9PlxuICAgICAgaXRlbVxuICAgICAgICAuc2V0SWNvbihcImltYWdlLWdseXBoXCIpXG4gICAgICAgIC5zZXRUaXRsZShcIkNoYW5nZSBJY29uXCIpXG4gICAgICAgIC5vbkNsaWNrKGFzeW5jICgpID0+IHtcbiAgICAgICAgICBjb25zdCBpY29uID0gYXdhaXQgcGx1Z2luLmFwaS5nZXRJY29uRnJvbVVzZXIoKTtcbiAgICAgICAgICBpZiAoIWljb24pIHJldHVybjtcbiAgICAgICAgICB2aWV3LmRpc3BhdGNoKHtcbiAgICAgICAgICAgIGNoYW5nZXM6IHsgZnJvbTogc3RhcnQsIHRvOiBlbmQsIGluc2VydDogYDoke2ljb24uaWR9OmAgfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSksXG4gICAgKVxuICAgIC5hZGRJdGVtKChpdGVtKSA9PlxuICAgICAgaXRlbVxuICAgICAgICAuc2V0SWNvbihcInRyYXNoXCIpXG4gICAgICAgIC5zZXRUaXRsZShcIkRlbGV0ZSBJY29uXCIpXG4gICAgICAgIC5vbkNsaWNrKCgpID0+IHtcbiAgICAgICAgICB2aWV3LmRpc3BhdGNoKHtcbiAgICAgICAgICAgIGNoYW5nZXM6IHsgZnJvbTogc3RhcnQsIHRvOiBlbmQsIGluc2VydDogXCJcIiB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KSxcbiAgICApO1xufTtcbmV4cG9ydCBkZWZhdWx0IGdldE1lbnU7XG4iLCAiaW1wb3J0IHR5cGUgSWNvblNDIGZyb20gXCIuLi9pc2MtbWFpblwiO1xuaW1wb3J0IGdldEljb25MaXZlUHJldmlld1BsdWdpbiBmcm9tIFwiLi92aWV3LXBsdWdpblwiO1xuXG5jb25zdCBzZXR1cEljb25QbHVnaW4gPSAocGx1Z2luOiBJY29uU0MpID0+IHtcbiAgcGx1Z2luLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKFtcbiAgICBwbHVnaW4uc2hvcnRjb2RlUG9zRmllbGQsXG4gICAgZ2V0SWNvbkxpdmVQcmV2aWV3UGx1Z2luKHBsdWdpbiksXG4gIF0pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgc2V0dXBJY29uUGx1Z2luO1xuIiwgImltcG9ydCB7IHN5bnRheFRyZWUgfSBmcm9tIFwiQGNvZGVtaXJyb3IvbGFuZ3VhZ2VcIjtcbmltcG9ydCB7IHRva2VuQ2xhc3NOb2RlUHJvcCB9IGZyb20gXCJAY29kZW1pcnJvci9sYW5ndWFnZVwiO1xuaW1wb3J0IHtcbiAgUmFuZ2UsXG4gIFJhbmdlU2V0LFxuICBSYW5nZVNldEJ1aWxkZXIsXG4gIFJhbmdlVmFsdWUsXG59IGZyb20gXCJAY29kZW1pcnJvci9zdGF0ZVwiO1xuaW1wb3J0IHsgRWRpdG9yU3RhdGUsIFN0YXRlRmllbGQgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivc3RhdGVcIjtcbmltcG9ydCB0eXBlIHsgTm9kZVR5cGUgfSBmcm9tIFwiQGxlemVyL2NvbW1vblwiO1xuXG5pbXBvcnQge1xuICBnZXRHbG9iYWxSZWdleHAsXG4gIFJFX1NIT1JUQ09ERSxcbiAgc3RyaXBDb2xvbnMsXG59IGZyb20gXCIuLi9pY29uLXBhY2tzL3V0aWxzXCI7XG5pbXBvcnQgdHlwZSBJY29uU0MgZnJvbSBcIi4uL2lzYy1tYWluXCI7XG5pbXBvcnQgVW5pb25SYW5nZXMgZnJvbSBcIi4uL21vZHVsZXMvdW5pb25cIjtcblxuY2xhc3MgU2hvcnRjb2RlUG9zIGV4dGVuZHMgUmFuZ2VWYWx1ZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZXh0OiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuICB9XG4gIGdldCBpY29uSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc3RyaXBDb2xvbnModGhpcy50ZXh0KTtcbiAgfVxuICBlcShvdGhlcjogUmFuZ2VWYWx1ZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBvdGhlciBpbnN0YW5jZW9mIFNob3J0Y29kZVBvcyAmJiBvdGhlci50ZXh0ID09PSB0aGlzLnRleHQ7XG4gIH1cbn1cblxuY29uc3QgYWxsb3dlZFR5cGVzID0gW1xuICBcImxpbmstYWxpYXNcIixcbiAgXCJjb21tZW50XCIsXG4gIFwiaGVhZGVyXCIsXG4gIFwic3Ryb25nXCIsXG4gIFwiZW1cIixcbiAgXCJzdHJpa2V0aHJvdWdoXCIsXG4gIFwicXVvdGVcIixcbiAgXCJsaW5rXCIsXG4gIFwibGlzdC0xXCIsXG4gIFwibGlzdC0yXCIsXG4gIFwibGlzdC0zXCIsXG4gIFwiaGlnaGxpZ2h0XCIsXG4gIFwiaG1kLWZvb3RyZWYyXCIsXG4gIFwiZm9vdHJlZlwiLFxuXTtcbmNvbnN0IGV4Y2x1ZGVUeXBlcyA9IFtcImZvcm1hdHRpbmdcIiwgXCJjb21tZW50LXN0YXJ0XCIsIFwiY29tbWVudC1lbmRcIl07XG5jb25zdCBzaG91bGROb2RlSGF2ZUljb24gPSAodHlwZTogTm9kZVR5cGUpID0+IHtcbiAgY29uc3Qgbm9kZVByb3BzID0gdHlwZS5wcm9wKHRva2VuQ2xhc3NOb2RlUHJvcCk7XG4gIGlmICghbm9kZVByb3BzKSByZXR1cm4gZmFsc2U7XG4gIGNvbnN0IHByb3BzID0gbmV3IFNldChub2RlUHJvcHM/LnNwbGl0KFwiIFwiKSk7XG4gIHJldHVybiAoXG4gICAgZXhjbHVkZVR5cGVzLmV2ZXJ5KCh0KSA9PiAhcHJvcHMuaGFzKHQpKSAmJlxuICAgIGFsbG93ZWRUeXBlcy5zb21lKCh0KSA9PiBwcm9wcy5oYXModCkpXG4gICk7XG59O1xuXG5jb25zdCBnZXRTaG9ydGNvZGVQb3NGaWVsZCA9IChwbHVnaW46IEljb25TQykgPT4ge1xuICBjb25zdCBnZXRTaG9ydGNvZGVSYW5nZXMgPSAoXG4gICAgc3RhdGU6IEVkaXRvclN0YXRlLFxuICAgIGZyb206IG51bWJlcixcbiAgICB0bzogbnVtYmVyLFxuICAgIGFkZFRvUmFuZ2VBcnI6IChmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIsIHZhbHVlOiBTaG9ydGNvZGVQb3MpID0+IHZvaWQsXG4gICkgPT4ge1xuICAgIGNvbnN0IHNhdmVSYW5nZSA9IChmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIpOiB2b2lkID0+IHtcbiAgICAgIGNvbnN0IHRleHQgPSBzdGF0ZS5kb2Muc2xpY2VTdHJpbmcoZnJvbSwgdG8pO1xuICAgICAgaWYgKCF0ZXh0LnRyaW0oKSkgcmV0dXJuO1xuICAgICAgZm9yIChjb25zdCB7IDA6IHJhd0NvZGUsIGluZGV4OiBvZmZzZXQgfSBvZiB0ZXh0Lm1hdGNoQWxsKFxuICAgICAgICBnZXRHbG9iYWxSZWdleHAoUkVfU0hPUlRDT0RFKSxcbiAgICAgICkpIHtcbiAgICAgICAgaWYgKHBsdWdpbi5wYWNrTWFuYWdlci5oYXNJY29uKHN0cmlwQ29sb25zKHJhd0NvZGUpKSkge1xuICAgICAgICAgIGFkZFRvUmFuZ2VBcnIoXG4gICAgICAgICAgICBmcm9tICsgb2Zmc2V0ISxcbiAgICAgICAgICAgIGZyb20gKyBvZmZzZXQhICsgcmF3Q29kZS5sZW5ndGgsXG4gICAgICAgICAgICBuZXcgU2hvcnRjb2RlUG9zKHJhd0NvZGUpLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIGxldCBwcmV2VG8gPSBmcm9tO1xuICAgIHN5bnRheFRyZWUoc3RhdGUpLml0ZXJhdGUoe1xuICAgICAgZnJvbTogZnJvbSAtIDEsXG4gICAgICB0bzogdG8gKyAxLFxuICAgICAgZW50ZXI6ICh7IHR5cGUsIGZyb20sIHRvIH0pID0+IHtcbiAgICAgICAgaWYgKHR5cGUubmFtZSA9PT0gXCJEb2N1bWVudFwiKSByZXR1cm47XG4gICAgICAgIGlmIChmcm9tICE9PSBwcmV2VG8pIHNhdmVSYW5nZShwcmV2VG8sIGZyb20pO1xuICAgICAgICBwcmV2VG8gPSB0bztcbiAgICAgICAgaWYgKHNob3VsZE5vZGVIYXZlSWNvbih0eXBlKSkge1xuICAgICAgICAgIHNhdmVSYW5nZShmcm9tLCB0byk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSk7XG4gICAgaWYgKHByZXZUbyAhPT0gdG8pIHNhdmVSYW5nZShwcmV2VG8sIHRvKTtcbiAgfTtcbiAgcmV0dXJuIFN0YXRlRmllbGQuZGVmaW5lPFJhbmdlU2V0PFNob3J0Y29kZVBvcz4+KHtcbiAgICBjcmVhdGU6IChzdGF0ZSkgPT4ge1xuICAgICAgbGV0IHJhbmdlc2V0ID0gbmV3IFJhbmdlU2V0QnVpbGRlcjxTaG9ydGNvZGVQb3M+KCk7XG4gICAgICBnZXRTaG9ydGNvZGVSYW5nZXMoXG4gICAgICAgIHN0YXRlLFxuICAgICAgICAwLFxuICAgICAgICBzdGF0ZS5kb2MubGVuZ3RoLFxuICAgICAgICByYW5nZXNldC5hZGQuYmluZChyYW5nZXNldCksXG4gICAgICApO1xuICAgICAgcmV0dXJuIHJhbmdlc2V0LmZpbmlzaCgpO1xuICAgIH0sXG4gICAgdXBkYXRlOiAocmFuZ2VzZXQsIHRyKSA9PiB7XG4gICAgICBpZiAoIXRyLmRvY0NoYW5nZWQpIHJldHVybiByYW5nZXNldDtcbiAgICAgIHJhbmdlc2V0ID0gcmFuZ2VzZXQubWFwKHRyLmNoYW5nZXMpO1xuICAgICAgbGV0IGNoYW5nZWRMaW5lczogW2xpbmVTdGFydDogbnVtYmVyLCBsaW5lRW5kOiBudW1iZXJdW10gPSBbXTtcbiAgICAgIHRyLmNoYW5nZXMuaXRlckNoYW5nZWRSYW5nZXMoKF9mLCBfdCwgZnJvbSwgdG8pID0+IHtcbiAgICAgICAgLy8gbGluZXMgdGhhdCBoYXZlIGNoYW5nZWRcbiAgICAgICAgY2hhbmdlZExpbmVzLnB1c2goW1xuICAgICAgICAgIHRyLnN0YXRlLmRvYy5saW5lQXQoZnJvbSkubnVtYmVyLFxuICAgICAgICAgIHRyLnN0YXRlLmRvYy5saW5lQXQodG8pLm51bWJlcixcbiAgICAgICAgXSk7XG4gICAgICB9KTtcbiAgICAgIGxldCBuZXdTaG9ydGNvZGVSYW5nZXM6IFJhbmdlPFNob3J0Y29kZVBvcz5bXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBbc3RhcnQsIGVuZF0gb2YgVW5pb25SYW5nZXMoY2hhbmdlZExpbmVzKSkge1xuICAgICAgICBjb25zdCB7IGZyb20gfSA9IHRyLnN0YXRlLmRvYy5saW5lKHN0YXJ0KSxcbiAgICAgICAgICB7IHRvIH0gPSB0ci5zdGF0ZS5kb2MubGluZShlbmQpO1xuICAgICAgICAvLyBmaWx0ZXIgb3V0IHNob3J0Y29kZSBwb3MgaW4gY3VycmVudCBsaW5lIHJhbmdlXG4gICAgICAgIHJhbmdlc2V0ID0gcmFuZ2VzZXQudXBkYXRlKHtcbiAgICAgICAgICBmaWx0ZXJGcm9tOiBmcm9tLFxuICAgICAgICAgIGZpbHRlclRvOiB0byxcbiAgICAgICAgICBmaWx0ZXI6ICgpID0+IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgICAgLy8gcmVjb21wdXRlIHNob3J0Y29kZSBwb3MgaW4gY3VycmVudCBsaW5lIHJhbmdlXG4gICAgICAgIGdldFNob3J0Y29kZVJhbmdlcyh0ci5zdGF0ZSwgZnJvbSwgdG8sIChmcm9tLCB0bywgdmFsdWUpID0+IHtcbiAgICAgICAgICBuZXdTaG9ydGNvZGVSYW5nZXMucHVzaCh2YWx1ZS5yYW5nZShmcm9tLCB0bykpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJhbmdlc2V0ID0gcmFuZ2VzZXQudXBkYXRlKHsgYWRkOiBuZXdTaG9ydGNvZGVSYW5nZXMgfSk7XG4gICAgICByZXR1cm4gcmFuZ2VzZXQ7XG4gICAgfSxcbiAgfSk7XG59O1xuZXhwb3J0IHR5cGUgU2hvcnRjb2RlUG9zRmllbGQgPSBTdGF0ZUZpZWxkPFJhbmdlU2V0PFNob3J0Y29kZVBvcz4+O1xuXG5leHBvcnQgZGVmYXVsdCBnZXRTaG9ydGNvZGVQb3NGaWVsZDtcbiIsICJpbXBvcnQgeyBleHRlbnNpb24sIGxvb2t1cCB9IGZyb20gXCJtaW1lLXR5cGVzXCI7XG5pbXBvcnQgZW1vamkgZnJvbSBcIm5vZGUtZW1vamlcIjtcbmltcG9ydCB7IGV4dG5hbWUgfSBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgeyBGaWxlSWNvbkluZm8sIEljb25JbmZvIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuZXhwb3J0IHR5cGUgRW50cmllc0Zyb21SZWNvcmQ8VD4gPSBba2V5OiBrZXlvZiBULCB2YWx1ZTogVFtrZXlvZiBUXV1bXTtcblxuZXhwb3J0IGNvbnN0IE9ianRvRW50cmllcyA9IDxUIGV4dGVuZHMgT2JqZWN0PihvYmo6IFQpID0+XG4gIE9iamVjdC5lbnRyaWVzKG9iaikgYXMgRW50cmllc0Zyb21SZWNvcmQ8VD47XG5cbi8qKlxuICogUmVtb3ZlcyBjb2xvbnMgb24gZWl0aGVyIHNpZGVcbiAqIG9mIHRoZSBzdHJpbmcgaWYgcHJlc2VudFxuICogQHBhcmFtICB7c3RyaW5nfSBzdHJcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuXG5leHBvcnQgY29uc3Qgc3RyaXBDb2xvbnMgPSAoc3RyOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICB2YXIgY29sb25JbmRleCA9IHN0ci5pbmRleE9mKFwiOlwiKTtcbiAgaWYgKGNvbG9uSW5kZXggPiAtMSkge1xuICAgIC8vIDplbW9qaTogKGh0dHA6Ly93d3cuZW1vamktY2hlYXQtc2hlZXQuY29tLylcbiAgICBpZiAoY29sb25JbmRleCA9PT0gc3RyLmxlbmd0aCAtIDEpIHtcbiAgICAgIHN0ciA9IHN0ci5zdWJzdHJpbmcoMCwgY29sb25JbmRleCk7XG4gICAgICByZXR1cm4gc3RyaXBDb2xvbnMoc3RyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RyID0gc3RyLnN1YnN0cmluZyhjb2xvbkluZGV4ICsgMSk7XG4gICAgICByZXR1cm4gc3RyaXBDb2xvbnMoc3RyKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RyO1xufTtcblxuZXhwb3J0IGNvbnN0IFBhY2tQcmVmaXhQYXR0ZXJuID0gL14oW0EtWmEtejAtOV0rPylfLztcblxuZXhwb3J0IGNvbnN0IGdldFBhY2tuTmFtZUZyb21JZCA9IChcbiAgaWQ6IHN0cmluZyxcbik6IHsgcGFjazogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfSB8IG51bGwgPT4ge1xuICBpZiAoZW1vamkuaGFzRW1vamkoaWQpKSByZXR1cm4geyBwYWNrOiBcImVtb2ppXCIsIG5hbWU6IGlkIH07XG4gIGNvbnN0IG1hdGNoID0gaWQubWF0Y2goUGFja1ByZWZpeFBhdHRlcm4pO1xuICBpZiAoIW1hdGNoKSB7XG4gICAgY29uc29sZS5lcnJvcihcIk5vIHZhaWxkIHBhY2sgaWQgZm91bmQgaW46IFwiLCBpZCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgW3N0ciwgcGFja25hbWVdID0gbWF0Y2g7XG4gIHJldHVybiB7IHBhY2s6IHBhY2tuYW1lLCBuYW1lOiBpZC5zdWJzdHJpbmcoc3RyLmxlbmd0aCkgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBzYW5pdGl6ZUlkID0gKGlkOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsID0+IHtcbiAgY29uc3QgcmVzdWx0ID0gZ2V0UGFja25OYW1lRnJvbUlkKGlkKTtcbiAgaWYgKCFyZXN1bHQpIHtcbiAgICBjb25zb2xlLmxvZyhcImZhaWxlZCB0byByZW5hbWUgaWNvbjogaWQgJXMgaW52YWxpZFwiLCBpZCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIGAke3Jlc3VsdC5wYWNrfV8ke3Nhbml0aXplTmFtZShyZXN1bHQubmFtZSl9YDtcbn07XG5leHBvcnQgY29uc3Qgc2FuaXRpemVOYW1lID0gKG5hbWU6IHN0cmluZyk6IHN0cmluZyA9PlxuICBuYW1lLnRyaW0oKS5yZXBsYWNlKC9bIC1dKy9nLCBcIl9cIikucmVwbGFjZSgvXFxzKy9nLCBcIlwiKS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuXG5leHBvcnQgY29uc3QgU3VwcG9ydGVkSWNvbkV4dCA9IFtcbiAgXCIuYm1wXCIsXG4gIFwiLnBuZ1wiLFxuICBcIi5qcGdcIixcbiAgXCIuanBlZ1wiLFxuICBcIi5naWZcIixcbiAgXCIuc3ZnXCIsXG4gIFwiLndlYnBcIixcbl0gYXMgY29uc3Q7XG5leHBvcnQgY29uc3QgaWNvbkZpbGVQYXR0ZXJuID0gL15bXFx3LV0rXFwuKD86Ym1wfHBuZ3xqcGd8anBlZ3xnaWZ8c3ZnfHdlYnApJC87XG5leHBvcnQgY29uc3QgZXh0UGF0dGVybiA9IC9cXC4oPzpibXB8cG5nfGpwZ3xqcGVnfGdpZnxzdmd8d2VicCkkLztcbmNvbnN0IG1pbWVzID0gU3VwcG9ydGVkSWNvbkV4dC5tYXAoKGV4dCkgPT4gbG9va3VwKGV4dCkpO1xuZXhwb3J0IGNvbnN0IGdldEljb25zRnJvbUZpbGVMaXN0ID0gYXN5bmMgKFxuICBsaXN0OiBGaWxlTGlzdCB8IG51bGwgfCB1bmRlZmluZWQsXG4pOiBQcm9taXNlPHsgbmFtZTogc3RyaW5nOyBleHQ6IHN0cmluZzsgZGF0YTogQXJyYXlCdWZmZXIgfVtdIHwgbnVsbD4gPT4ge1xuICBpZiAoIWxpc3QgfHwgbGlzdC5sZW5ndGggPD0gMCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IGdldEljb24gPSBhc3luYyAoZmlsZTogRmlsZSkgPT4gKHtcbiAgICBuYW1lOiBmaWxlLm5hbWUucmVwbGFjZShleHRQYXR0ZXJuLCBcIlwiKSxcbiAgICBleHQ6IFwiLlwiICsgKGV4dGVuc2lvbihmaWxlLnR5cGUpIGFzIHN0cmluZyksXG4gICAgZGF0YTogYXdhaXQgZmlsZS5hcnJheUJ1ZmZlcigpLFxuICB9KTtcbiAgbGV0IHByb21pc2VzID0gW10gYXMgUmV0dXJuVHlwZTx0eXBlb2YgZ2V0SWNvbj5bXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgZmlsZSA9IGxpc3RbaV07XG4gICAgaWYgKG1pbWVzLmluY2x1ZGVzKGZpbGUudHlwZSkpIHtcbiAgICAgIHByb21pc2VzLnB1c2goZ2V0SWNvbihmaWxlKSk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgcmV0dXJuIHJlc3VsdC5sZW5ndGggPiAwID8gcmVzdWx0IDogbnVsbDtcbn07XG5cbmltcG9ydCBjbGFzc05hbWVzIGZyb20gXCJjbGFzc25hbWVzXCI7XG5pbXBvcnQgY2xvbmVSZWdleHAgZnJvbSBcImNsb25lLXJlZ2V4cFwiO1xuXG5pbXBvcnQgSWNvblNDIGZyb20gXCIuLi9pc2MtbWFpblwiO1xuXG5leHBvcnQgY29uc3QgUkVfU0hPUlRDT0RFID0gLzpcXCsxOnw6LTE6fDpbXFx3LV0rOi87XG5leHBvcnQgY29uc3QgZ2V0R2xvYmFsUmVnZXhwID0gKHBhdHRlcm46IFJlZ0V4cCkgPT5cbiAgY2xvbmVSZWdleHAocGF0dGVybiwgeyBnbG9iYWw6IHRydWUgfSk7XG5cbmV4cG9ydCBjb25zdCBnZXRDbHNGb3JJY29uID0gKGljb246IEljb25JbmZvKSA9PlxuICBjbGFzc05hbWVzKFtcImlzYy1pY29uXCIsIGBpc2MtJHtpY29uLnBhY2t9YF0pO1xuIiwgImNvbnN0IHt0b1N0cmluZ30gPSBPYmplY3QucHJvdG90eXBlO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1JlZ2V4cCh2YWx1ZSkge1xuXHRyZXR1cm4gdG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0IFJlZ0V4cF0nO1xufVxuIiwgImltcG9ydCBpc1JlZ2V4cCBmcm9tICdpcy1yZWdleHAnO1xuXG5jb25zdCBmbGFnTWFwID0ge1xuXHRnbG9iYWw6ICdnJyxcblx0aWdub3JlQ2FzZTogJ2knLFxuXHRtdWx0aWxpbmU6ICdtJyxcblx0ZG90QWxsOiAncycsXG5cdHN0aWNreTogJ3knLFxuXHR1bmljb2RlOiAndSdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNsb25lZFJlZ2V4cChyZWdleHAsIG9wdGlvbnMgPSB7fSkge1xuXHRpZiAoIWlzUmVnZXhwKHJlZ2V4cCkpIHtcblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBhIFJlZ0V4cCBpbnN0YW5jZScpO1xuXHR9XG5cblx0Y29uc3QgZmxhZ3MgPSBPYmplY3Qua2V5cyhmbGFnTWFwKS5tYXAoZmxhZyA9PiAoXG5cdFx0KHR5cGVvZiBvcHRpb25zW2ZsYWddID09PSAnYm9vbGVhbicgPyBvcHRpb25zW2ZsYWddIDogcmVnZXhwW2ZsYWddKSA/IGZsYWdNYXBbZmxhZ10gOiAnJ1xuXHQpKS5qb2luKCcnKTtcblxuXHRjb25zdCBjbG9uZWRSZWdleHAgPSBuZXcgUmVnRXhwKG9wdGlvbnMuc291cmNlIHx8IHJlZ2V4cC5zb3VyY2UsIGZsYWdzKTtcblxuXHRjbG9uZWRSZWdleHAubGFzdEluZGV4ID0gdHlwZW9mIG9wdGlvbnMubGFzdEluZGV4ID09PSAnbnVtYmVyJyA/XG5cdFx0b3B0aW9ucy5sYXN0SW5kZXggOlxuXHRcdHJlZ2V4cC5sYXN0SW5kZXg7XG5cblx0cmV0dXJuIGNsb25lZFJlZ2V4cDtcbn1cbiIsICJ0eXBlIFBvc1JhbmdlID0gW3N0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyXTtcblxuY29uc3QgaXNSYW5nZU92ZXJsYXAgPSAoYTogUG9zUmFuZ2UsIGI6IFBvc1JhbmdlKSA9PlxuICBpc1dpdGhpblJhbmdlKGEsIGJbMF0pIHx8IGlzV2l0aGluUmFuZ2UoYSwgYlsxXSk7XG5jb25zdCBpc1dpdGhpblJhbmdlID0gKHI6IFBvc1JhbmdlLCBwb3M6IG51bWJlcikgPT4gclswXSA8IHBvcyAmJiByWzFdID4gcG9zO1xuXG5jb25zdCBtZXJnZVJhbmdlcyA9IChhOiBQb3NSYW5nZSwgYjogUG9zUmFuZ2UpID0+IHtcbiAgY29uc3Qgc3RhcnQgPSBpc1dpdGhpblJhbmdlKGEsIGJbMF0pID8gYVswXSA6IGJbMF0sXG4gICAgZW5kID0gaXNXaXRoaW5SYW5nZShhLCBiWzFdKSA/IGFbMV0gOiBiWzFdO1xuICByZXR1cm4gW3N0YXJ0LCBlbmRdIGFzIFBvc1JhbmdlO1xufTtcblxuY29uc3QgVW5pb25SYW5nZXMgPSAocmFuZ2VzOiBQb3NSYW5nZVtdKSA9PlxuICByYW5nZXNcbiAgICAuc29ydCgoYSwgYikgPT4gYVswXSAtIGJbMF0pXG4gICAgLnJlZHVjZSgoYXJyLCByYW5nZSkgPT4ge1xuICAgICAgbGV0IGluZGV4ID0gYXJyLmZpbmRJbmRleCgocmFuZ2VUb0NoZWNrKSA9PlxuICAgICAgICBpc1JhbmdlT3ZlcmxhcChyYW5nZVRvQ2hlY2ssIHJhbmdlKSxcbiAgICAgICk7XG4gICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgIGFycltpbmRleF0gPSBtZXJnZVJhbmdlcyhhcnJbaW5kZXhdLCByYW5nZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhcnIucHVzaChyYW5nZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyO1xuICAgIH0sIFtdIGFzIFBvc1JhbmdlW10pO1xuXG5leHBvcnQgZGVmYXVsdCBVbmlvblJhbmdlcztcbiIsICJpbXBvcnQgeyBTdGF0IH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB0eXBlIEljb25TQyBmcm9tIFwiLi4vaXNjLW1haW5cIjtcblxuZGVjbGFyZSBnbG9iYWwge1xuICBjb25zdCBET01QdXJpZnk6IHR5cGVvZiBpbXBvcnQoXCJkb21wdXJpZnlcIik7XG59XG5cbmludGVyZmFjZSBJY29uQ2FjaGUge1xuICBjdGltZTogbnVtYmVyO1xuICBtdGltZTogbnVtYmVyO1xuICBzaXplOiBudW1iZXI7XG4gIHN2ZzogU1ZHRWxlbWVudDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmlsZUljb25DYWNoZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwbHVnaW46IEljb25TQykge31cbiAgcHJpdmF0ZSBnZXQgdmF1bHQoKSB7XG4gICAgcmV0dXJuIHRoaXMucGx1Z2luLmFwcC52YXVsdDtcbiAgfVxuICBwcml2YXRlIGNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIEljb25DYWNoZT4oKTtcbiAgYXN5bmMgZ2V0SWNvbihub3JtYWxpemVkUGF0aDogc3RyaW5nKTogUHJvbWlzZTxTVkdFbGVtZW50IHwgbnVsbD4ge1xuICAgIGNvbnN0IHN0YXQgPSBhd2FpdCB0aGlzLnZhdWx0LmFkYXB0ZXIuc3RhdChub3JtYWxpemVkUGF0aCk7XG4gICAgaWYgKCFzdGF0IHx8IHN0YXQudHlwZSAhPT0gXCJmaWxlXCIpIHJldHVybiBudWxsO1xuICAgIGlmICh0aGlzLmNhY2hlLmhhcyhub3JtYWxpemVkUGF0aCkpIHtcbiAgICAgIGNvbnN0IGNhY2hlID0gdGhpcy5jYWNoZS5nZXQobm9ybWFsaXplZFBhdGgpITtcbiAgICAgIGlmIChcbiAgICAgICAgY2FjaGUuY3RpbWUgPT09IHN0YXQuY3RpbWUgJiZcbiAgICAgICAgY2FjaGUubXRpbWUgPT09IHN0YXQubXRpbWUgJiZcbiAgICAgICAgY2FjaGUuc2l6ZSA9PT0gc3RhdC5zaXplXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlLnN2Zy5jbG9uZU5vZGUodHJ1ZSkgYXMgU1ZHRWxlbWVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3Qgc3ZnID0gYXdhaXQgdGhpcy5yZWFkSW50b0NhY2hlKG5vcm1hbGl6ZWRQYXRoLCBzdGF0KTtcbiAgICByZXR1cm4gc3ZnLmNsb25lTm9kZSh0cnVlKSBhcyBTVkdFbGVtZW50O1xuICB9XG4gIHByaXZhdGUgYXN5bmMgcmVhZEludG9DYWNoZShcbiAgICBub3JtYWxpemVkUGF0aDogc3RyaW5nLFxuICAgIHN0YXQ6IFN0YXQsXG4gICk6IFByb21pc2U8U1ZHRWxlbWVudD4ge1xuICAgIGNvbnN0IGRhdGEgPSBET01QdXJpZnkuc2FuaXRpemUoXG4gICAgICAgIGF3YWl0IHRoaXMudmF1bHQuYWRhcHRlci5yZWFkKG5vcm1hbGl6ZWRQYXRoKSxcbiAgICAgICksXG4gICAgICBzdmcgPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKGRhdGEsIFwiaW1hZ2Uvc3ZnK3htbFwiKVxuICAgICAgICAuZG9jdW1lbnRFbGVtZW50IGFzIHVua25vd24gYXMgU1ZHRWxlbWVudDtcbiAgICB0aGlzLmNhY2hlLnNldChub3JtYWxpemVkUGF0aCwgeyAuLi5zdGF0LCBzdmcgfSk7XG4gICAgcmV0dXJuIHN2ZztcbiAgfVxuICByZWZyZXNoKCkge1xuICAgIGNvbnN0IHJlZnJlc2ggPSBhc3luYyAocGF0aDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBzdGF0ID0gYXdhaXQgdGhpcy52YXVsdC5hZGFwdGVyLnN0YXQocGF0aCk7XG4gICAgICBpZiAoIXN0YXQgfHwgc3RhdC50eXBlICE9PSBcImZpbGVcIikge1xuICAgICAgICB0aGlzLmNhY2hlLmRlbGV0ZShwYXRoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IHRoaXMucmVhZEludG9DYWNoZShwYXRoLCBzdGF0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXRoO1xuICAgIH07XG4gICAgcmV0dXJuIFByb21pc2UuYWxsU2V0dGxlZChbLi4udGhpcy5jYWNoZS5rZXlzKCldLm1hcChyZWZyZXNoKSk7XG4gIH1cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy5jYWNoZS5jbGVhcigpO1xuICB9XG59XG4iLCAiaW1wb3J0IFwiLi9pY29uLmxlc3NcIjtcblxuaW1wb3J0IGFzc2VydE5ldmVyIGZyb20gXCJhc3NlcnQtbmV2ZXJcIjtcbmltcG9ydCBGdXNlIGZyb20gXCJmdXNlLmpzXCI7XG5pbXBvcnQgSlNaaXAgZnJvbSBcImpzemlwXCI7XG5pbXBvcnQgZW1vamkgZnJvbSBcIm5vZGUtZW1vamlcIjtcbmltcG9ydCB7IEV2ZW50UmVmLCBFdmVudHMsIG5vcm1hbGl6ZVBhdGgsIE5vdGljZSwgUGxhdGZvcm0gfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCB7IGJhc2VuYW1lLCBqb2luIH0gZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IEljb25TQyBmcm9tIFwiLi4vaXNjLW1haW5cIjtcbmltcG9ydCB7IGV2dFByZWZpeCwgUE1FdmVudHMgfSBmcm9tIFwiLi4vdHlwaW5ncy9hcGlcIjtcbmltcG9ydCB7XG4gIEJ1aWx0SW5JY29uSWRzLFxuICBCdWlsdEluSWNvblBhY2tuYW1lcyxcbiAgQnVpbHRJblNWR0ljb25QYWNrcyxcbn0gZnJvbSBcIi4vYnVpbHQtaW5zXCI7XG5pbXBvcnQgRW1vamlJY29uRGF0YSBmcm9tIFwiLi9lbW9qaVwiO1xuaW1wb3J0IEZpbGVJY29uRGF0YSBmcm9tIFwiLi9maWxlLWljb25cIjtcbmltcG9ydCB7IEJ1bHRpSW5JY29uRGF0YSwgSWNvbkRhdGEsIEljb25JbmZvLCBpc0ZpbGVJY29uSW5mbyB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQge1xuICBleHRQYXR0ZXJuLFxuICBnZXRJY29uc0Zyb21GaWxlTGlzdCxcbiAgaWNvbkZpbGVQYXR0ZXJuLFxuICBzYW5pdGl6ZUlkLFxuICBzdHJpcENvbG9ucyxcbn0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgQ1VTVE9NX0lDT05fUEFUSCA9IFwiL2ljb25zLmpzb25cIjtcbmNvbnN0IENVU1RPTV9JQ09OX0RJUiA9IFwiaWNvbnNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGFja01hbmFnZXIgZXh0ZW5kcyBFdmVudHMge1xuICBwcml2YXRlIF9jdXN0b21JY29ucyA9IG5ldyBNYXA8c3RyaW5nLCBGaWxlSWNvbkRhdGE+KCk7XG4gIHByaXZhdGUgX2N1dG9tc0ljb25QYWNrbmFtZXM6IFNldDxzdHJpbmc+ID0gbmV3IFNldCgpO1xuICBnZXQgdmF1bHQoKSB7XG4gICAgcmV0dXJuIHRoaXMucGx1Z2luLmFwcC52YXVsdDtcbiAgfVxuICBhc3luYyByZW5hbWVJY29uRmlsZShcbiAgICBpZDogc3RyaW5nLFxuICAgIGV4dDogc3RyaW5nLFxuICAgIG5ld0lkOiBzdHJpbmcsXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgbmV3UGF0aCA9IGpvaW4odGhpcy5jdXN0b21JY29uc0RpciwgbmV3SWQgKyBleHQpLFxuICAgICAgcGF0aCA9IGpvaW4odGhpcy5jdXN0b21JY29uc0RpciwgaWQgKyBleHQpO1xuICAgIGF3YWl0IHRoaXMudmF1bHQuYWRhcHRlci5yZW5hbWUocGF0aCwgbmV3UGF0aCk7XG4gICAgcmV0dXJuIG5ld1BhdGg7XG4gIH1cbiAgcmVtb3ZlSWNvbkZpbGUoaWQ6IHN0cmluZywgZXh0OiBzdHJpbmcpIHtcbiAgICBjb25zdCBwYXRoID0gam9pbih0aGlzLmN1c3RvbUljb25zRGlyLCBpZCArIGV4dCk7XG4gICAgcmV0dXJuIHRoaXMudmF1bHQuYWRhcHRlci5yZW1vdmUocGF0aCk7XG4gIH1cbiAgYXN5bmMgYWRkSWNvbihpZDogc3RyaW5nLCBleHQ6IHN0cmluZywgZGF0YTogQXJyYXlCdWZmZXIpIHtcbiAgICBjb25zdCBwYXRoID0gam9pbih0aGlzLmN1c3RvbUljb25zRGlyLCBpZCArIGV4dCk7XG4gICAgYXdhaXQgdGhpcy52YXVsdC5hZGFwdGVyLndyaXRlQmluYXJ5KHBhdGgsIGRhdGEpO1xuICAgIHJldHVybiBwYXRoO1xuICB9XG4gIGdldCBjdXN0b21QYWNrbmFtZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbLi4udGhpcy5fY3V0b21zSWNvblBhY2tuYW1lc107XG4gIH1cbiAgZ2V0IGN1c3RvbUljb25zRmlsZVBhdGgoKSB7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZVBhdGgodGhpcy5wbHVnaW4ubWFuaWZlc3QuZGlyICsgQ1VTVE9NX0lDT05fUEFUSCk7XG4gIH1cbiAgZ2V0IGN1c3RvbUljb25zRGlyKCkge1xuICAgIHJldHVybiBqb2luKHRoaXMudmF1bHQuY29uZmlnRGlyLCBDVVNUT01fSUNPTl9ESVIpO1xuICB9XG4gIGlzUGFja25hbWVFeGlzdHMocGFja25hbWU6IHN0cmluZykge1xuICAgIHJldHVybiAoXG4gICAgICBCdWlsdEluSWNvblBhY2tuYW1lcy5pbmNsdWRlcyhwYWNrbmFtZSkgfHxcbiAgICAgIHRoaXMuX2N1dG9tc0ljb25QYWNrbmFtZXMuaGFzKHBhY2tuYW1lKVxuICAgICk7XG4gIH1cbiAgZ2V0IGVuYWJsZWRQYWNrbmFtZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbLi4uQnVpbHRJbkljb25QYWNrbmFtZXMsIC4uLnRoaXMuX2N1dG9tc0ljb25QYWNrbmFtZXNdLmZpbHRlcihcbiAgICAgIChwYWNrKSA9PiB0aGlzLmlzUGFja0VuYWJsZWQocGFjayksXG4gICAgKTtcbiAgfVxuXG4gIGhhc0ljb24oaWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc0J1aWx0SW4oaWQpIHx8IHRoaXMuX2N1c3RvbUljb25zLmhhcyhpZCk7XG4gIH1cbiAgcHJpdmF0ZSBfaXNCdWlsdEluKGlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZW1vamkuaGFzRW1vamkoaWQpIHx8IEJ1aWx0SW5TVkdJY29uUGFja3MuaGFzKGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gaWQgYWNjZXB0IHNob3J0Y29kZSB3aXRoIGNvbG9uc1xuICAgKiBAcGFyYW0gcmF3IGlmIGdpdmVuLCByZXR1cm4gcmVzb3VyY2UgcGF0aCB0byBpY29uIGZpbGUgaW5zdGVhZCBvZiBpbWcgZWxlbWVudFxuICAgKi9cbiAgZ2V0SWNvbihpZDogc3RyaW5nLCByYXc6IHRydWUpOiBzdHJpbmcgfCBudWxsO1xuICBnZXRJY29uKGlkOiBzdHJpbmcsIHJhdz86IGZhbHNlKTogSFRNTFNwYW5FbGVtZW50IHwgbnVsbDtcbiAgZ2V0SWNvbihpZDogc3RyaW5nLCByYXcgPSBmYWxzZSk6IHN0cmluZyB8IEhUTUxTcGFuRWxlbWVudCB8IG51bGwge1xuICAgIGlkID0gc3RyaXBDb2xvbnMoaWQpO1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldEljb25EYXRhKGlkKTtcbiAgICBpZiAoIWRhdGEpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IGdldERPTSA9ICgpID0+IGRhdGEuZ2V0RE9NKGZhbHNlKTtcbiAgICBzd2l0Y2ggKGRhdGEudHlwZSkge1xuICAgICAgY2FzZSBcImVtb2ppXCI6XG4gICAgICAgIHJldHVybiByYXcgPyBkYXRhLmNoYXIgOiBnZXRET00oKTtcbiAgICAgIGNhc2UgXCJidWx0aS1pblwiOlxuICAgICAgICByZXR1cm4gcmF3ID8gZGF0YS5kYXRhVXJpIDogZ2V0RE9NKCk7XG4gICAgICBjYXNlIFwiZmlsZVwiOlxuICAgICAgICByZXR1cm4gcmF3ID8gZGF0YS5yZXNvdXJjZVBhdGggOiBnZXRET00oKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydE5ldmVyKGRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGdldFNWR0ljb24oaWQ6IHN0cmluZywgcmF3OiB0cnVlKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPjtcbiAgYXN5bmMgZ2V0U1ZHSWNvbihpZDogc3RyaW5nLCByYXc/OiBmYWxzZSk6IFByb21pc2U8SFRNTFNwYW5FbGVtZW50IHwgbnVsbD47XG4gIGFzeW5jIGdldFNWR0ljb24oXG4gICAgaWQ6IHN0cmluZyxcbiAgICByYXcgPSBmYWxzZSxcbiAgKTogUHJvbWlzZTxzdHJpbmcgfCBIVE1MU3BhbkVsZW1lbnQgfCBudWxsPiB7XG4gICAgaWQgPSBzdHJpcENvbG9ucyhpZCk7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuZ2V0SWNvbkRhdGEoaWQpO1xuICAgIGlmICghZGF0YSkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgZ2V0RE9NID0gKCkgPT4gZGF0YS5nZXRET00odHJ1ZSk7XG4gICAgaWYgKGRhdGEudHlwZSA9PT0gXCJlbW9qaVwiKSB7XG4gICAgICByZXR1cm4gcmF3ID8gZGF0YS5jaGFyIDogZ2V0RE9NKCk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGRhdGEudHlwZSA9PT0gXCJidWx0aS1pblwiIHx8XG4gICAgICAoZGF0YS50eXBlID09PSBcImZpbGVcIiAmJiBkYXRhLmlzU1ZHKVxuICAgICkge1xuICAgICAgY29uc3QgZWwgPSBhd2FpdCBnZXRET00oKTtcbiAgICAgIHJldHVybiByYXcgPyBlbC5pbm5lckhUTUwgOiBlbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHJhdyA/IGRhdGEucmVzb3VyY2VQYXRoIDogZ2V0RE9NKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0SWNvbkRhdGEoaWQ6IHN0cmluZyk6IEljb25EYXRhIHwgbnVsbCB7XG4gICAgaWQgPSBzdHJpcENvbG9ucyhpZCk7XG4gICAgbGV0IGRhdGE6IEljb25EYXRhIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICBpZiAoXG4gICAgICAoZGF0YSA9IEVtb2ppSWNvbkRhdGEuZ2V0RGF0YShpZCkpIHx8XG4gICAgICAoZGF0YSA9IEJ1aWx0SW5TVkdJY29uUGFja3MuZ2V0KGlkKSkgfHxcbiAgICAgIChkYXRhID0gdGhpcy5fY3VzdG9tSWNvbnMuZ2V0KGlkKSlcbiAgICApIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH0gZWxzZSByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlzUGFja0VuYWJsZWQocGFjazogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKHBhY2sgPT09IFwiZW1vamlcIikgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuICF0aGlzLnBsdWdpbi5zZXR0aW5ncy5kaXNhYmxlZFBhY2tzLmhhcyhwYWNrKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVmcmVzaFBhY2tOYW1lcygpIHtcbiAgICB0aGlzLl9jdXRvbXNJY29uUGFja25hbWVzLmNsZWFyKCk7XG4gICAgZm9yIChjb25zdCBbLCB7IHBhY2sgfV0gb2YgdGhpcy5fY3VzdG9tSWNvbnMpIHtcbiAgICAgIHRoaXMuX2N1dG9tc0ljb25QYWNrbmFtZXMuYWRkKHBhY2spO1xuICAgIH1cbiAgfVxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGx1Z2luOiBJY29uU0MpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBfbG9hZGVkID0gZmFsc2U7XG4gIGFzeW5jIGxvYWRJY29ucygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fbG9hZGVkKSB7XG4gICAgICB0aGlzLl9mdXNlLnNldENvbGxlY3Rpb24oW10pO1xuICAgICAgdGhpcy5fY3VzdG9tSWNvbnMuY2xlYXIoKTtcbiAgICAgIHRoaXMuX2N1dG9tc0ljb25QYWNrbmFtZXMuY2xlYXIoKTtcbiAgICAgIHRoaXMuX2xvYWRlZCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIShhd2FpdCB0aGlzLnZhdWx0LmFkYXB0ZXIuZXhpc3RzKHRoaXMuY3VzdG9tSWNvbnNEaXIpKSkge1xuICAgICAgYXdhaXQgdGhpcy52YXVsdC5hZGFwdGVyLm1rZGlyKHRoaXMuY3VzdG9tSWNvbnNEaXIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpY29ubGlzdCA9IGF3YWl0IHRoaXMudmF1bHQuYWRhcHRlci5saXN0KHRoaXMuY3VzdG9tSWNvbnNEaXIpO1xuXG4gICAgbGV0IGluZm87XG4gICAgY29uc3QgcXVldWUgPSBpY29ubGlzdC5maWxlcy5tYXAoYXN5bmMgKHBhdGgpID0+IHtcbiAgICAgIGlmICghZXh0UGF0dGVybi50ZXN0KHBhdGgpKSByZXR1cm47XG4gICAgICBjb25zdCBpZCA9IGJhc2VuYW1lKHBhdGgpLnJlcGxhY2UoZXh0UGF0dGVybiwgXCJcIik7XG4gICAgICBjb25zdCBpY29uID0gRmlsZUljb25EYXRhLmdldERhdGEoaWQsIHBhdGgsIHRoaXMucGx1Z2luKTtcbiAgICAgIGlmICghaWNvbikge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgXCJGYWlsZWQgdG8gbG9hZCBpY29uIGRhdGEgKHJhdyB2YWx1ZTogJW8pIGZvciBpZCAlcywgc2tpcHBpbmcuLi5cIixcbiAgICAgICAgICBwYXRoLFxuICAgICAgICAgIGlkLFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fY3VzdG9tSWNvbnMuc2V0KGlkLCBpY29uKTtcbiAgICAgICAgdGhpcy5fZnVzZS5hZGQoaWNvbik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgZm9yIChjb25zdCByZXN1bHQgb2YgYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKHF1ZXVlKSkge1xuICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT09IFwicmVqZWN0ZWRcIilcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBsb2FkIGljb25cIiwgcmVzdWx0LnJlYXNvbik7XG4gICAgfVxuICAgIHRoaXMuX2xvYWRlZCA9IHRydWU7XG4gICAgdGhpcy5yZWZyZXNoUGFja05hbWVzKCk7XG4gICAgdGhpcy50cmlnZ2VyKFwiaW5pdGlhbGl6ZWRcIiwgdGhpcy5wbHVnaW4uYXBpKTtcbiAgfVxuICBhc3luYyBiYWNrdXBJY29ucyhwYWNrPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbGV0IHppcCA9IG5ldyBKU1ppcCgpO1xuICAgIGNvbnN0IGljb25saXN0ID0gYXdhaXQgdGhpcy52YXVsdC5hZGFwdGVyLmxpc3QodGhpcy5jdXN0b21JY29uc0Rpcik7XG4gICAgZm9yIChjb25zdCBmaWxlcGF0aCBvZiBpY29ubGlzdC5maWxlcykge1xuICAgICAgaWYgKCFwYWNrIHx8IGJhc2VuYW1lKGZpbGVwYXRoKS5zdGFydHNXaXRoKHBhY2sgKyBcIl9cIikpIHtcbiAgICAgICAgemlwLmZpbGUoYmFzZW5hbWUoZmlsZXBhdGgpLCB0aGlzLnZhdWx0LmFkYXB0ZXIucmVhZEJpbmFyeShmaWxlcGF0aCkpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBiYWtGaWxlUGF0aCA9IGAke3BhY2sgPz8gXCJjdXN0b20taWNvbnNcIn0uemlwYDtcbiAgICBhd2FpdCB0aGlzLnZhdWx0LmNyZWF0ZUJpbmFyeShcbiAgICAgIGJha0ZpbGVQYXRoLFxuICAgICAgYXdhaXQgemlwLmdlbmVyYXRlQXN5bmMoeyB0eXBlOiBcImFycmF5YnVmZmVyXCIgfSksXG4gICAgKTtcbiAgICBpZiAoUGxhdGZvcm0uaXNEZXNrdG9wQXBwKSB7XG4gICAgICAvLyBvcGVuIHZhdWx0IGRpciBpbiBleHBsb3JlclxuICAgICAgdGhpcy5wbHVnaW4uYXBwLm9wZW5XaXRoRGVmYXVsdEFwcChcIlwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3IE5vdGljZShcbiAgICAgICAgYGljb25zIGhhdmUgYmVlbiBzYXZlZCB0byAke2Jha0ZpbGVQYXRofSwgYCArXG4gICAgICAgICAgXCJlbmFibGUgJ0RldGVjdCBhbGwgZmlsZSBleHRlbnNpb24nIGluICdGaWxlcyAmIExpbmtzJyB0byB2aXNpdCBpdFwiLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBpbXBvcnRJY29uc0Zyb21GaWxlTGlzdChsaXN0OiBGaWxlTGlzdCwgemlwTmFtZUFzUGFjayA9IGZhbHNlKSB7XG4gICAgbGV0IHF1ZXVlID0gW10gYXMgUHJvbWlzZTxzdHJpbmc+W107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBmaWxlID0gbGlzdFtpXTtcbiAgICAgIGlmIChmaWxlLnR5cGUgIT09IFwiYXBwbGljYXRpb24vemlwXCIpIGNvbnRpbnVlO1xuICAgICAgcXVldWUucHVzaCh0aGlzLmltcG9ydEljb25zKGZpbGUsIHppcE5hbWVBc1BhY2spKTtcbiAgICB9XG4gICAgcmV0dXJuIFByb21pc2UuYWxsU2V0dGxlZChxdWV1ZSk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGZpbGVzXG4gICAqIEBwYXJhbSB6aXBOYW1lQXNQYWNrIGlmIHRydWUsIHVzZSB6aXAgZmlsZW5hbWUgYXMgcGFjayBuYW1lOyBvdGhlcndpc2UsIGdldCBwYWNrIG5hbWUgZnJvbSBlYWNoIGljb24ncyBpZFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgYXN5bmMgaW1wb3J0SWNvbnMoXG4gICAgZmlsZTogRmlsZSB8IHsgbmFtZTogc3RyaW5nOyBkYXRhOiBBcnJheUJ1ZmZlciB9LFxuICAgIHppcE5hbWVBc1BhY2s6IGJvb2xlYW4sXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgcGFja05hbWVGcm9tWmlwID0gZmlsZS5uYW1lLnJlcGxhY2UoL1xcLnppcCQvLCBcIlwiKTtcbiAgICBsZXQgemlwO1xuICAgIGlmIChmaWxlIGluc3RhbmNlb2YgRmlsZSkge1xuICAgICAgemlwID0gYXdhaXQgSlNaaXAubG9hZEFzeW5jKGZpbGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB6aXAgPSBhd2FpdCBKU1ppcC5sb2FkQXN5bmMoZmlsZS5kYXRhKTtcbiAgICB9XG4gICAgY29uc3QgcXVldWUgPSB6aXAuZmlsZShpY29uRmlsZVBhdHRlcm4pLm1hcChhc3luYyAoZmlsZSkgPT4ge1xuICAgICAgbGV0IHsgbmFtZSB9ID0gZmlsZTtcbiAgICAgIGlmICh6aXBOYW1lQXNQYWNrICYmICFuYW1lLnN0YXJ0c1dpdGgocGFja05hbWVGcm9tWmlwICsgXCJfXCIpKVxuICAgICAgICBuYW1lID0gcGFja05hbWVGcm9tWmlwICsgXCJfXCIgKyBuYW1lO1xuICAgICAgY29uc3QgaWQgPSB0aGlzLmdldEF2YWlsYWJsZUlkKG5hbWUpO1xuICAgICAgY29uc3Qgd3JpdGVUbyA9IGpvaW4odGhpcy5jdXN0b21JY29uc0RpciwgaWQpO1xuICAgICAgaWYgKGF3YWl0IHRoaXMudmF1bHQuYWRhcHRlci5leGlzdHMod3JpdGVUbykpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGBpY29uICR7aWR9IGFscmVhZHkgZXhpc3RzLCBza2lwcGluZy4uYCk7XG4gICAgICB9XG4gICAgICBhd2FpdCB0aGlzLnZhdWx0LmFkYXB0ZXIud3JpdGVCaW5hcnkoXG4gICAgICAgIHdyaXRlVG8sXG4gICAgICAgIGF3YWl0IGZpbGUuYXN5bmMoXCJhcnJheWJ1ZmZlclwiKSxcbiAgICAgICk7XG4gICAgICByZXR1cm4gaWQ7XG4gICAgfSk7XG4gICAgY29uc3QgYWRkZWRJY29ucyA9IChhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQocXVldWUpKS5yZWR1Y2UoXG4gICAgICAoYXJyLCByZXN1bHQpID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT09IFwicmVqZWN0ZWRcIikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gaW1wb3J0IGljb25cIiwgcmVzdWx0LnJlYXNvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXJyLnB1c2gocmVzdWx0LnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXJyO1xuICAgICAgfSxcbiAgICAgIFtdIGFzIHN0cmluZ1tdLFxuICAgICk7XG4gICAgbmV3IE5vdGljZShhZGRlZEljb25zLmxlbmd0aCArIFwiIGljb25zIGltcG9ydGVkXCIpO1xuICAgIHJldHVybiBmaWxlLm5hbWU7XG4gIH1cblxuICBhc3luYyBhZGRGcm9tRmlsZXMocGFjazogc3RyaW5nLCBmaWxlczogRmlsZUxpc3QpIHtcbiAgICBjb25zdCBpY29ucyA9IGF3YWl0IGdldEljb25zRnJvbUZpbGVMaXN0KGZpbGVzKTtcbiAgICBpZiAoIWljb25zKSB7XG4gICAgICBuZXcgTm90aWNlKFwiTm8gU1ZHIGZpbGUgZm91bmQgaW4gZHJvcHBlZCBpdGVtc1wiKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoQnVpbHRJbkljb25QYWNrbmFtZXMuaW5jbHVkZXMocGFjaykpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJmYWlsZWQgdG8gYWRkIHBhY2s6IHBhY2sgbmFtZSAlcyByZXNlcnZlZFwiLCBwYWNrKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgd3JpdGVRdWV1ZSA9IGljb25zLnJlZHVjZSgoYXJyLCB7IG5hbWUsIGV4dCwgZGF0YSB9KSA9PiB7XG4gICAgICBsZXQgaWQgPSBzYW5pdGl6ZUlkKGAke3BhY2t9XyR7bmFtZX1gKTtcbiAgICAgIGlmICghaWQpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFwiZmFpbGVkIHRvIGFkZCBpY29uOiBpZCAlcyBpbnZhbGlkLCBza2lwcGluZy4uLlwiLCBpZCk7XG4gICAgICAgIHJldHVybiBhcnI7XG4gICAgICB9XG4gICAgICBpZCA9IHRoaXMuZ2V0QXZhaWxhYmxlSWQoaWQpO1xuICAgICAgaWYgKHRoaXMuX2N1c3RvbUljb25zLmhhcyhpZCkpIHtcbiAgICAgICAgYXJyLnB1c2goUHJvbWlzZS5yZWplY3QoYGljb24gJHtpZH0gYWxyZWFkeSBleGlzdHMsIHNraXBwaW5nLi5gKSk7XG4gICAgICAgIHJldHVybiBhcnI7XG4gICAgICB9XG4gICAgICBhcnIucHVzaChcbiAgICAgICAgKGFzeW5jICgpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcGF0aCA9IGF3YWl0IHRoaXMuYWRkSWNvbihpZCwgZXh0LCBkYXRhKTtcbiAgICAgICAgICAgIHRoaXMuc2V0KFxuICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgbmV3IEZpbGVJY29uRGF0YShpZCwgbmFtZSwgcGFjaywgcGF0aCwgdGhpcy5wbHVnaW4pLFxuICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJY29uRmlsZU9wRXJyb3IoXCJhZGRcIiwgaWQsIGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGlkO1xuICAgICAgICB9KSgpLFxuICAgICAgKTtcbiAgICAgIHJldHVybiBhcnI7XG4gICAgfSwgW10gYXMgUHJvbWlzZTxzdHJpbmc+W10pO1xuICAgIGxldCBhZGRlZElkcyA9IFtdIGFzIHN0cmluZ1tdO1xuICAgIGZvciAoY29uc3QgcmVzdWx0IG9mIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZCh3cml0ZVF1ZXVlKSkge1xuICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT09IFwicmVqZWN0ZWRcIikge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIGFkZCBpY29uLCBkZXRhaWxzOiBcIiwgcmVzdWx0LnJlYXNvbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhZGRlZElkcy5wdXNoKHJlc3VsdC52YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucmVmcmVzaFBhY2tOYW1lcygpO1xuICAgIHRoaXMudHJpZ2dlcihcImNoYW5nZWRcIiwgdGhpcy5wbHVnaW4uYXBpLCBhZGRlZElkcyk7XG4gICAgbmV3IE5vdGljZShhZGRlZElkcy5sZW5ndGgudG9TdHJpbmcoKSArIFwiIGljb25zIGFkZGVkXCIpO1xuICB9XG4gIGFzeW5jIGRlbGV0ZU11bHRpcGxlKC4uLmlkczogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLl9mdXNlLnJlbW92ZSgoaWNvbikgPT4gaXNGaWxlSWNvbkluZm8oaWNvbikgJiYgaWRzLmluY2x1ZGVzKGljb24uaWQpKTtcbiAgICBjb25zdCBxdWV1ZSA9IGlkcy5tYXAoYXN5bmMgKGlkKSA9PiB7XG4gICAgICBjb25zdCBpbmZvID0gdGhpcy5fY3VzdG9tSWNvbnMuZ2V0KGlkKTtcbiAgICAgIGlmICghaW5mbylcbiAgICAgICAgdGhyb3cgbmV3IEljb25GaWxlT3BFcnJvcihcbiAgICAgICAgICBcImRlbGV0ZVwiLFxuICAgICAgICAgIGlkLFxuICAgICAgICAgIFwiTm8gaWNvbiBmb3VuZCBpbiBfY3VzdG9tSWNvbnNcIixcbiAgICAgICAgKTtcbiAgICAgIHRoaXMuX2N1c3RvbUljb25zLmRlbGV0ZShpZCk7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLnJlbW92ZUljb25GaWxlKGlkLCBpbmZvLmV4dCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgSWNvbkZpbGVPcEVycm9yKFwiZGVsZXRlXCIsIGlkLCBlcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgbGV0IGNoYW5nZWQgPSBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IHJlc3VsdCBvZiBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQocXVldWUpKSB7XG4gICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gXCJyZWplY3RlZFwiKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gcmVtb3ZlIGljb24gZmlsZSwgZGV0YWlsczogXCIsIHJlc3VsdC5yZWFzb24pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hhbmdlZCB8fCAoY2hhbmdlZCA9IHRydWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgdGhpcy5yZWZyZXNoUGFja05hbWVzKCk7XG4gICAgICB0aGlzLnRyaWdnZXIoXCJjaGFuZ2VkXCIsIHRoaXMucGx1Z2luLmFwaSwgaWRzKTtcbiAgICB9XG4gIH1cbiAgYXN5bmMgZmlsdGVyKFxuICAgIHByZWRpY2F0ZTogKGtleTogc3RyaW5nLCB2YWx1ZTogT21pdDxGaWxlSWNvbkRhdGEsIFwiaWRcIj4pID0+IGJvb2xlYW4sXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIGlkIC0gcGF0aCBtYXBcbiAgICBsZXQgSWNvbnNUb0RlbGV0ZSA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgZm9yIChjb25zdCBbaWQsIGRhdGFdIG9mIHRoaXMuX2N1c3RvbUljb25zKSB7XG4gICAgICBpZiAoIXByZWRpY2F0ZShpZCwgZGF0YSkpIHtcbiAgICAgICAgdGhpcy5fY3VzdG9tSWNvbnMuZGVsZXRlKGlkKTtcbiAgICAgICAgSWNvbnNUb0RlbGV0ZS5zZXQoaWQsIGRhdGEucGF0aCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX2Z1c2UucmVtb3ZlKChpY29uKSA9PiBJY29uc1RvRGVsZXRlLmhhcyhpY29uLmlkKSk7XG4gICAgaWYgKEljb25zVG9EZWxldGUuc2l6ZSA9PT0gMCkgcmV0dXJuO1xuICAgIHRoaXMucmVmcmVzaFBhY2tOYW1lcygpO1xuICAgIHRoaXMudHJpZ2dlcihcImNoYW5nZWRcIiwgdGhpcy5wbHVnaW4uYXBpLCBbLi4uSWNvbnNUb0RlbGV0ZS5rZXlzKCldKTtcbiAgICBjb25zdCBxdWV1ZSA9IFsuLi5JY29uc1RvRGVsZXRlLnZhbHVlcygpXS5tYXAoYXN5bmMgKHBhdGgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMudmF1bHQuYWRhcHRlci5yZW1vdmUocGF0aCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgSWNvbkZpbGVPcEVycm9yKFwiZGVsZXRlXCIsIGJhc2VuYW1lKHBhdGgpLCBlcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgZm9yIChjb25zdCByZXN1bHQgb2YgYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKHF1ZXVlKSkge1xuICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT09IFwicmVqZWN0ZWRcIikge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIHJlbW92ZSBpY29uIGZpbGUsIGRldGFpbHM6IFwiLCByZXN1bHQucmVhc29uKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgYXN5bmMgcmVuYW1lKGlkOiBzdHJpbmcsIG5ld0lkOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICBpZiAodGhpcy5oYXNJY29uKG5ld0lkKSkge1xuICAgICAgY29uc29sZS5sb2coXCJmYWlsZWQgdG8gcmVuYW1lIGljb246IGlkICVzIGFscmVhZHkgZXhpc3RzXCIsIG5ld0lkKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBsZXQgaW5mbyA9IHRoaXMuX2N1c3RvbUljb25zLmdldChpZCk7XG4gICAgaWYgKCFpbmZvKSB7XG4gICAgICBjb25zb2xlLmxvZyhcImZhaWxlZCB0byByZW5hbWUgaWNvbjogaWQgJXMgbm90IGZvdW5kIGluIGN1c3RvbSBpY29uc1wiLCBpZCk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgcmVuYW1lVG8gPSBzYW5pdGl6ZUlkKG5ld0lkKTtcbiAgICBpZiAoIXJlbmFtZVRvKSB7XG4gICAgICBjb25zb2xlLmxvZyhcImZhaWxlZCB0byByZW5hbWUgaWNvbjogaWQgJXMgaW52YWxpZFwiLCBpZCk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGluZm8ucGF0aCA9IGF3YWl0IHRoaXMucmVuYW1lSWNvbkZpbGUoaWQsIGluZm8uZXh0LCBuZXdJZCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBJY29uRmlsZU9wRXJyb3IoXCJyZW5hbWVcIiwgaWQsIGVycm9yLCBuZXdJZCk7XG4gICAgfVxuICAgIHRoaXMuc2V0KHJlbmFtZVRvLCBpbmZvLCBmYWxzZSk7XG4gICAgdGhpcy5kZWxldGUoaWQsIGZhbHNlLCBmYWxzZSk7XG4gICAgdGhpcy5yZWZyZXNoUGFja05hbWVzKCk7XG4gICAgdGhpcy50cmlnZ2VyKFwiY2hhbmdlZFwiLCB0aGlzLnBsdWdpbi5hcGksIFtpZCwgbmV3SWRdKTtcbiAgICByZXR1cm4gbmV3SWQ7XG4gIH1cbiAgYXN5bmMgc3RhcihpZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgY29uc3QgdGFyZ2V0SWQgPSBpZC5yZXBsYWNlKC9fXFxkPyQvLCBcIlwiKTtcbiAgICBpZiAodGFyZ2V0SWQgPT09IGlkKSB7XG4gICAgICBjb25zb2xlLmxvZyhcImZhaWxlZCB0byBzdGFyIGljb246IG5vIHN1ZmZpeCBmb3VuZCBmb3IgaWQgJXNcIiwgaWQpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGluZm8gPSB0aGlzLl9jdXN0b21JY29ucy5nZXQoaWQpO1xuICAgIGlmICghaW5mbykge1xuICAgICAgY29uc29sZS5sb2coXCJmYWlsZWQgdG8gc3RhciBpY29uOiBpZCAlcyBub3QgZm91bmQgaW4gY3VzdG9tIGljb25zXCIsIGlkKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAodGhpcy5faXNCdWlsdEluKHRhcmdldElkKSkge1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIFwiZmFpbGVkIHRvIHN0YXIgaWNvbjogbmV3IGlkICVzIGV4aXN0cyBpbiBidWlsdC1pbiBpY29uc1wiLFxuICAgICAgICB0YXJnZXRJZCxcbiAgICAgICk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBleHQgfSA9IGluZm87XG4gICAgICBpZiAodGhpcy5fY3VzdG9tSWNvbnMuaGFzKHRhcmdldElkKSkge1xuICAgICAgICBjb25zdCB0ZW1wID0gdGhpcy5fY3VzdG9tSWNvbnMuZ2V0KHRhcmdldElkKSBhcyBGaWxlSWNvbkRhdGEsXG4gICAgICAgICAgeyBleHQ6IHRhcmdldEV4dCB9ID0gdGVtcDtcbiAgICAgICAgYXdhaXQgdGhpcy5yZW5hbWVJY29uRmlsZSh0YXJnZXRJZCwgdGFyZ2V0RXh0LCB0YXJnZXRJZCArIFwiX3RlbXBcIik7XG4gICAgICAgIGluZm8ucGF0aCA9IGF3YWl0IHRoaXMucmVuYW1lSWNvbkZpbGUoaWQsIGV4dCwgdGFyZ2V0SWQpO1xuICAgICAgICB0aGlzLnNldCh0YXJnZXRJZCwgaW5mbywgZmFsc2UpO1xuICAgICAgICB0ZW1wLnBhdGggPSBhd2FpdCB0aGlzLnJlbmFtZUljb25GaWxlKFxuICAgICAgICAgIHRhcmdldElkICsgXCJfdGVtcFwiLFxuICAgICAgICAgIHRhcmdldEV4dCxcbiAgICAgICAgICBpZCxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXQoaWQsIHRlbXAsIGZhbHNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluZm8ucGF0aCA9IGF3YWl0IHRoaXMucmVuYW1lSWNvbkZpbGUoaWQsIGV4dCwgdGFyZ2V0SWQpO1xuICAgICAgICB0aGlzLnNldCh0YXJnZXRJZCwgaW5mbywgZmFsc2UpO1xuICAgICAgICB0aGlzLmRlbGV0ZShpZCwgZmFsc2UsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbmV3IEljb25GaWxlT3BFcnJvcihcInJlbmFtZVwiLCBpZCwgZXJyb3IsIHRhcmdldElkKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlZnJlc2hQYWNrTmFtZXMoKTtcbiAgICB0aGlzLnRyaWdnZXIoXCJjaGFuZ2VkXCIsIHRoaXMucGx1Z2luLmFwaSwgW2lkLCB0YXJnZXRJZF0pO1xuICAgIHJldHVybiB0YXJnZXRJZDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QXZhaWxhYmxlSWQoaWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmhhc0ljb24oaWQpKSByZXR1cm4gaWQ7XG4gICAgbGV0IGkgPSAxLFxuICAgICAgbmV3SWQgPSBgJHtpZH1fJHtpfWA7XG4gICAgd2hpbGUgKHRoaXMuaGFzSWNvbihuZXdJZCkpIHtcbiAgICAgIG5ld0lkID0gYCR7aWR9XyR7KytpfWA7XG4gICAgfVxuICAgIHJldHVybiBgJHtpZH1fJHtpfWA7XG4gIH1cblxuICAvKiogc2V0IGluZm8gaW4gZGF0YWJhc2UsIG5vIGZpbGUgY2hhbmdlcyAqL1xuICBzZXQoaWQ6IHN0cmluZywgaW5mbzogRmlsZUljb25EYXRhLCByZWZyZXNoID0gdHJ1ZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jdXN0b21JY29ucy5nZXQoaWQpID09PSBpbmZvKSByZXR1cm47XG4gICAgdGhpcy5fY3VzdG9tSWNvbnMuc2V0KGlkLCBpbmZvKTtcbiAgICB0aGlzLl9mdXNlLnJlbW92ZSgoaWNvbikgPT4gaWNvbi5pZCA9PT0gaWQpO1xuICAgIHRoaXMuX2Z1c2UuYWRkKGluZm8pO1xuICAgIGlmIChyZWZyZXNoKSB7XG4gICAgICB0aGlzLnJlZnJlc2hQYWNrTmFtZXMoKTtcbiAgICAgIHRoaXMudHJpZ2dlcihcImNoYW5nZWRcIiwgdGhpcy5wbHVnaW4uYXBpLCBbaWRdKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBkZWxldGUoXG4gICAgaWQ6IHN0cmluZyxcbiAgICByZWZyZXNoID0gdHJ1ZSxcbiAgICBkZWxldGVGaWxlID0gdHJ1ZSxcbiAgKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgaW5mbyA9IHRoaXMuX2N1c3RvbUljb25zLmdldChpZCk7XG4gICAgaWYgKCFpbmZvKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGRlbGV0ZUZpbGUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMucmVtb3ZlSWNvbkZpbGUoaWQsIGluZm8uZXh0KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRocm93IG5ldyBJY29uRmlsZU9wRXJyb3IoXCJkZWxldGVcIiwgaWQsIGVycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fY3VzdG9tSWNvbnMuZGVsZXRlKGlkKTtcbiAgICB0aGlzLl9mdXNlLnJlbW92ZSgoaWNvbikgPT4gaWNvbi5pZCA9PT0gaWQpO1xuICAgIGlmIChyZWZyZXNoKSB7XG4gICAgICB0aGlzLnJlZnJlc2hQYWNrTmFtZXMoKTtcbiAgICAgIHRoaXMudHJpZ2dlcihcImNoYW5nZWRcIiwgdGhpcy5wbHVnaW4uYXBpLCBbaWRdKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBhc3luYyBjbGVhcigpIHtcbiAgICBjb25zdCBxdWV1ZSA9IChcbiAgICAgIGF3YWl0IHRoaXMudmF1bHQuYWRhcHRlci5saXN0KHRoaXMuY3VzdG9tSWNvbnNEaXIpXG4gICAgKS5maWxlcy5tYXAoKHBhdGgpID0+IHRoaXMudmF1bHQuYWRhcHRlci5yZW1vdmUocGF0aCkpO1xuICAgIGZvciAoY29uc3QgcmVzdWx0IG9mIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChxdWV1ZSkpIHtcbiAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSBcInJlamVjdGVkXCIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byByZW1vdmUgaWNvbiBmaWxlLCBkZXRhaWxzOiBcIiwgcmVzdWx0LnJlYXNvbik7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX2N1c3RvbUljb25zLmNsZWFyKCk7XG4gICAgdGhpcy5fZnVzZS5yZW1vdmUoKGlkKSA9PiAhQnVpbHRJbkljb25JZHMuaW5jbHVkZXMoaWQpKTtcbiAgICB0aGlzLnJlZnJlc2hQYWNrTmFtZXMoKTtcbiAgICB0aGlzLnRyaWdnZXIoXCJjaGFuZ2VkXCIsIHRoaXMucGx1Z2luLmFwaSk7XG4gIH1cblxuICBwcml2YXRlIF9mdXNlID0gbmV3IEZ1c2U8SWNvbkluZm8+KEJ1aWx0SW5JY29uSWRzLCB7XG4gICAga2V5czogW1wibmFtZVwiLCBcInBhY2tcIl0sXG4gICAgaW5jbHVkZVNjb3JlOiB0cnVlLFxuICAgIC8vIGlnbm9yZUxvY2F0aW9uOiB0cnVlLFxuICAgIGZpbmRBbGxNYXRjaGVzOiB0cnVlLFxuICAgIHRocmVzaG9sZDogMC41LFxuICAgIHNob3VsZFNvcnQ6IHRydWUsXG4gICAgaW5jbHVkZU1hdGNoZXM6IHRydWUsXG4gICAgdXNlRXh0ZW5kZWRTZWFyY2g6IHRydWUsXG4gIH0pO1xuICBzZWFyY2gocXVlcnk6IHN0cmluZ1tdLCBwYWNrcz86IHN0cmluZ1tdLCBsaW1pdD86IG51bWJlcikge1xuICAgIGxldCBleHAgPSBxdWVyeS5tYXA8RnVzZS5FeHByZXNzaW9uPigocykgPT4gKHsgbmFtZTogcyB9KSk7XG4gICAgcGFja3MgPSBwYWNrcyA/PyB0aGlzLmVuYWJsZWRQYWNrbmFtZXM7XG4gICAgZXhwLnB1c2goeyAkb3I6IHBhY2tzLm1hcCgocCkgPT4gKHsgcGFjazogYD0ke3B9YCB9KSkgfSk7XG4gICAgcmV0dXJuIHRoaXMuX2Z1c2Uuc2VhcmNoKHsgJGFuZDogZXhwIH0sIHsgbGltaXQ6IGxpbWl0ID8/IDIwIH0pO1xuICB9XG4gIGdldEFsbElkcyhwYWNrcz86IHN0cmluZ1tdLCBsaW1pdD86IG51bWJlcikge1xuICAgIGxldCBleHAgPSAocGFja3MgPz8gdGhpcy5lbmFibGVkUGFja25hbWVzKS5tYXAoKHApID0+ICh7XG4gICAgICBwYWNrOiBgPSR7cH1gLFxuICAgIH0pKTtcbiAgICByZXR1cm4gdGhpcy5fZnVzZS5zZWFyY2goeyAkb3I6IGV4cCB9LCB7IGxpbWl0OiBsaW1pdCA/PyAyMCB9KTtcbiAgfVxuXG4gIHRyaWdnZXIoLi4uYXJnczogUE1FdmVudHMpOiB2b2lkIHtcbiAgICBjb25zdCBbbmFtZSwgLi4ucmVzdF0gPSBhcmdzO1xuICAgIHN1cGVyLnRyaWdnZXIobmFtZSwgLi4ucmVzdCk7XG4gICAgdGhpcy5wbHVnaW4uYXBwLnZhdWx0LnRyaWdnZXIoZXZ0UHJlZml4ICsgbmFtZSwgLi4ucmVzdCk7XG4gIH1cbiAgb24oLi4uYXJnczogT25BcmdzPFBNRXZlbnRzPik6IEV2ZW50UmVmIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgcmV0dXJuIHN1cGVyLm9uKC4uLmFyZ3MpO1xuICB9XG59XG5cbnR5cGUgT25BcmdzPFQ+ID0gVCBleHRlbmRzIFtpbmZlciBBLCAuLi5pbmZlciBCXVxuICA/IEEgZXh0ZW5kcyBzdHJpbmdcbiAgICA/IFtuYW1lOiBBLCBjYWxsYmFjazogKC4uLmFyZ3M6IEIpID0+IGFueV1cbiAgICA6IG5ldmVyXG4gIDogbmV2ZXI7XG5cbmNsYXNzIEljb25GaWxlT3BFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3Iob3A6IHN0cmluZywgaWQ6IHN0cmluZywgc3JjRXJyOiBhbnksIG5ld0lkPzogc3RyaW5nKSB7XG4gICAgc3VwZXIoXG4gICAgICBgRXJyb3Igd2hpbGUgJHtvcH0gb24gJHtpZH0ke25ld0lkID8gXCI9PlwiICsgbmV3SWQgOiBcIlwifTogJHtcbiAgICAgICAgc3JjRXJyIGluc3RhbmNlb2YgRXJyb3IgPyBgJHtzcmNFcnIubmFtZX06ICR7c3JjRXJyLm1lc3NhZ2V9YCA6IHNyY0VyclxuICAgICAgfWAsXG4gICAgKTtcbiAgICBjb25zb2xlLmVycm9yKGAke29wfSBvbiAke2lkfSR7bmV3SWQgPyBcIj0+XCIgKyBuZXdJZCA6IFwiXCJ9YCwgc3JjRXJyKTtcbiAgICB0aGlzLm5hbWUgPSBcIlNhdmVJY29uRXJyb3JcIjtcbiAgfVxufVxuIiwgIi8qKlxuICogRnVzZS5qcyB2Ni42LjIgLSBMaWdodHdlaWdodCBmdXp6eS1zZWFyY2ggKGh0dHA6Ly9mdXNlanMuaW8pXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDIyIEtpcm8gUmlzayAoaHR0cDovL2tpcm8ubWUpXG4gKiBBbGwgUmlnaHRzIFJlc2VydmVkLiBBcGFjaGUgU29mdHdhcmUgTGljZW5zZSAyLjBcbiAqXG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqL1xuXG5mdW5jdGlvbiBpc0FycmF5KHZhbHVlKSB7XG4gIHJldHVybiAhQXJyYXkuaXNBcnJheVxuICAgID8gZ2V0VGFnKHZhbHVlKSA9PT0gJ1tvYmplY3QgQXJyYXldJ1xuICAgIDogQXJyYXkuaXNBcnJheSh2YWx1ZSlcbn1cblxuLy8gQWRhcHRlZCBmcm9tOiBodHRwczovL2dpdGh1Yi5jb20vbG9kYXNoL2xvZGFzaC9ibG9iL21hc3Rlci8uaW50ZXJuYWwvYmFzZVRvU3RyaW5nLmpzXG5jb25zdCBJTkZJTklUWSA9IDEgLyAwO1xuZnVuY3Rpb24gYmFzZVRvU3RyaW5nKHZhbHVlKSB7XG4gIC8vIEV4aXQgZWFybHkgZm9yIHN0cmluZ3MgdG8gYXZvaWQgYSBwZXJmb3JtYW5jZSBoaXQgaW4gc29tZSBlbnZpcm9ubWVudHMuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuICBsZXQgcmVzdWx0ID0gdmFsdWUgKyAnJztcbiAgcmV0dXJuIHJlc3VsdCA9PSAnMCcgJiYgMSAvIHZhbHVlID09IC1JTkZJTklUWSA/ICctMCcgOiByZXN1bHRcbn1cblxuZnVuY3Rpb24gdG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09IG51bGwgPyAnJyA6IGJhc2VUb1N0cmluZyh2YWx1ZSlcbn1cblxuZnVuY3Rpb24gaXNTdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZydcbn1cblxuZnVuY3Rpb24gaXNOdW1iZXIodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcidcbn1cblxuLy8gQWRhcHRlZCBmcm9tOiBodHRwczovL2dpdGh1Yi5jb20vbG9kYXNoL2xvZGFzaC9ibG9iL21hc3Rlci9pc0Jvb2xlYW4uanNcbmZ1bmN0aW9uIGlzQm9vbGVhbih2YWx1ZSkge1xuICByZXR1cm4gKFxuICAgIHZhbHVlID09PSB0cnVlIHx8XG4gICAgdmFsdWUgPT09IGZhbHNlIHx8XG4gICAgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgZ2V0VGFnKHZhbHVlKSA9PSAnW29iamVjdCBCb29sZWFuXScpXG4gIClcbn1cblxuZnVuY3Rpb24gaXNPYmplY3QodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCdcbn1cblxuLy8gQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuXG5mdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0KHZhbHVlKSAmJiB2YWx1ZSAhPT0gbnVsbFxufVxuXG5mdW5jdGlvbiBpc0RlZmluZWQodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IG51bGxcbn1cblxuZnVuY3Rpb24gaXNCbGFuayh2YWx1ZSkge1xuICByZXR1cm4gIXZhbHVlLnRyaW0oKS5sZW5ndGhcbn1cblxuLy8gR2V0cyB0aGUgYHRvU3RyaW5nVGFnYCBvZiBgdmFsdWVgLlxuLy8gQWRhcHRlZCBmcm9tOiBodHRwczovL2dpdGh1Yi5jb20vbG9kYXNoL2xvZGFzaC9ibG9iL21hc3Rlci8uaW50ZXJuYWwvZ2V0VGFnLmpzXG5mdW5jdGlvbiBnZXRUYWcodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09IG51bGxcbiAgICA/IHZhbHVlID09PSB1bmRlZmluZWRcbiAgICAgID8gJ1tvYmplY3QgVW5kZWZpbmVkXSdcbiAgICAgIDogJ1tvYmplY3QgTnVsbF0nXG4gICAgOiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpXG59XG5cbmNvbnN0IEVYVEVOREVEX1NFQVJDSF9VTkFWQUlMQUJMRSA9ICdFeHRlbmRlZCBzZWFyY2ggaXMgbm90IGF2YWlsYWJsZSc7XG5cbmNvbnN0IElOQ09SUkVDVF9JTkRFWF9UWVBFID0gXCJJbmNvcnJlY3QgJ2luZGV4JyB0eXBlXCI7XG5cbmNvbnN0IExPR0lDQUxfU0VBUkNIX0lOVkFMSURfUVVFUllfRk9SX0tFWSA9IChrZXkpID0+XG4gIGBJbnZhbGlkIHZhbHVlIGZvciBrZXkgJHtrZXl9YDtcblxuY29uc3QgUEFUVEVSTl9MRU5HVEhfVE9PX0xBUkdFID0gKG1heCkgPT5cbiAgYFBhdHRlcm4gbGVuZ3RoIGV4Y2VlZHMgbWF4IG9mICR7bWF4fS5gO1xuXG5jb25zdCBNSVNTSU5HX0tFWV9QUk9QRVJUWSA9IChuYW1lKSA9PiBgTWlzc2luZyAke25hbWV9IHByb3BlcnR5IGluIGtleWA7XG5cbmNvbnN0IElOVkFMSURfS0VZX1dFSUdIVF9WQUxVRSA9IChrZXkpID0+XG4gIGBQcm9wZXJ0eSAnd2VpZ2h0JyBpbiBrZXkgJyR7a2V5fScgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXJgO1xuXG5jb25zdCBoYXNPd24gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG5jbGFzcyBLZXlTdG9yZSB7XG4gIGNvbnN0cnVjdG9yKGtleXMpIHtcbiAgICB0aGlzLl9rZXlzID0gW107XG4gICAgdGhpcy5fa2V5TWFwID0ge307XG5cbiAgICBsZXQgdG90YWxXZWlnaHQgPSAwO1xuXG4gICAga2V5cy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGxldCBvYmogPSBjcmVhdGVLZXkoa2V5KTtcblxuICAgICAgdG90YWxXZWlnaHQgKz0gb2JqLndlaWdodDtcblxuICAgICAgdGhpcy5fa2V5cy5wdXNoKG9iaik7XG4gICAgICB0aGlzLl9rZXlNYXBbb2JqLmlkXSA9IG9iajtcblxuICAgICAgdG90YWxXZWlnaHQgKz0gb2JqLndlaWdodDtcbiAgICB9KTtcblxuICAgIC8vIE5vcm1hbGl6ZSB3ZWlnaHRzIHNvIHRoYXQgdGhlaXIgc3VtIGlzIGVxdWFsIHRvIDFcbiAgICB0aGlzLl9rZXlzLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAga2V5LndlaWdodCAvPSB0b3RhbFdlaWdodDtcbiAgICB9KTtcbiAgfVxuICBnZXQoa2V5SWQpIHtcbiAgICByZXR1cm4gdGhpcy5fa2V5TWFwW2tleUlkXVxuICB9XG4gIGtleXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2tleXNcbiAgfVxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMuX2tleXMpXG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlS2V5KGtleSkge1xuICBsZXQgcGF0aCA9IG51bGw7XG4gIGxldCBpZCA9IG51bGw7XG4gIGxldCBzcmMgPSBudWxsO1xuICBsZXQgd2VpZ2h0ID0gMTtcbiAgbGV0IGdldEZuID0gbnVsbDtcblxuICBpZiAoaXNTdHJpbmcoa2V5KSB8fCBpc0FycmF5KGtleSkpIHtcbiAgICBzcmMgPSBrZXk7XG4gICAgcGF0aCA9IGNyZWF0ZUtleVBhdGgoa2V5KTtcbiAgICBpZCA9IGNyZWF0ZUtleUlkKGtleSk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKCFoYXNPd24uY2FsbChrZXksICduYW1lJykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihNSVNTSU5HX0tFWV9QUk9QRVJUWSgnbmFtZScpKVxuICAgIH1cblxuICAgIGNvbnN0IG5hbWUgPSBrZXkubmFtZTtcbiAgICBzcmMgPSBuYW1lO1xuXG4gICAgaWYgKGhhc093bi5jYWxsKGtleSwgJ3dlaWdodCcpKSB7XG4gICAgICB3ZWlnaHQgPSBrZXkud2VpZ2h0O1xuXG4gICAgICBpZiAod2VpZ2h0IDw9IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKElOVkFMSURfS0VZX1dFSUdIVF9WQUxVRShuYW1lKSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwYXRoID0gY3JlYXRlS2V5UGF0aChuYW1lKTtcbiAgICBpZCA9IGNyZWF0ZUtleUlkKG5hbWUpO1xuICAgIGdldEZuID0ga2V5LmdldEZuO1xuICB9XG5cbiAgcmV0dXJuIHsgcGF0aCwgaWQsIHdlaWdodCwgc3JjLCBnZXRGbiB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUtleVBhdGgoa2V5KSB7XG4gIHJldHVybiBpc0FycmF5KGtleSkgPyBrZXkgOiBrZXkuc3BsaXQoJy4nKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVLZXlJZChrZXkpIHtcbiAgcmV0dXJuIGlzQXJyYXkoa2V5KSA/IGtleS5qb2luKCcuJykgOiBrZXlcbn1cblxuZnVuY3Rpb24gZ2V0KG9iaiwgcGF0aCkge1xuICBsZXQgbGlzdCA9IFtdO1xuICBsZXQgYXJyID0gZmFsc2U7XG5cbiAgY29uc3QgZGVlcEdldCA9IChvYmosIHBhdGgsIGluZGV4KSA9PiB7XG4gICAgaWYgKCFpc0RlZmluZWQob2JqKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmICghcGF0aFtpbmRleF0pIHtcbiAgICAgIC8vIElmIHRoZXJlJ3Mgbm8gcGF0aCBsZWZ0LCB3ZSd2ZSBhcnJpdmVkIGF0IHRoZSBvYmplY3Qgd2UgY2FyZSBhYm91dC5cbiAgICAgIGxpc3QucHVzaChvYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQga2V5ID0gcGF0aFtpbmRleF07XG5cbiAgICAgIGNvbnN0IHZhbHVlID0gb2JqW2tleV07XG5cbiAgICAgIGlmICghaXNEZWZpbmVkKHZhbHVlKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gSWYgd2UncmUgYXQgdGhlIGxhc3QgdmFsdWUgaW4gdGhlIHBhdGgsIGFuZCBpZiBpdCdzIGEgc3RyaW5nL251bWJlci9ib29sLFxuICAgICAgLy8gYWRkIGl0IHRvIHRoZSBsaXN0XG4gICAgICBpZiAoXG4gICAgICAgIGluZGV4ID09PSBwYXRoLmxlbmd0aCAtIDEgJiZcbiAgICAgICAgKGlzU3RyaW5nKHZhbHVlKSB8fCBpc051bWJlcih2YWx1ZSkgfHwgaXNCb29sZWFuKHZhbHVlKSlcbiAgICAgICkge1xuICAgICAgICBsaXN0LnB1c2godG9TdHJpbmcodmFsdWUpKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgYXJyID0gdHJ1ZTtcbiAgICAgICAgLy8gU2VhcmNoIGVhY2ggaXRlbSBpbiB0aGUgYXJyYXkuXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB2YWx1ZS5sZW5ndGg7IGkgPCBsZW47IGkgKz0gMSkge1xuICAgICAgICAgIGRlZXBHZXQodmFsdWVbaV0sIHBhdGgsIGluZGV4ICsgMSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocGF0aC5sZW5ndGgpIHtcbiAgICAgICAgLy8gQW4gb2JqZWN0LiBSZWN1cnNlIGZ1cnRoZXIuXG4gICAgICAgIGRlZXBHZXQodmFsdWUsIHBhdGgsIGluZGV4ICsgMSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIC8vIEJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IChzaW5jZSBwYXRoIHVzZWQgdG8gYmUgYSBzdHJpbmcpXG4gIGRlZXBHZXQob2JqLCBpc1N0cmluZyhwYXRoKSA/IHBhdGguc3BsaXQoJy4nKSA6IHBhdGgsIDApO1xuXG4gIHJldHVybiBhcnIgPyBsaXN0IDogbGlzdFswXVxufVxuXG5jb25zdCBNYXRjaE9wdGlvbnMgPSB7XG4gIC8vIFdoZXRoZXIgdGhlIG1hdGNoZXMgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSByZXN1bHQgc2V0LiBXaGVuIGB0cnVlYCwgZWFjaCByZWNvcmQgaW4gdGhlIHJlc3VsdFxuICAvLyBzZXQgd2lsbCBpbmNsdWRlIHRoZSBpbmRpY2VzIG9mIHRoZSBtYXRjaGVkIGNoYXJhY3RlcnMuXG4gIC8vIFRoZXNlIGNhbiBjb25zZXF1ZW50bHkgYmUgdXNlZCBmb3IgaGlnaGxpZ2h0aW5nIHB1cnBvc2VzLlxuICBpbmNsdWRlTWF0Y2hlczogZmFsc2UsXG4gIC8vIFdoZW4gYHRydWVgLCB0aGUgbWF0Y2hpbmcgZnVuY3Rpb24gd2lsbCBjb250aW51ZSB0byB0aGUgZW5kIG9mIGEgc2VhcmNoIHBhdHRlcm4gZXZlbiBpZlxuICAvLyBhIHBlcmZlY3QgbWF0Y2ggaGFzIGFscmVhZHkgYmVlbiBsb2NhdGVkIGluIHRoZSBzdHJpbmcuXG4gIGZpbmRBbGxNYXRjaGVzOiBmYWxzZSxcbiAgLy8gTWluaW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyB0aGF0IG11c3QgYmUgbWF0Y2hlZCBiZWZvcmUgYSByZXN1bHQgaXMgY29uc2lkZXJlZCBhIG1hdGNoXG4gIG1pbk1hdGNoQ2hhckxlbmd0aDogMVxufTtcblxuY29uc3QgQmFzaWNPcHRpb25zID0ge1xuICAvLyBXaGVuIGB0cnVlYCwgdGhlIGFsZ29yaXRobSBjb250aW51ZXMgc2VhcmNoaW5nIHRvIHRoZSBlbmQgb2YgdGhlIGlucHV0IGV2ZW4gaWYgYSBwZXJmZWN0XG4gIC8vIG1hdGNoIGlzIGZvdW5kIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBzYW1lIGlucHV0LlxuICBpc0Nhc2VTZW5zaXRpdmU6IGZhbHNlLFxuICAvLyBXaGVuIHRydWUsIHRoZSBtYXRjaGluZyBmdW5jdGlvbiB3aWxsIGNvbnRpbnVlIHRvIHRoZSBlbmQgb2YgYSBzZWFyY2ggcGF0dGVybiBldmVuIGlmXG4gIGluY2x1ZGVTY29yZTogZmFsc2UsXG4gIC8vIExpc3Qgb2YgcHJvcGVydGllcyB0aGF0IHdpbGwgYmUgc2VhcmNoZWQuIFRoaXMgYWxzbyBzdXBwb3J0cyBuZXN0ZWQgcHJvcGVydGllcy5cbiAga2V5czogW10sXG4gIC8vIFdoZXRoZXIgdG8gc29ydCB0aGUgcmVzdWx0IGxpc3QsIGJ5IHNjb3JlXG4gIHNob3VsZFNvcnQ6IHRydWUsXG4gIC8vIERlZmF1bHQgc29ydCBmdW5jdGlvbjogc29ydCBieSBhc2NlbmRpbmcgc2NvcmUsIGFzY2VuZGluZyBpbmRleFxuICBzb3J0Rm46IChhLCBiKSA9PlxuICAgIGEuc2NvcmUgPT09IGIuc2NvcmUgPyAoYS5pZHggPCBiLmlkeCA/IC0xIDogMSkgOiBhLnNjb3JlIDwgYi5zY29yZSA/IC0xIDogMVxufTtcblxuY29uc3QgRnV6enlPcHRpb25zID0ge1xuICAvLyBBcHByb3hpbWF0ZWx5IHdoZXJlIGluIHRoZSB0ZXh0IGlzIHRoZSBwYXR0ZXJuIGV4cGVjdGVkIHRvIGJlIGZvdW5kP1xuICBsb2NhdGlvbjogMCxcbiAgLy8gQXQgd2hhdCBwb2ludCBkb2VzIHRoZSBtYXRjaCBhbGdvcml0aG0gZ2l2ZSB1cC4gQSB0aHJlc2hvbGQgb2YgJzAuMCcgcmVxdWlyZXMgYSBwZXJmZWN0IG1hdGNoXG4gIC8vIChvZiBib3RoIGxldHRlcnMgYW5kIGxvY2F0aW9uKSwgYSB0aHJlc2hvbGQgb2YgJzEuMCcgd291bGQgbWF0Y2ggYW55dGhpbmcuXG4gIHRocmVzaG9sZDogMC42LFxuICAvLyBEZXRlcm1pbmVzIGhvdyBjbG9zZSB0aGUgbWF0Y2ggbXVzdCBiZSB0byB0aGUgZnV6enkgbG9jYXRpb24gKHNwZWNpZmllZCBhYm92ZSkuXG4gIC8vIEFuIGV4YWN0IGxldHRlciBtYXRjaCB3aGljaCBpcyAnZGlzdGFuY2UnIGNoYXJhY3RlcnMgYXdheSBmcm9tIHRoZSBmdXp6eSBsb2NhdGlvblxuICAvLyB3b3VsZCBzY29yZSBhcyBhIGNvbXBsZXRlIG1pc21hdGNoLiBBIGRpc3RhbmNlIG9mICcwJyByZXF1aXJlcyB0aGUgbWF0Y2ggYmUgYXRcbiAgLy8gdGhlIGV4YWN0IGxvY2F0aW9uIHNwZWNpZmllZCwgYSB0aHJlc2hvbGQgb2YgJzEwMDAnIHdvdWxkIHJlcXVpcmUgYSBwZXJmZWN0IG1hdGNoXG4gIC8vIHRvIGJlIHdpdGhpbiA4MDAgY2hhcmFjdGVycyBvZiB0aGUgZnV6enkgbG9jYXRpb24gdG8gYmUgZm91bmQgdXNpbmcgYSAwLjggdGhyZXNob2xkLlxuICBkaXN0YW5jZTogMTAwXG59O1xuXG5jb25zdCBBZHZhbmNlZE9wdGlvbnMgPSB7XG4gIC8vIFdoZW4gYHRydWVgLCBpdCBlbmFibGVzIHRoZSB1c2Ugb2YgdW5peC1saWtlIHNlYXJjaCBjb21tYW5kc1xuICB1c2VFeHRlbmRlZFNlYXJjaDogZmFsc2UsXG4gIC8vIFRoZSBnZXQgZnVuY3Rpb24gdG8gdXNlIHdoZW4gZmV0Y2hpbmcgYW4gb2JqZWN0J3MgcHJvcGVydGllcy5cbiAgLy8gVGhlIGRlZmF1bHQgd2lsbCBzZWFyY2ggbmVzdGVkIHBhdGhzICppZSBmb28uYmFyLmJheipcbiAgZ2V0Rm46IGdldCxcbiAgLy8gV2hlbiBgdHJ1ZWAsIHNlYXJjaCB3aWxsIGlnbm9yZSBgbG9jYXRpb25gIGFuZCBgZGlzdGFuY2VgLCBzbyBpdCB3b24ndCBtYXR0ZXJcbiAgLy8gd2hlcmUgaW4gdGhlIHN0cmluZyB0aGUgcGF0dGVybiBhcHBlYXJzLlxuICAvLyBNb3JlIGluZm86IGh0dHBzOi8vZnVzZWpzLmlvL2NvbmNlcHRzL3Njb3JpbmctdGhlb3J5Lmh0bWwjZnV6emluZXNzLXNjb3JlXG4gIGlnbm9yZUxvY2F0aW9uOiBmYWxzZSxcbiAgLy8gV2hlbiBgdHJ1ZWAsIHRoZSBjYWxjdWxhdGlvbiBmb3IgdGhlIHJlbGV2YW5jZSBzY29yZSAodXNlZCBmb3Igc29ydGluZykgd2lsbFxuICAvLyBpZ25vcmUgdGhlIGZpZWxkLWxlbmd0aCBub3JtLlxuICAvLyBNb3JlIGluZm86IGh0dHBzOi8vZnVzZWpzLmlvL2NvbmNlcHRzL3Njb3JpbmctdGhlb3J5Lmh0bWwjZmllbGQtbGVuZ3RoLW5vcm1cbiAgaWdub3JlRmllbGROb3JtOiBmYWxzZSxcbiAgLy8gVGhlIHdlaWdodCB0byBkZXRlcm1pbmUgaG93IG11Y2ggZmllbGQgbGVuZ3RoIG5vcm0gZWZmZWN0cyBzY29yaW5nLlxuICBmaWVsZE5vcm1XZWlnaHQ6IDFcbn07XG5cbnZhciBDb25maWcgPSB7XG4gIC4uLkJhc2ljT3B0aW9ucyxcbiAgLi4uTWF0Y2hPcHRpb25zLFxuICAuLi5GdXp6eU9wdGlvbnMsXG4gIC4uLkFkdmFuY2VkT3B0aW9uc1xufTtcblxuY29uc3QgU1BBQ0UgPSAvW14gXSsvZztcblxuLy8gRmllbGQtbGVuZ3RoIG5vcm06IHRoZSBzaG9ydGVyIHRoZSBmaWVsZCwgdGhlIGhpZ2hlciB0aGUgd2VpZ2h0LlxuLy8gU2V0IHRvIDMgZGVjaW1hbHMgdG8gcmVkdWNlIGluZGV4IHNpemUuXG5mdW5jdGlvbiBub3JtKHdlaWdodCA9IDEsIG1hbnRpc3NhID0gMykge1xuICBjb25zdCBjYWNoZSA9IG5ldyBNYXAoKTtcbiAgY29uc3QgbSA9IE1hdGgucG93KDEwLCBtYW50aXNzYSk7XG5cbiAgcmV0dXJuIHtcbiAgICBnZXQodmFsdWUpIHtcbiAgICAgIGNvbnN0IG51bVRva2VucyA9IHZhbHVlLm1hdGNoKFNQQUNFKS5sZW5ndGg7XG5cbiAgICAgIGlmIChjYWNoZS5oYXMobnVtVG9rZW5zKSkge1xuICAgICAgICByZXR1cm4gY2FjaGUuZ2V0KG51bVRva2VucylcbiAgICAgIH1cblxuICAgICAgLy8gRGVmYXVsdCBmdW5jdGlvbiBpcyAxL3NxcnQoeCksIHdlaWdodCBtYWtlcyB0aGF0IHZhcmlhYmxlXG4gICAgICBjb25zdCBub3JtID0gMSAvIE1hdGgucG93KG51bVRva2VucywgMC41ICogd2VpZ2h0KTtcblxuICAgICAgLy8gSW4gcGxhY2Ugb2YgYHRvRml4ZWQobWFudGlzc2EpYCwgZm9yIGZhc3RlciBjb21wdXRhdGlvblxuICAgICAgY29uc3QgbiA9IHBhcnNlRmxvYXQoTWF0aC5yb3VuZChub3JtICogbSkgLyBtKTtcblxuICAgICAgY2FjaGUuc2V0KG51bVRva2Vucywgbik7XG5cbiAgICAgIHJldHVybiBuXG4gICAgfSxcbiAgICBjbGVhcigpIHtcbiAgICAgIGNhY2hlLmNsZWFyKCk7XG4gICAgfVxuICB9XG59XG5cbmNsYXNzIEZ1c2VJbmRleCB7XG4gIGNvbnN0cnVjdG9yKHtcbiAgICBnZXRGbiA9IENvbmZpZy5nZXRGbixcbiAgICBmaWVsZE5vcm1XZWlnaHQgPSBDb25maWcuZmllbGROb3JtV2VpZ2h0XG4gIH0gPSB7fSkge1xuICAgIHRoaXMubm9ybSA9IG5vcm0oZmllbGROb3JtV2VpZ2h0LCAzKTtcbiAgICB0aGlzLmdldEZuID0gZ2V0Rm47XG4gICAgdGhpcy5pc0NyZWF0ZWQgPSBmYWxzZTtcblxuICAgIHRoaXMuc2V0SW5kZXhSZWNvcmRzKCk7XG4gIH1cbiAgc2V0U291cmNlcyhkb2NzID0gW10pIHtcbiAgICB0aGlzLmRvY3MgPSBkb2NzO1xuICB9XG4gIHNldEluZGV4UmVjb3JkcyhyZWNvcmRzID0gW10pIHtcbiAgICB0aGlzLnJlY29yZHMgPSByZWNvcmRzO1xuICB9XG4gIHNldEtleXMoa2V5cyA9IFtdKSB7XG4gICAgdGhpcy5rZXlzID0ga2V5cztcbiAgICB0aGlzLl9rZXlzTWFwID0ge307XG4gICAga2V5cy5mb3JFYWNoKChrZXksIGlkeCkgPT4ge1xuICAgICAgdGhpcy5fa2V5c01hcFtrZXkuaWRdID0gaWR4O1xuICAgIH0pO1xuICB9XG4gIGNyZWF0ZSgpIHtcbiAgICBpZiAodGhpcy5pc0NyZWF0ZWQgfHwgIXRoaXMuZG9jcy5sZW5ndGgpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuaXNDcmVhdGVkID0gdHJ1ZTtcblxuICAgIC8vIExpc3QgaXMgQXJyYXk8U3RyaW5nPlxuICAgIGlmIChpc1N0cmluZyh0aGlzLmRvY3NbMF0pKSB7XG4gICAgICB0aGlzLmRvY3MuZm9yRWFjaCgoZG9jLCBkb2NJbmRleCkgPT4ge1xuICAgICAgICB0aGlzLl9hZGRTdHJpbmcoZG9jLCBkb2NJbmRleCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTGlzdCBpcyBBcnJheTxPYmplY3Q+XG4gICAgICB0aGlzLmRvY3MuZm9yRWFjaCgoZG9jLCBkb2NJbmRleCkgPT4ge1xuICAgICAgICB0aGlzLl9hZGRPYmplY3QoZG9jLCBkb2NJbmRleCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLm5vcm0uY2xlYXIoKTtcbiAgfVxuICAvLyBBZGRzIGEgZG9jIHRvIHRoZSBlbmQgb2YgdGhlIGluZGV4XG4gIGFkZChkb2MpIHtcbiAgICBjb25zdCBpZHggPSB0aGlzLnNpemUoKTtcblxuICAgIGlmIChpc1N0cmluZyhkb2MpKSB7XG4gICAgICB0aGlzLl9hZGRTdHJpbmcoZG9jLCBpZHgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9hZGRPYmplY3QoZG9jLCBpZHgpO1xuICAgIH1cbiAgfVxuICAvLyBSZW1vdmVzIHRoZSBkb2MgYXQgdGhlIHNwZWNpZmllZCBpbmRleCBvZiB0aGUgaW5kZXhcbiAgcmVtb3ZlQXQoaWR4KSB7XG4gICAgdGhpcy5yZWNvcmRzLnNwbGljZShpZHgsIDEpO1xuXG4gICAgLy8gQ2hhbmdlIHJlZiBpbmRleCBvZiBldmVyeSBzdWJzcXVlbnQgZG9jXG4gICAgZm9yIChsZXQgaSA9IGlkeCwgbGVuID0gdGhpcy5zaXplKCk7IGkgPCBsZW47IGkgKz0gMSkge1xuICAgICAgdGhpcy5yZWNvcmRzW2ldLmkgLT0gMTtcbiAgICB9XG4gIH1cbiAgZ2V0VmFsdWVGb3JJdGVtQXRLZXlJZChpdGVtLCBrZXlJZCkge1xuICAgIHJldHVybiBpdGVtW3RoaXMuX2tleXNNYXBba2V5SWRdXVxuICB9XG4gIHNpemUoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVjb3Jkcy5sZW5ndGhcbiAgfVxuICBfYWRkU3RyaW5nKGRvYywgZG9jSW5kZXgpIHtcbiAgICBpZiAoIWlzRGVmaW5lZChkb2MpIHx8IGlzQmxhbmsoZG9jKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgbGV0IHJlY29yZCA9IHtcbiAgICAgIHY6IGRvYyxcbiAgICAgIGk6IGRvY0luZGV4LFxuICAgICAgbjogdGhpcy5ub3JtLmdldChkb2MpXG4gICAgfTtcblxuICAgIHRoaXMucmVjb3Jkcy5wdXNoKHJlY29yZCk7XG4gIH1cbiAgX2FkZE9iamVjdChkb2MsIGRvY0luZGV4KSB7XG4gICAgbGV0IHJlY29yZCA9IHsgaTogZG9jSW5kZXgsICQ6IHt9IH07XG5cbiAgICAvLyBJdGVyYXRlIG92ZXIgZXZlcnkga2V5IChpLmUsIHBhdGgpLCBhbmQgZmV0Y2ggdGhlIHZhbHVlIGF0IHRoYXQga2V5XG4gICAgdGhpcy5rZXlzLmZvckVhY2goKGtleSwga2V5SW5kZXgpID0+IHtcbiAgICAgIGxldCB2YWx1ZSA9IGtleS5nZXRGbiA/IGtleS5nZXRGbihkb2MpIDogdGhpcy5nZXRGbihkb2MsIGtleS5wYXRoKTtcblxuICAgICAgaWYgKCFpc0RlZmluZWQodmFsdWUpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgbGV0IHN1YlJlY29yZHMgPSBbXTtcbiAgICAgICAgY29uc3Qgc3RhY2sgPSBbeyBuZXN0ZWRBcnJJbmRleDogLTEsIHZhbHVlIH1dO1xuXG4gICAgICAgIHdoaWxlIChzdGFjay5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCB7IG5lc3RlZEFyckluZGV4LCB2YWx1ZSB9ID0gc3RhY2sucG9wKCk7XG5cbiAgICAgICAgICBpZiAoIWlzRGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGlzU3RyaW5nKHZhbHVlKSAmJiAhaXNCbGFuayh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGxldCBzdWJSZWNvcmQgPSB7XG4gICAgICAgICAgICAgIHY6IHZhbHVlLFxuICAgICAgICAgICAgICBpOiBuZXN0ZWRBcnJJbmRleCxcbiAgICAgICAgICAgICAgbjogdGhpcy5ub3JtLmdldCh2YWx1ZSlcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHN1YlJlY29yZHMucHVzaChzdWJSZWNvcmQpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlLmZvckVhY2goKGl0ZW0sIGspID0+IHtcbiAgICAgICAgICAgICAgc3RhY2sucHVzaCh7XG4gICAgICAgICAgICAgICAgbmVzdGVkQXJySW5kZXg6IGssXG4gICAgICAgICAgICAgICAgdmFsdWU6IGl0ZW1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgO1xuICAgICAgICB9XG4gICAgICAgIHJlY29yZC4kW2tleUluZGV4XSA9IHN1YlJlY29yZHM7XG4gICAgICB9IGVsc2UgaWYgKGlzU3RyaW5nKHZhbHVlKSAmJiAhaXNCbGFuayh2YWx1ZSkpIHtcbiAgICAgICAgbGV0IHN1YlJlY29yZCA9IHtcbiAgICAgICAgICB2OiB2YWx1ZSxcbiAgICAgICAgICBuOiB0aGlzLm5vcm0uZ2V0KHZhbHVlKVxuICAgICAgICB9O1xuXG4gICAgICAgIHJlY29yZC4kW2tleUluZGV4XSA9IHN1YlJlY29yZDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMucmVjb3Jkcy5wdXNoKHJlY29yZCk7XG4gIH1cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiB7XG4gICAgICBrZXlzOiB0aGlzLmtleXMsXG4gICAgICByZWNvcmRzOiB0aGlzLnJlY29yZHNcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlSW5kZXgoXG4gIGtleXMsXG4gIGRvY3MsXG4gIHsgZ2V0Rm4gPSBDb25maWcuZ2V0Rm4sIGZpZWxkTm9ybVdlaWdodCA9IENvbmZpZy5maWVsZE5vcm1XZWlnaHQgfSA9IHt9XG4pIHtcbiAgY29uc3QgbXlJbmRleCA9IG5ldyBGdXNlSW5kZXgoeyBnZXRGbiwgZmllbGROb3JtV2VpZ2h0IH0pO1xuICBteUluZGV4LnNldEtleXMoa2V5cy5tYXAoY3JlYXRlS2V5KSk7XG4gIG15SW5kZXguc2V0U291cmNlcyhkb2NzKTtcbiAgbXlJbmRleC5jcmVhdGUoKTtcbiAgcmV0dXJuIG15SW5kZXhcbn1cblxuZnVuY3Rpb24gcGFyc2VJbmRleChcbiAgZGF0YSxcbiAgeyBnZXRGbiA9IENvbmZpZy5nZXRGbiwgZmllbGROb3JtV2VpZ2h0ID0gQ29uZmlnLmZpZWxkTm9ybVdlaWdodCB9ID0ge31cbikge1xuICBjb25zdCB7IGtleXMsIHJlY29yZHMgfSA9IGRhdGE7XG4gIGNvbnN0IG15SW5kZXggPSBuZXcgRnVzZUluZGV4KHsgZ2V0Rm4sIGZpZWxkTm9ybVdlaWdodCB9KTtcbiAgbXlJbmRleC5zZXRLZXlzKGtleXMpO1xuICBteUluZGV4LnNldEluZGV4UmVjb3JkcyhyZWNvcmRzKTtcbiAgcmV0dXJuIG15SW5kZXhcbn1cblxuZnVuY3Rpb24gY29tcHV0ZVNjb3JlJDEoXG4gIHBhdHRlcm4sXG4gIHtcbiAgICBlcnJvcnMgPSAwLFxuICAgIGN1cnJlbnRMb2NhdGlvbiA9IDAsXG4gICAgZXhwZWN0ZWRMb2NhdGlvbiA9IDAsXG4gICAgZGlzdGFuY2UgPSBDb25maWcuZGlzdGFuY2UsXG4gICAgaWdub3JlTG9jYXRpb24gPSBDb25maWcuaWdub3JlTG9jYXRpb25cbiAgfSA9IHt9XG4pIHtcbiAgY29uc3QgYWNjdXJhY3kgPSBlcnJvcnMgLyBwYXR0ZXJuLmxlbmd0aDtcblxuICBpZiAoaWdub3JlTG9jYXRpb24pIHtcbiAgICByZXR1cm4gYWNjdXJhY3lcbiAgfVxuXG4gIGNvbnN0IHByb3hpbWl0eSA9IE1hdGguYWJzKGV4cGVjdGVkTG9jYXRpb24gLSBjdXJyZW50TG9jYXRpb24pO1xuXG4gIGlmICghZGlzdGFuY2UpIHtcbiAgICAvLyBEb2RnZSBkaXZpZGUgYnkgemVybyBlcnJvci5cbiAgICByZXR1cm4gcHJveGltaXR5ID8gMS4wIDogYWNjdXJhY3lcbiAgfVxuXG4gIHJldHVybiBhY2N1cmFjeSArIHByb3hpbWl0eSAvIGRpc3RhbmNlXG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRNYXNrVG9JbmRpY2VzKFxuICBtYXRjaG1hc2sgPSBbXSxcbiAgbWluTWF0Y2hDaGFyTGVuZ3RoID0gQ29uZmlnLm1pbk1hdGNoQ2hhckxlbmd0aFxuKSB7XG4gIGxldCBpbmRpY2VzID0gW107XG4gIGxldCBzdGFydCA9IC0xO1xuICBsZXQgZW5kID0gLTE7XG4gIGxldCBpID0gMDtcblxuICBmb3IgKGxldCBsZW4gPSBtYXRjaG1hc2subGVuZ3RoOyBpIDwgbGVuOyBpICs9IDEpIHtcbiAgICBsZXQgbWF0Y2ggPSBtYXRjaG1hc2tbaV07XG4gICAgaWYgKG1hdGNoICYmIHN0YXJ0ID09PSAtMSkge1xuICAgICAgc3RhcnQgPSBpO1xuICAgIH0gZWxzZSBpZiAoIW1hdGNoICYmIHN0YXJ0ICE9PSAtMSkge1xuICAgICAgZW5kID0gaSAtIDE7XG4gICAgICBpZiAoZW5kIC0gc3RhcnQgKyAxID49IG1pbk1hdGNoQ2hhckxlbmd0aCkge1xuICAgICAgICBpbmRpY2VzLnB1c2goW3N0YXJ0LCBlbmRdKTtcbiAgICAgIH1cbiAgICAgIHN0YXJ0ID0gLTE7XG4gICAgfVxuICB9XG5cbiAgLy8gKGktMSAtIHN0YXJ0KSArIDEgPT4gaSAtIHN0YXJ0XG4gIGlmIChtYXRjaG1hc2tbaSAtIDFdICYmIGkgLSBzdGFydCA+PSBtaW5NYXRjaENoYXJMZW5ndGgpIHtcbiAgICBpbmRpY2VzLnB1c2goW3N0YXJ0LCBpIC0gMV0pO1xuICB9XG5cbiAgcmV0dXJuIGluZGljZXNcbn1cblxuLy8gTWFjaGluZSB3b3JkIHNpemVcbmNvbnN0IE1BWF9CSVRTID0gMzI7XG5cbmZ1bmN0aW9uIHNlYXJjaChcbiAgdGV4dCxcbiAgcGF0dGVybixcbiAgcGF0dGVybkFscGhhYmV0LFxuICB7XG4gICAgbG9jYXRpb24gPSBDb25maWcubG9jYXRpb24sXG4gICAgZGlzdGFuY2UgPSBDb25maWcuZGlzdGFuY2UsXG4gICAgdGhyZXNob2xkID0gQ29uZmlnLnRocmVzaG9sZCxcbiAgICBmaW5kQWxsTWF0Y2hlcyA9IENvbmZpZy5maW5kQWxsTWF0Y2hlcyxcbiAgICBtaW5NYXRjaENoYXJMZW5ndGggPSBDb25maWcubWluTWF0Y2hDaGFyTGVuZ3RoLFxuICAgIGluY2x1ZGVNYXRjaGVzID0gQ29uZmlnLmluY2x1ZGVNYXRjaGVzLFxuICAgIGlnbm9yZUxvY2F0aW9uID0gQ29uZmlnLmlnbm9yZUxvY2F0aW9uXG4gIH0gPSB7fVxuKSB7XG4gIGlmIChwYXR0ZXJuLmxlbmd0aCA+IE1BWF9CSVRTKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFBBVFRFUk5fTEVOR1RIX1RPT19MQVJHRShNQVhfQklUUykpXG4gIH1cblxuICBjb25zdCBwYXR0ZXJuTGVuID0gcGF0dGVybi5sZW5ndGg7XG4gIC8vIFNldCBzdGFydGluZyBsb2NhdGlvbiBhdCBiZWdpbm5pbmcgdGV4dCBhbmQgaW5pdGlhbGl6ZSB0aGUgYWxwaGFiZXQuXG4gIGNvbnN0IHRleHRMZW4gPSB0ZXh0Lmxlbmd0aDtcbiAgLy8gSGFuZGxlIHRoZSBjYXNlIHdoZW4gbG9jYXRpb24gPiB0ZXh0Lmxlbmd0aFxuICBjb25zdCBleHBlY3RlZExvY2F0aW9uID0gTWF0aC5tYXgoMCwgTWF0aC5taW4obG9jYXRpb24sIHRleHRMZW4pKTtcbiAgLy8gSGlnaGVzdCBzY29yZSBiZXlvbmQgd2hpY2ggd2UgZ2l2ZSB1cC5cbiAgbGV0IGN1cnJlbnRUaHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIC8vIElzIHRoZXJlIGEgbmVhcmJ5IGV4YWN0IG1hdGNoPyAoc3BlZWR1cClcbiAgbGV0IGJlc3RMb2NhdGlvbiA9IGV4cGVjdGVkTG9jYXRpb247XG5cbiAgLy8gUGVyZm9ybWFuY2U6IG9ubHkgY29tcHV0ZXIgbWF0Y2hlcyB3aGVuIHRoZSBtaW5NYXRjaENoYXJMZW5ndGggPiAxXG4gIC8vIE9SIGlmIGBpbmNsdWRlTWF0Y2hlc2AgaXMgdHJ1ZS5cbiAgY29uc3QgY29tcHV0ZU1hdGNoZXMgPSBtaW5NYXRjaENoYXJMZW5ndGggPiAxIHx8IGluY2x1ZGVNYXRjaGVzO1xuICAvLyBBIG1hc2sgb2YgdGhlIG1hdGNoZXMsIHVzZWQgZm9yIGJ1aWxkaW5nIHRoZSBpbmRpY2VzXG4gIGNvbnN0IG1hdGNoTWFzayA9IGNvbXB1dGVNYXRjaGVzID8gQXJyYXkodGV4dExlbikgOiBbXTtcblxuICBsZXQgaW5kZXg7XG5cbiAgLy8gR2V0IGFsbCBleGFjdCBtYXRjaGVzLCBoZXJlIGZvciBzcGVlZCB1cFxuICB3aGlsZSAoKGluZGV4ID0gdGV4dC5pbmRleE9mKHBhdHRlcm4sIGJlc3RMb2NhdGlvbikpID4gLTEpIHtcbiAgICBsZXQgc2NvcmUgPSBjb21wdXRlU2NvcmUkMShwYXR0ZXJuLCB7XG4gICAgICBjdXJyZW50TG9jYXRpb246IGluZGV4LFxuICAgICAgZXhwZWN0ZWRMb2NhdGlvbixcbiAgICAgIGRpc3RhbmNlLFxuICAgICAgaWdub3JlTG9jYXRpb25cbiAgICB9KTtcblxuICAgIGN1cnJlbnRUaHJlc2hvbGQgPSBNYXRoLm1pbihzY29yZSwgY3VycmVudFRocmVzaG9sZCk7XG4gICAgYmVzdExvY2F0aW9uID0gaW5kZXggKyBwYXR0ZXJuTGVuO1xuXG4gICAgaWYgKGNvbXB1dGVNYXRjaGVzKSB7XG4gICAgICBsZXQgaSA9IDA7XG4gICAgICB3aGlsZSAoaSA8IHBhdHRlcm5MZW4pIHtcbiAgICAgICAgbWF0Y2hNYXNrW2luZGV4ICsgaV0gPSAxO1xuICAgICAgICBpICs9IDE7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUmVzZXQgdGhlIGJlc3QgbG9jYXRpb25cbiAgYmVzdExvY2F0aW9uID0gLTE7XG5cbiAgbGV0IGxhc3RCaXRBcnIgPSBbXTtcbiAgbGV0IGZpbmFsU2NvcmUgPSAxO1xuICBsZXQgYmluTWF4ID0gcGF0dGVybkxlbiArIHRleHRMZW47XG5cbiAgY29uc3QgbWFzayA9IDEgPDwgKHBhdHRlcm5MZW4gLSAxKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHBhdHRlcm5MZW47IGkgKz0gMSkge1xuICAgIC8vIFNjYW4gZm9yIHRoZSBiZXN0IG1hdGNoOyBlYWNoIGl0ZXJhdGlvbiBhbGxvd3MgZm9yIG9uZSBtb3JlIGVycm9yLlxuICAgIC8vIFJ1biBhIGJpbmFyeSBzZWFyY2ggdG8gZGV0ZXJtaW5lIGhvdyBmYXIgZnJvbSB0aGUgbWF0Y2ggbG9jYXRpb24gd2UgY2FuIHN0cmF5XG4gICAgLy8gYXQgdGhpcyBlcnJvciBsZXZlbC5cbiAgICBsZXQgYmluTWluID0gMDtcbiAgICBsZXQgYmluTWlkID0gYmluTWF4O1xuXG4gICAgd2hpbGUgKGJpbk1pbiA8IGJpbk1pZCkge1xuICAgICAgY29uc3Qgc2NvcmUgPSBjb21wdXRlU2NvcmUkMShwYXR0ZXJuLCB7XG4gICAgICAgIGVycm9yczogaSxcbiAgICAgICAgY3VycmVudExvY2F0aW9uOiBleHBlY3RlZExvY2F0aW9uICsgYmluTWlkLFxuICAgICAgICBleHBlY3RlZExvY2F0aW9uLFxuICAgICAgICBkaXN0YW5jZSxcbiAgICAgICAgaWdub3JlTG9jYXRpb25cbiAgICAgIH0pO1xuXG4gICAgICBpZiAoc2NvcmUgPD0gY3VycmVudFRocmVzaG9sZCkge1xuICAgICAgICBiaW5NaW4gPSBiaW5NaWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiaW5NYXggPSBiaW5NaWQ7XG4gICAgICB9XG5cbiAgICAgIGJpbk1pZCA9IE1hdGguZmxvb3IoKGJpbk1heCAtIGJpbk1pbikgLyAyICsgYmluTWluKTtcbiAgICB9XG5cbiAgICAvLyBVc2UgdGhlIHJlc3VsdCBmcm9tIHRoaXMgaXRlcmF0aW9uIGFzIHRoZSBtYXhpbXVtIGZvciB0aGUgbmV4dC5cbiAgICBiaW5NYXggPSBiaW5NaWQ7XG5cbiAgICBsZXQgc3RhcnQgPSBNYXRoLm1heCgxLCBleHBlY3RlZExvY2F0aW9uIC0gYmluTWlkICsgMSk7XG4gICAgbGV0IGZpbmlzaCA9IGZpbmRBbGxNYXRjaGVzXG4gICAgICA/IHRleHRMZW5cbiAgICAgIDogTWF0aC5taW4oZXhwZWN0ZWRMb2NhdGlvbiArIGJpbk1pZCwgdGV4dExlbikgKyBwYXR0ZXJuTGVuO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgYml0IGFycmF5XG4gICAgbGV0IGJpdEFyciA9IEFycmF5KGZpbmlzaCArIDIpO1xuXG4gICAgYml0QXJyW2ZpbmlzaCArIDFdID0gKDEgPDwgaSkgLSAxO1xuXG4gICAgZm9yIChsZXQgaiA9IGZpbmlzaDsgaiA+PSBzdGFydDsgaiAtPSAxKSB7XG4gICAgICBsZXQgY3VycmVudExvY2F0aW9uID0gaiAtIDE7XG4gICAgICBsZXQgY2hhck1hdGNoID0gcGF0dGVybkFscGhhYmV0W3RleHQuY2hhckF0KGN1cnJlbnRMb2NhdGlvbildO1xuXG4gICAgICBpZiAoY29tcHV0ZU1hdGNoZXMpIHtcbiAgICAgICAgLy8gU3BlZWQgdXA6IHF1aWNrIGJvb2wgdG8gaW50IGNvbnZlcnNpb24gKGkuZSwgYGNoYXJNYXRjaCA/IDEgOiAwYClcbiAgICAgICAgbWF0Y2hNYXNrW2N1cnJlbnRMb2NhdGlvbl0gPSArISFjaGFyTWF0Y2g7XG4gICAgICB9XG5cbiAgICAgIC8vIEZpcnN0IHBhc3M6IGV4YWN0IG1hdGNoXG4gICAgICBiaXRBcnJbal0gPSAoKGJpdEFycltqICsgMV0gPDwgMSkgfCAxKSAmIGNoYXJNYXRjaDtcblxuICAgICAgLy8gU3Vic2VxdWVudCBwYXNzZXM6IGZ1enp5IG1hdGNoXG4gICAgICBpZiAoaSkge1xuICAgICAgICBiaXRBcnJbal0gfD1cbiAgICAgICAgICAoKGxhc3RCaXRBcnJbaiArIDFdIHwgbGFzdEJpdEFycltqXSkgPDwgMSkgfCAxIHwgbGFzdEJpdEFycltqICsgMV07XG4gICAgICB9XG5cbiAgICAgIGlmIChiaXRBcnJbal0gJiBtYXNrKSB7XG4gICAgICAgIGZpbmFsU2NvcmUgPSBjb21wdXRlU2NvcmUkMShwYXR0ZXJuLCB7XG4gICAgICAgICAgZXJyb3JzOiBpLFxuICAgICAgICAgIGN1cnJlbnRMb2NhdGlvbixcbiAgICAgICAgICBleHBlY3RlZExvY2F0aW9uLFxuICAgICAgICAgIGRpc3RhbmNlLFxuICAgICAgICAgIGlnbm9yZUxvY2F0aW9uXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFRoaXMgbWF0Y2ggd2lsbCBhbG1vc3QgY2VydGFpbmx5IGJlIGJldHRlciB0aGFuIGFueSBleGlzdGluZyBtYXRjaC5cbiAgICAgICAgLy8gQnV0IGNoZWNrIGFueXdheS5cbiAgICAgICAgaWYgKGZpbmFsU2NvcmUgPD0gY3VycmVudFRocmVzaG9sZCkge1xuICAgICAgICAgIC8vIEluZGVlZCBpdCBpc1xuICAgICAgICAgIGN1cnJlbnRUaHJlc2hvbGQgPSBmaW5hbFNjb3JlO1xuICAgICAgICAgIGJlc3RMb2NhdGlvbiA9IGN1cnJlbnRMb2NhdGlvbjtcblxuICAgICAgICAgIC8vIEFscmVhZHkgcGFzc2VkIGBsb2NgLCBkb3duaGlsbCBmcm9tIGhlcmUgb24gaW4uXG4gICAgICAgICAgaWYgKGJlc3RMb2NhdGlvbiA8PSBleHBlY3RlZExvY2F0aW9uKSB7XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFdoZW4gcGFzc2luZyBgYmVzdExvY2F0aW9uYCwgZG9uJ3QgZXhjZWVkIG91ciBjdXJyZW50IGRpc3RhbmNlIGZyb20gYGV4cGVjdGVkTG9jYXRpb25gLlxuICAgICAgICAgIHN0YXJ0ID0gTWF0aC5tYXgoMSwgMiAqIGV4cGVjdGVkTG9jYXRpb24gLSBiZXN0TG9jYXRpb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTm8gaG9wZSBmb3IgYSAoYmV0dGVyKSBtYXRjaCBhdCBncmVhdGVyIGVycm9yIGxldmVscy5cbiAgICBjb25zdCBzY29yZSA9IGNvbXB1dGVTY29yZSQxKHBhdHRlcm4sIHtcbiAgICAgIGVycm9yczogaSArIDEsXG4gICAgICBjdXJyZW50TG9jYXRpb246IGV4cGVjdGVkTG9jYXRpb24sXG4gICAgICBleHBlY3RlZExvY2F0aW9uLFxuICAgICAgZGlzdGFuY2UsXG4gICAgICBpZ25vcmVMb2NhdGlvblxuICAgIH0pO1xuXG4gICAgaWYgKHNjb3JlID4gY3VycmVudFRocmVzaG9sZCkge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBsYXN0Qml0QXJyID0gYml0QXJyO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIGlzTWF0Y2g6IGJlc3RMb2NhdGlvbiA+PSAwLFxuICAgIC8vIENvdW50IGV4YWN0IG1hdGNoZXMgKHRob3NlIHdpdGggYSBzY29yZSBvZiAwKSB0byBiZSBcImFsbW9zdFwiIGV4YWN0XG4gICAgc2NvcmU6IE1hdGgubWF4KDAuMDAxLCBmaW5hbFNjb3JlKVxuICB9O1xuXG4gIGlmIChjb21wdXRlTWF0Y2hlcykge1xuICAgIGNvbnN0IGluZGljZXMgPSBjb252ZXJ0TWFza1RvSW5kaWNlcyhtYXRjaE1hc2ssIG1pbk1hdGNoQ2hhckxlbmd0aCk7XG4gICAgaWYgKCFpbmRpY2VzLmxlbmd0aCkge1xuICAgICAgcmVzdWx0LmlzTWF0Y2ggPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKGluY2x1ZGVNYXRjaGVzKSB7XG4gICAgICByZXN1bHQuaW5kaWNlcyA9IGluZGljZXM7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5mdW5jdGlvbiBjcmVhdGVQYXR0ZXJuQWxwaGFiZXQocGF0dGVybikge1xuICBsZXQgbWFzayA9IHt9O1xuXG4gIGZvciAobGV0IGkgPSAwLCBsZW4gPSBwYXR0ZXJuLmxlbmd0aDsgaSA8IGxlbjsgaSArPSAxKSB7XG4gICAgY29uc3QgY2hhciA9IHBhdHRlcm4uY2hhckF0KGkpO1xuICAgIG1hc2tbY2hhcl0gPSAobWFza1tjaGFyXSB8fCAwKSB8ICgxIDw8IChsZW4gLSBpIC0gMSkpO1xuICB9XG5cbiAgcmV0dXJuIG1hc2tcbn1cblxuY2xhc3MgQml0YXBTZWFyY2gge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwYXR0ZXJuLFxuICAgIHtcbiAgICAgIGxvY2F0aW9uID0gQ29uZmlnLmxvY2F0aW9uLFxuICAgICAgdGhyZXNob2xkID0gQ29uZmlnLnRocmVzaG9sZCxcbiAgICAgIGRpc3RhbmNlID0gQ29uZmlnLmRpc3RhbmNlLFxuICAgICAgaW5jbHVkZU1hdGNoZXMgPSBDb25maWcuaW5jbHVkZU1hdGNoZXMsXG4gICAgICBmaW5kQWxsTWF0Y2hlcyA9IENvbmZpZy5maW5kQWxsTWF0Y2hlcyxcbiAgICAgIG1pbk1hdGNoQ2hhckxlbmd0aCA9IENvbmZpZy5taW5NYXRjaENoYXJMZW5ndGgsXG4gICAgICBpc0Nhc2VTZW5zaXRpdmUgPSBDb25maWcuaXNDYXNlU2Vuc2l0aXZlLFxuICAgICAgaWdub3JlTG9jYXRpb24gPSBDb25maWcuaWdub3JlTG9jYXRpb25cbiAgICB9ID0ge31cbiAgKSB7XG4gICAgdGhpcy5vcHRpb25zID0ge1xuICAgICAgbG9jYXRpb24sXG4gICAgICB0aHJlc2hvbGQsXG4gICAgICBkaXN0YW5jZSxcbiAgICAgIGluY2x1ZGVNYXRjaGVzLFxuICAgICAgZmluZEFsbE1hdGNoZXMsXG4gICAgICBtaW5NYXRjaENoYXJMZW5ndGgsXG4gICAgICBpc0Nhc2VTZW5zaXRpdmUsXG4gICAgICBpZ25vcmVMb2NhdGlvblxuICAgIH07XG5cbiAgICB0aGlzLnBhdHRlcm4gPSBpc0Nhc2VTZW5zaXRpdmUgPyBwYXR0ZXJuIDogcGF0dGVybi50b0xvd2VyQ2FzZSgpO1xuXG4gICAgdGhpcy5jaHVua3MgPSBbXTtcblxuICAgIGlmICghdGhpcy5wYXR0ZXJuLmxlbmd0aCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgYWRkQ2h1bmsgPSAocGF0dGVybiwgc3RhcnRJbmRleCkgPT4ge1xuICAgICAgdGhpcy5jaHVua3MucHVzaCh7XG4gICAgICAgIHBhdHRlcm4sXG4gICAgICAgIGFscGhhYmV0OiBjcmVhdGVQYXR0ZXJuQWxwaGFiZXQocGF0dGVybiksXG4gICAgICAgIHN0YXJ0SW5kZXhcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBjb25zdCBsZW4gPSB0aGlzLnBhdHRlcm4ubGVuZ3RoO1xuXG4gICAgaWYgKGxlbiA+IE1BWF9CSVRTKSB7XG4gICAgICBsZXQgaSA9IDA7XG4gICAgICBjb25zdCByZW1haW5kZXIgPSBsZW4gJSBNQVhfQklUUztcbiAgICAgIGNvbnN0IGVuZCA9IGxlbiAtIHJlbWFpbmRlcjtcblxuICAgICAgd2hpbGUgKGkgPCBlbmQpIHtcbiAgICAgICAgYWRkQ2h1bmsodGhpcy5wYXR0ZXJuLnN1YnN0cihpLCBNQVhfQklUUyksIGkpO1xuICAgICAgICBpICs9IE1BWF9CSVRTO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVtYWluZGVyKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBsZW4gLSBNQVhfQklUUztcbiAgICAgICAgYWRkQ2h1bmsodGhpcy5wYXR0ZXJuLnN1YnN0cihzdGFydEluZGV4KSwgc3RhcnRJbmRleCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGFkZENodW5rKHRoaXMucGF0dGVybiwgMCk7XG4gICAgfVxuICB9XG5cbiAgc2VhcmNoSW4odGV4dCkge1xuICAgIGNvbnN0IHsgaXNDYXNlU2Vuc2l0aXZlLCBpbmNsdWRlTWF0Y2hlcyB9ID0gdGhpcy5vcHRpb25zO1xuXG4gICAgaWYgKCFpc0Nhc2VTZW5zaXRpdmUpIHtcbiAgICAgIHRleHQgPSB0ZXh0LnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgLy8gRXhhY3QgbWF0Y2hcbiAgICBpZiAodGhpcy5wYXR0ZXJuID09PSB0ZXh0KSB7XG4gICAgICBsZXQgcmVzdWx0ID0ge1xuICAgICAgICBpc01hdGNoOiB0cnVlLFxuICAgICAgICBzY29yZTogMFxuICAgICAgfTtcblxuICAgICAgaWYgKGluY2x1ZGVNYXRjaGVzKSB7XG4gICAgICAgIHJlc3VsdC5pbmRpY2VzID0gW1swLCB0ZXh0Lmxlbmd0aCAtIDFdXTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH1cblxuICAgIC8vIE90aGVyd2lzZSwgdXNlIEJpdGFwIGFsZ29yaXRobVxuICAgIGNvbnN0IHtcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgZGlzdGFuY2UsXG4gICAgICB0aHJlc2hvbGQsXG4gICAgICBmaW5kQWxsTWF0Y2hlcyxcbiAgICAgIG1pbk1hdGNoQ2hhckxlbmd0aCxcbiAgICAgIGlnbm9yZUxvY2F0aW9uXG4gICAgfSA9IHRoaXMub3B0aW9ucztcblxuICAgIGxldCBhbGxJbmRpY2VzID0gW107XG4gICAgbGV0IHRvdGFsU2NvcmUgPSAwO1xuICAgIGxldCBoYXNNYXRjaGVzID0gZmFsc2U7XG5cbiAgICB0aGlzLmNodW5rcy5mb3JFYWNoKCh7IHBhdHRlcm4sIGFscGhhYmV0LCBzdGFydEluZGV4IH0pID0+IHtcbiAgICAgIGNvbnN0IHsgaXNNYXRjaCwgc2NvcmUsIGluZGljZXMgfSA9IHNlYXJjaCh0ZXh0LCBwYXR0ZXJuLCBhbHBoYWJldCwge1xuICAgICAgICBsb2NhdGlvbjogbG9jYXRpb24gKyBzdGFydEluZGV4LFxuICAgICAgICBkaXN0YW5jZSxcbiAgICAgICAgdGhyZXNob2xkLFxuICAgICAgICBmaW5kQWxsTWF0Y2hlcyxcbiAgICAgICAgbWluTWF0Y2hDaGFyTGVuZ3RoLFxuICAgICAgICBpbmNsdWRlTWF0Y2hlcyxcbiAgICAgICAgaWdub3JlTG9jYXRpb25cbiAgICAgIH0pO1xuXG4gICAgICBpZiAoaXNNYXRjaCkge1xuICAgICAgICBoYXNNYXRjaGVzID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgdG90YWxTY29yZSArPSBzY29yZTtcblxuICAgICAgaWYgKGlzTWF0Y2ggJiYgaW5kaWNlcykge1xuICAgICAgICBhbGxJbmRpY2VzID0gWy4uLmFsbEluZGljZXMsIC4uLmluZGljZXNdO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbGV0IHJlc3VsdCA9IHtcbiAgICAgIGlzTWF0Y2g6IGhhc01hdGNoZXMsXG4gICAgICBzY29yZTogaGFzTWF0Y2hlcyA/IHRvdGFsU2NvcmUgLyB0aGlzLmNodW5rcy5sZW5ndGggOiAxXG4gICAgfTtcblxuICAgIGlmIChoYXNNYXRjaGVzICYmIGluY2x1ZGVNYXRjaGVzKSB7XG4gICAgICByZXN1bHQuaW5kaWNlcyA9IGFsbEluZGljZXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG59XG5cbmNsYXNzIEJhc2VNYXRjaCB7XG4gIGNvbnN0cnVjdG9yKHBhdHRlcm4pIHtcbiAgICB0aGlzLnBhdHRlcm4gPSBwYXR0ZXJuO1xuICB9XG4gIHN0YXRpYyBpc011bHRpTWF0Y2gocGF0dGVybikge1xuICAgIHJldHVybiBnZXRNYXRjaChwYXR0ZXJuLCB0aGlzLm11bHRpUmVnZXgpXG4gIH1cbiAgc3RhdGljIGlzU2luZ2xlTWF0Y2gocGF0dGVybikge1xuICAgIHJldHVybiBnZXRNYXRjaChwYXR0ZXJuLCB0aGlzLnNpbmdsZVJlZ2V4KVxuICB9XG4gIHNlYXJjaCgvKnRleHQqLykge31cbn1cblxuZnVuY3Rpb24gZ2V0TWF0Y2gocGF0dGVybiwgZXhwKSB7XG4gIGNvbnN0IG1hdGNoZXMgPSBwYXR0ZXJuLm1hdGNoKGV4cCk7XG4gIHJldHVybiBtYXRjaGVzID8gbWF0Y2hlc1sxXSA6IG51bGxcbn1cblxuLy8gVG9rZW46ICdmaWxlXG5cbmNsYXNzIEV4YWN0TWF0Y2ggZXh0ZW5kcyBCYXNlTWF0Y2gge1xuICBjb25zdHJ1Y3RvcihwYXR0ZXJuKSB7XG4gICAgc3VwZXIocGF0dGVybik7XG4gIH1cbiAgc3RhdGljIGdldCB0eXBlKCkge1xuICAgIHJldHVybiAnZXhhY3QnXG4gIH1cbiAgc3RhdGljIGdldCBtdWx0aVJlZ2V4KCkge1xuICAgIHJldHVybiAvXj1cIiguKilcIiQvXG4gIH1cbiAgc3RhdGljIGdldCBzaW5nbGVSZWdleCgpIHtcbiAgICByZXR1cm4gL149KC4qKSQvXG4gIH1cbiAgc2VhcmNoKHRleHQpIHtcbiAgICBjb25zdCBpc01hdGNoID0gdGV4dCA9PT0gdGhpcy5wYXR0ZXJuO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlzTWF0Y2gsXG4gICAgICBzY29yZTogaXNNYXRjaCA/IDAgOiAxLFxuICAgICAgaW5kaWNlczogWzAsIHRoaXMucGF0dGVybi5sZW5ndGggLSAxXVxuICAgIH1cbiAgfVxufVxuXG4vLyBUb2tlbjogIWZpcmVcblxuY2xhc3MgSW52ZXJzZUV4YWN0TWF0Y2ggZXh0ZW5kcyBCYXNlTWF0Y2gge1xuICBjb25zdHJ1Y3RvcihwYXR0ZXJuKSB7XG4gICAgc3VwZXIocGF0dGVybik7XG4gIH1cbiAgc3RhdGljIGdldCB0eXBlKCkge1xuICAgIHJldHVybiAnaW52ZXJzZS1leGFjdCdcbiAgfVxuICBzdGF0aWMgZ2V0IG11bHRpUmVnZXgoKSB7XG4gICAgcmV0dXJuIC9eIVwiKC4qKVwiJC9cbiAgfVxuICBzdGF0aWMgZ2V0IHNpbmdsZVJlZ2V4KCkge1xuICAgIHJldHVybiAvXiEoLiopJC9cbiAgfVxuICBzZWFyY2godGV4dCkge1xuICAgIGNvbnN0IGluZGV4ID0gdGV4dC5pbmRleE9mKHRoaXMucGF0dGVybik7XG4gICAgY29uc3QgaXNNYXRjaCA9IGluZGV4ID09PSAtMTtcblxuICAgIHJldHVybiB7XG4gICAgICBpc01hdGNoLFxuICAgICAgc2NvcmU6IGlzTWF0Y2ggPyAwIDogMSxcbiAgICAgIGluZGljZXM6IFswLCB0ZXh0Lmxlbmd0aCAtIDFdXG4gICAgfVxuICB9XG59XG5cbi8vIFRva2VuOiBeZmlsZVxuXG5jbGFzcyBQcmVmaXhFeGFjdE1hdGNoIGV4dGVuZHMgQmFzZU1hdGNoIHtcbiAgY29uc3RydWN0b3IocGF0dGVybikge1xuICAgIHN1cGVyKHBhdHRlcm4pO1xuICB9XG4gIHN0YXRpYyBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gJ3ByZWZpeC1leGFjdCdcbiAgfVxuICBzdGF0aWMgZ2V0IG11bHRpUmVnZXgoKSB7XG4gICAgcmV0dXJuIC9eXFxeXCIoLiopXCIkL1xuICB9XG4gIHN0YXRpYyBnZXQgc2luZ2xlUmVnZXgoKSB7XG4gICAgcmV0dXJuIC9eXFxeKC4qKSQvXG4gIH1cbiAgc2VhcmNoKHRleHQpIHtcbiAgICBjb25zdCBpc01hdGNoID0gdGV4dC5zdGFydHNXaXRoKHRoaXMucGF0dGVybik7XG5cbiAgICByZXR1cm4ge1xuICAgICAgaXNNYXRjaCxcbiAgICAgIHNjb3JlOiBpc01hdGNoID8gMCA6IDEsXG4gICAgICBpbmRpY2VzOiBbMCwgdGhpcy5wYXR0ZXJuLmxlbmd0aCAtIDFdXG4gICAgfVxuICB9XG59XG5cbi8vIFRva2VuOiAhXmZpcmVcblxuY2xhc3MgSW52ZXJzZVByZWZpeEV4YWN0TWF0Y2ggZXh0ZW5kcyBCYXNlTWF0Y2gge1xuICBjb25zdHJ1Y3RvcihwYXR0ZXJuKSB7XG4gICAgc3VwZXIocGF0dGVybik7XG4gIH1cbiAgc3RhdGljIGdldCB0eXBlKCkge1xuICAgIHJldHVybiAnaW52ZXJzZS1wcmVmaXgtZXhhY3QnXG4gIH1cbiAgc3RhdGljIGdldCBtdWx0aVJlZ2V4KCkge1xuICAgIHJldHVybiAvXiFcXF5cIiguKilcIiQvXG4gIH1cbiAgc3RhdGljIGdldCBzaW5nbGVSZWdleCgpIHtcbiAgICByZXR1cm4gL14hXFxeKC4qKSQvXG4gIH1cbiAgc2VhcmNoKHRleHQpIHtcbiAgICBjb25zdCBpc01hdGNoID0gIXRleHQuc3RhcnRzV2l0aCh0aGlzLnBhdHRlcm4pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlzTWF0Y2gsXG4gICAgICBzY29yZTogaXNNYXRjaCA/IDAgOiAxLFxuICAgICAgaW5kaWNlczogWzAsIHRleHQubGVuZ3RoIC0gMV1cbiAgICB9XG4gIH1cbn1cblxuLy8gVG9rZW46IC5maWxlJFxuXG5jbGFzcyBTdWZmaXhFeGFjdE1hdGNoIGV4dGVuZHMgQmFzZU1hdGNoIHtcbiAgY29uc3RydWN0b3IocGF0dGVybikge1xuICAgIHN1cGVyKHBhdHRlcm4pO1xuICB9XG4gIHN0YXRpYyBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gJ3N1ZmZpeC1leGFjdCdcbiAgfVxuICBzdGF0aWMgZ2V0IG11bHRpUmVnZXgoKSB7XG4gICAgcmV0dXJuIC9eXCIoLiopXCJcXCQkL1xuICB9XG4gIHN0YXRpYyBnZXQgc2luZ2xlUmVnZXgoKSB7XG4gICAgcmV0dXJuIC9eKC4qKVxcJCQvXG4gIH1cbiAgc2VhcmNoKHRleHQpIHtcbiAgICBjb25zdCBpc01hdGNoID0gdGV4dC5lbmRzV2l0aCh0aGlzLnBhdHRlcm4pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlzTWF0Y2gsXG4gICAgICBzY29yZTogaXNNYXRjaCA/IDAgOiAxLFxuICAgICAgaW5kaWNlczogW3RleHQubGVuZ3RoIC0gdGhpcy5wYXR0ZXJuLmxlbmd0aCwgdGV4dC5sZW5ndGggLSAxXVxuICAgIH1cbiAgfVxufVxuXG4vLyBUb2tlbjogIS5maWxlJFxuXG5jbGFzcyBJbnZlcnNlU3VmZml4RXhhY3RNYXRjaCBleHRlbmRzIEJhc2VNYXRjaCB7XG4gIGNvbnN0cnVjdG9yKHBhdHRlcm4pIHtcbiAgICBzdXBlcihwYXR0ZXJuKTtcbiAgfVxuICBzdGF0aWMgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuICdpbnZlcnNlLXN1ZmZpeC1leGFjdCdcbiAgfVxuICBzdGF0aWMgZ2V0IG11bHRpUmVnZXgoKSB7XG4gICAgcmV0dXJuIC9eIVwiKC4qKVwiXFwkJC9cbiAgfVxuICBzdGF0aWMgZ2V0IHNpbmdsZVJlZ2V4KCkge1xuICAgIHJldHVybiAvXiEoLiopXFwkJC9cbiAgfVxuICBzZWFyY2godGV4dCkge1xuICAgIGNvbnN0IGlzTWF0Y2ggPSAhdGV4dC5lbmRzV2l0aCh0aGlzLnBhdHRlcm4pO1xuICAgIHJldHVybiB7XG4gICAgICBpc01hdGNoLFxuICAgICAgc2NvcmU6IGlzTWF0Y2ggPyAwIDogMSxcbiAgICAgIGluZGljZXM6IFswLCB0ZXh0Lmxlbmd0aCAtIDFdXG4gICAgfVxuICB9XG59XG5cbmNsYXNzIEZ1enp5TWF0Y2ggZXh0ZW5kcyBCYXNlTWF0Y2gge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwYXR0ZXJuLFxuICAgIHtcbiAgICAgIGxvY2F0aW9uID0gQ29uZmlnLmxvY2F0aW9uLFxuICAgICAgdGhyZXNob2xkID0gQ29uZmlnLnRocmVzaG9sZCxcbiAgICAgIGRpc3RhbmNlID0gQ29uZmlnLmRpc3RhbmNlLFxuICAgICAgaW5jbHVkZU1hdGNoZXMgPSBDb25maWcuaW5jbHVkZU1hdGNoZXMsXG4gICAgICBmaW5kQWxsTWF0Y2hlcyA9IENvbmZpZy5maW5kQWxsTWF0Y2hlcyxcbiAgICAgIG1pbk1hdGNoQ2hhckxlbmd0aCA9IENvbmZpZy5taW5NYXRjaENoYXJMZW5ndGgsXG4gICAgICBpc0Nhc2VTZW5zaXRpdmUgPSBDb25maWcuaXNDYXNlU2Vuc2l0aXZlLFxuICAgICAgaWdub3JlTG9jYXRpb24gPSBDb25maWcuaWdub3JlTG9jYXRpb25cbiAgICB9ID0ge31cbiAgKSB7XG4gICAgc3VwZXIocGF0dGVybik7XG4gICAgdGhpcy5fYml0YXBTZWFyY2ggPSBuZXcgQml0YXBTZWFyY2gocGF0dGVybiwge1xuICAgICAgbG9jYXRpb24sXG4gICAgICB0aHJlc2hvbGQsXG4gICAgICBkaXN0YW5jZSxcbiAgICAgIGluY2x1ZGVNYXRjaGVzLFxuICAgICAgZmluZEFsbE1hdGNoZXMsXG4gICAgICBtaW5NYXRjaENoYXJMZW5ndGgsXG4gICAgICBpc0Nhc2VTZW5zaXRpdmUsXG4gICAgICBpZ25vcmVMb2NhdGlvblxuICAgIH0pO1xuICB9XG4gIHN0YXRpYyBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gJ2Z1enp5J1xuICB9XG4gIHN0YXRpYyBnZXQgbXVsdGlSZWdleCgpIHtcbiAgICByZXR1cm4gL15cIiguKilcIiQvXG4gIH1cbiAgc3RhdGljIGdldCBzaW5nbGVSZWdleCgpIHtcbiAgICByZXR1cm4gL14oLiopJC9cbiAgfVxuICBzZWFyY2godGV4dCkge1xuICAgIHJldHVybiB0aGlzLl9iaXRhcFNlYXJjaC5zZWFyY2hJbih0ZXh0KVxuICB9XG59XG5cbi8vIFRva2VuOiAnZmlsZVxuXG5jbGFzcyBJbmNsdWRlTWF0Y2ggZXh0ZW5kcyBCYXNlTWF0Y2gge1xuICBjb25zdHJ1Y3RvcihwYXR0ZXJuKSB7XG4gICAgc3VwZXIocGF0dGVybik7XG4gIH1cbiAgc3RhdGljIGdldCB0eXBlKCkge1xuICAgIHJldHVybiAnaW5jbHVkZSdcbiAgfVxuICBzdGF0aWMgZ2V0IG11bHRpUmVnZXgoKSB7XG4gICAgcmV0dXJuIC9eJ1wiKC4qKVwiJC9cbiAgfVxuICBzdGF0aWMgZ2V0IHNpbmdsZVJlZ2V4KCkge1xuICAgIHJldHVybiAvXicoLiopJC9cbiAgfVxuICBzZWFyY2godGV4dCkge1xuICAgIGxldCBsb2NhdGlvbiA9IDA7XG4gICAgbGV0IGluZGV4O1xuXG4gICAgY29uc3QgaW5kaWNlcyA9IFtdO1xuICAgIGNvbnN0IHBhdHRlcm5MZW4gPSB0aGlzLnBhdHRlcm4ubGVuZ3RoO1xuXG4gICAgLy8gR2V0IGFsbCBleGFjdCBtYXRjaGVzXG4gICAgd2hpbGUgKChpbmRleCA9IHRleHQuaW5kZXhPZih0aGlzLnBhdHRlcm4sIGxvY2F0aW9uKSkgPiAtMSkge1xuICAgICAgbG9jYXRpb24gPSBpbmRleCArIHBhdHRlcm5MZW47XG4gICAgICBpbmRpY2VzLnB1c2goW2luZGV4LCBsb2NhdGlvbiAtIDFdKTtcbiAgICB9XG5cbiAgICBjb25zdCBpc01hdGNoID0gISFpbmRpY2VzLmxlbmd0aDtcblxuICAgIHJldHVybiB7XG4gICAgICBpc01hdGNoLFxuICAgICAgc2NvcmU6IGlzTWF0Y2ggPyAwIDogMSxcbiAgICAgIGluZGljZXNcbiAgICB9XG4gIH1cbn1cblxuLy8gXHUyNzU3T3JkZXIgaXMgaW1wb3J0YW50LiBETyBOT1QgQ0hBTkdFLlxuY29uc3Qgc2VhcmNoZXJzID0gW1xuICBFeGFjdE1hdGNoLFxuICBJbmNsdWRlTWF0Y2gsXG4gIFByZWZpeEV4YWN0TWF0Y2gsXG4gIEludmVyc2VQcmVmaXhFeGFjdE1hdGNoLFxuICBJbnZlcnNlU3VmZml4RXhhY3RNYXRjaCxcbiAgU3VmZml4RXhhY3RNYXRjaCxcbiAgSW52ZXJzZUV4YWN0TWF0Y2gsXG4gIEZ1enp5TWF0Y2hcbl07XG5cbmNvbnN0IHNlYXJjaGVyc0xlbiA9IHNlYXJjaGVycy5sZW5ndGg7XG5cbi8vIFJlZ2V4IHRvIHNwbGl0IGJ5IHNwYWNlcywgYnV0IGtlZXAgYW55dGhpbmcgaW4gcXVvdGVzIHRvZ2V0aGVyXG5jb25zdCBTUEFDRV9SRSA9IC8gKyg/PSg/OlteXFxcIl0qXFxcIlteXFxcIl0qXFxcIikqW15cXFwiXSokKS87XG5jb25zdCBPUl9UT0tFTiA9ICd8JztcblxuLy8gUmV0dXJuIGEgMkQgYXJyYXkgcmVwcmVzZW50YXRpb24gb2YgdGhlIHF1ZXJ5LCBmb3Igc2ltcGxlciBwYXJzaW5nLlxuLy8gRXhhbXBsZTpcbi8vIFwiXmNvcmUgZ28kIHwgcmIkIHwgcHkkIHh5JFwiID0+IFtbXCJeY29yZVwiLCBcImdvJFwiXSwgW1wicmIkXCJdLCBbXCJweSRcIiwgXCJ4eSRcIl1dXG5mdW5jdGlvbiBwYXJzZVF1ZXJ5KHBhdHRlcm4sIG9wdGlvbnMgPSB7fSkge1xuICByZXR1cm4gcGF0dGVybi5zcGxpdChPUl9UT0tFTikubWFwKChpdGVtKSA9PiB7XG4gICAgbGV0IHF1ZXJ5ID0gaXRlbVxuICAgICAgLnRyaW0oKVxuICAgICAgLnNwbGl0KFNQQUNFX1JFKVxuICAgICAgLmZpbHRlcigoaXRlbSkgPT4gaXRlbSAmJiAhIWl0ZW0udHJpbSgpKTtcblxuICAgIGxldCByZXN1bHRzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHF1ZXJ5Lmxlbmd0aDsgaSA8IGxlbjsgaSArPSAxKSB7XG4gICAgICBjb25zdCBxdWVyeUl0ZW0gPSBxdWVyeVtpXTtcblxuICAgICAgLy8gMS4gSGFuZGxlIG11bHRpcGxlIHF1ZXJ5IG1hdGNoIChpLmUsIG9uY2UgdGhhdCBhcmUgcXVvdGVkLCBsaWtlIGBcImhlbGxvIHdvcmxkXCJgKVxuICAgICAgbGV0IGZvdW5kID0gZmFsc2U7XG4gICAgICBsZXQgaWR4ID0gLTE7XG4gICAgICB3aGlsZSAoIWZvdW5kICYmICsraWR4IDwgc2VhcmNoZXJzTGVuKSB7XG4gICAgICAgIGNvbnN0IHNlYXJjaGVyID0gc2VhcmNoZXJzW2lkeF07XG4gICAgICAgIGxldCB0b2tlbiA9IHNlYXJjaGVyLmlzTXVsdGlNYXRjaChxdWVyeUl0ZW0pO1xuICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICByZXN1bHRzLnB1c2gobmV3IHNlYXJjaGVyKHRva2VuLCBvcHRpb25zKSk7XG4gICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICAvLyAyLiBIYW5kbGUgc2luZ2xlIHF1ZXJ5IG1hdGNoZXMgKGkuZSwgb25jZSB0aGF0IGFyZSAqbm90KiBxdW90ZWQpXG4gICAgICBpZHggPSAtMTtcbiAgICAgIHdoaWxlICgrK2lkeCA8IHNlYXJjaGVyc0xlbikge1xuICAgICAgICBjb25zdCBzZWFyY2hlciA9IHNlYXJjaGVyc1tpZHhdO1xuICAgICAgICBsZXQgdG9rZW4gPSBzZWFyY2hlci5pc1NpbmdsZU1hdGNoKHF1ZXJ5SXRlbSk7XG4gICAgICAgIGlmICh0b2tlbikge1xuICAgICAgICAgIHJlc3VsdHMucHVzaChuZXcgc2VhcmNoZXIodG9rZW4sIG9wdGlvbnMpKTtcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdHNcbiAgfSlcbn1cblxuLy8gVGhlc2UgZXh0ZW5kZWQgbWF0Y2hlcnMgY2FuIHJldHVybiBhbiBhcnJheSBvZiBtYXRjaGVzLCBhcyBvcHBvc2VkXG4vLyB0byBhIHNpbmdsIG1hdGNoXG5jb25zdCBNdWx0aU1hdGNoU2V0ID0gbmV3IFNldChbRnV6enlNYXRjaC50eXBlLCBJbmNsdWRlTWF0Y2gudHlwZV0pO1xuXG4vKipcbiAqIENvbW1hbmQtbGlrZSBzZWFyY2hpbmdcbiAqID09PT09PT09PT09PT09PT09PT09PT1cbiAqXG4gKiBHaXZlbiBtdWx0aXBsZSBzZWFyY2ggdGVybXMgZGVsaW1pdGVkIGJ5IHNwYWNlcy5lLmcuIGBeanNjcmlwdCAucHl0aG9uJCBydWJ5ICFqYXZhYCxcbiAqIHNlYXJjaCBpbiBhIGdpdmVuIHRleHQuXG4gKlxuICogU2VhcmNoIHN5bnRheDpcbiAqXG4gKiB8IFRva2VuICAgICAgIHwgTWF0Y2ggdHlwZSAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IC0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gKiB8IGBqc2NyaXB0YCAgIHwgZnV6enktbWF0Y2ggICAgICAgICAgICAgICAgfCBJdGVtcyB0aGF0IGZ1enp5IG1hdGNoIGBqc2NyaXB0YCAgICAgICB8XG4gKiB8IGA9c2NoZW1lYCAgIHwgZXhhY3QtbWF0Y2ggICAgICAgICAgICAgICAgfCBJdGVtcyB0aGF0IGFyZSBgc2NoZW1lYCAgICAgICAgICAgICAgICB8XG4gKiB8IGAncHl0aG9uYCAgIHwgaW5jbHVkZS1tYXRjaCAgICAgICAgICAgICAgfCBJdGVtcyB0aGF0IGluY2x1ZGUgYHB5dGhvbmAgICAgICAgICAgICB8XG4gKiB8IGAhcnVieWAgICAgIHwgaW52ZXJzZS1leGFjdC1tYXRjaCAgICAgICAgfCBJdGVtcyB0aGF0IGRvIG5vdCBpbmNsdWRlIGBydWJ5YCAgICAgICB8XG4gKiB8IGBeamF2YWAgICAgIHwgcHJlZml4LWV4YWN0LW1hdGNoICAgICAgICAgfCBJdGVtcyB0aGF0IHN0YXJ0IHdpdGggYGphdmFgICAgICAgICAgICB8XG4gKiB8IGAhXmVhcmxhbmdgIHwgaW52ZXJzZS1wcmVmaXgtZXhhY3QtbWF0Y2ggfCBJdGVtcyB0aGF0IGRvIG5vdCBzdGFydCB3aXRoIGBlYXJsYW5nYCB8XG4gKiB8IGAuanMkYCAgICAgIHwgc3VmZml4LWV4YWN0LW1hdGNoICAgICAgICAgfCBJdGVtcyB0aGF0IGVuZCB3aXRoIGAuanNgICAgICAgICAgICAgICB8XG4gKiB8IGAhLmdvJGAgICAgIHwgaW52ZXJzZS1zdWZmaXgtZXhhY3QtbWF0Y2ggfCBJdGVtcyB0aGF0IGRvIG5vdCBlbmQgd2l0aCBgLmdvYCAgICAgICB8XG4gKlxuICogQSBzaW5nbGUgcGlwZSBjaGFyYWN0ZXIgYWN0cyBhcyBhbiBPUiBvcGVyYXRvci4gRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmdcbiAqIHF1ZXJ5IG1hdGNoZXMgZW50cmllcyB0aGF0IHN0YXJ0IHdpdGggYGNvcmVgIGFuZCBlbmQgd2l0aCBlaXRoZXJgZ29gLCBgcmJgLFxuICogb3JgcHlgLlxuICpcbiAqIGBgYFxuICogXmNvcmUgZ28kIHwgcmIkIHwgcHkkXG4gKiBgYGBcbiAqL1xuY2xhc3MgRXh0ZW5kZWRTZWFyY2gge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwYXR0ZXJuLFxuICAgIHtcbiAgICAgIGlzQ2FzZVNlbnNpdGl2ZSA9IENvbmZpZy5pc0Nhc2VTZW5zaXRpdmUsXG4gICAgICBpbmNsdWRlTWF0Y2hlcyA9IENvbmZpZy5pbmNsdWRlTWF0Y2hlcyxcbiAgICAgIG1pbk1hdGNoQ2hhckxlbmd0aCA9IENvbmZpZy5taW5NYXRjaENoYXJMZW5ndGgsXG4gICAgICBpZ25vcmVMb2NhdGlvbiA9IENvbmZpZy5pZ25vcmVMb2NhdGlvbixcbiAgICAgIGZpbmRBbGxNYXRjaGVzID0gQ29uZmlnLmZpbmRBbGxNYXRjaGVzLFxuICAgICAgbG9jYXRpb24gPSBDb25maWcubG9jYXRpb24sXG4gICAgICB0aHJlc2hvbGQgPSBDb25maWcudGhyZXNob2xkLFxuICAgICAgZGlzdGFuY2UgPSBDb25maWcuZGlzdGFuY2VcbiAgICB9ID0ge31cbiAgKSB7XG4gICAgdGhpcy5xdWVyeSA9IG51bGw7XG4gICAgdGhpcy5vcHRpb25zID0ge1xuICAgICAgaXNDYXNlU2Vuc2l0aXZlLFxuICAgICAgaW5jbHVkZU1hdGNoZXMsXG4gICAgICBtaW5NYXRjaENoYXJMZW5ndGgsXG4gICAgICBmaW5kQWxsTWF0Y2hlcyxcbiAgICAgIGlnbm9yZUxvY2F0aW9uLFxuICAgICAgbG9jYXRpb24sXG4gICAgICB0aHJlc2hvbGQsXG4gICAgICBkaXN0YW5jZVxuICAgIH07XG5cbiAgICB0aGlzLnBhdHRlcm4gPSBpc0Nhc2VTZW5zaXRpdmUgPyBwYXR0ZXJuIDogcGF0dGVybi50b0xvd2VyQ2FzZSgpO1xuICAgIHRoaXMucXVlcnkgPSBwYXJzZVF1ZXJ5KHRoaXMucGF0dGVybiwgdGhpcy5vcHRpb25zKTtcbiAgfVxuXG4gIHN0YXRpYyBjb25kaXRpb24oXywgb3B0aW9ucykge1xuICAgIHJldHVybiBvcHRpb25zLnVzZUV4dGVuZGVkU2VhcmNoXG4gIH1cblxuICBzZWFyY2hJbih0ZXh0KSB7XG4gICAgY29uc3QgcXVlcnkgPSB0aGlzLnF1ZXJ5O1xuXG4gICAgaWYgKCFxdWVyeSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXNNYXRjaDogZmFsc2UsXG4gICAgICAgIHNjb3JlOiAxXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgeyBpbmNsdWRlTWF0Y2hlcywgaXNDYXNlU2Vuc2l0aXZlIH0gPSB0aGlzLm9wdGlvbnM7XG5cbiAgICB0ZXh0ID0gaXNDYXNlU2Vuc2l0aXZlID8gdGV4dCA6IHRleHQudG9Mb3dlckNhc2UoKTtcblxuICAgIGxldCBudW1NYXRjaGVzID0gMDtcbiAgICBsZXQgYWxsSW5kaWNlcyA9IFtdO1xuICAgIGxldCB0b3RhbFNjb3JlID0gMDtcblxuICAgIC8vIE9Sc1xuICAgIGZvciAobGV0IGkgPSAwLCBxTGVuID0gcXVlcnkubGVuZ3RoOyBpIDwgcUxlbjsgaSArPSAxKSB7XG4gICAgICBjb25zdCBzZWFyY2hlcnMgPSBxdWVyeVtpXTtcblxuICAgICAgLy8gUmVzZXQgaW5kaWNlc1xuICAgICAgYWxsSW5kaWNlcy5sZW5ndGggPSAwO1xuICAgICAgbnVtTWF0Y2hlcyA9IDA7XG5cbiAgICAgIC8vIEFORHNcbiAgICAgIGZvciAobGV0IGogPSAwLCBwTGVuID0gc2VhcmNoZXJzLmxlbmd0aDsgaiA8IHBMZW47IGogKz0gMSkge1xuICAgICAgICBjb25zdCBzZWFyY2hlciA9IHNlYXJjaGVyc1tqXTtcbiAgICAgICAgY29uc3QgeyBpc01hdGNoLCBpbmRpY2VzLCBzY29yZSB9ID0gc2VhcmNoZXIuc2VhcmNoKHRleHQpO1xuXG4gICAgICAgIGlmIChpc01hdGNoKSB7XG4gICAgICAgICAgbnVtTWF0Y2hlcyArPSAxO1xuICAgICAgICAgIHRvdGFsU2NvcmUgKz0gc2NvcmU7XG4gICAgICAgICAgaWYgKGluY2x1ZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICBjb25zdCB0eXBlID0gc2VhcmNoZXIuY29uc3RydWN0b3IudHlwZTtcbiAgICAgICAgICAgIGlmIChNdWx0aU1hdGNoU2V0Lmhhcyh0eXBlKSkge1xuICAgICAgICAgICAgICBhbGxJbmRpY2VzID0gWy4uLmFsbEluZGljZXMsIC4uLmluZGljZXNdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYWxsSW5kaWNlcy5wdXNoKGluZGljZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0b3RhbFNjb3JlID0gMDtcbiAgICAgICAgICBudW1NYXRjaGVzID0gMDtcbiAgICAgICAgICBhbGxJbmRpY2VzLmxlbmd0aCA9IDA7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBPUiBjb25kaXRpb24sIHNvIGlmIFRSVUUsIHJldHVyblxuICAgICAgaWYgKG51bU1hdGNoZXMpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IHtcbiAgICAgICAgICBpc01hdGNoOiB0cnVlLFxuICAgICAgICAgIHNjb3JlOiB0b3RhbFNjb3JlIC8gbnVtTWF0Y2hlc1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChpbmNsdWRlTWF0Y2hlcykge1xuICAgICAgICAgIHJlc3VsdC5pbmRpY2VzID0gYWxsSW5kaWNlcztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBOb3RoaW5nIHdhcyBtYXRjaGVkXG4gICAgcmV0dXJuIHtcbiAgICAgIGlzTWF0Y2g6IGZhbHNlLFxuICAgICAgc2NvcmU6IDFcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgcmVnaXN0ZXJlZFNlYXJjaGVycyA9IFtdO1xuXG5mdW5jdGlvbiByZWdpc3RlciguLi5hcmdzKSB7XG4gIHJlZ2lzdGVyZWRTZWFyY2hlcnMucHVzaCguLi5hcmdzKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlU2VhcmNoZXIocGF0dGVybiwgb3B0aW9ucykge1xuICBmb3IgKGxldCBpID0gMCwgbGVuID0gcmVnaXN0ZXJlZFNlYXJjaGVycy5sZW5ndGg7IGkgPCBsZW47IGkgKz0gMSkge1xuICAgIGxldCBzZWFyY2hlckNsYXNzID0gcmVnaXN0ZXJlZFNlYXJjaGVyc1tpXTtcbiAgICBpZiAoc2VhcmNoZXJDbGFzcy5jb25kaXRpb24ocGF0dGVybiwgb3B0aW9ucykpIHtcbiAgICAgIHJldHVybiBuZXcgc2VhcmNoZXJDbGFzcyhwYXR0ZXJuLCBvcHRpb25zKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXcgQml0YXBTZWFyY2gocGF0dGVybiwgb3B0aW9ucylcbn1cblxuY29uc3QgTG9naWNhbE9wZXJhdG9yID0ge1xuICBBTkQ6ICckYW5kJyxcbiAgT1I6ICckb3InXG59O1xuXG5jb25zdCBLZXlUeXBlID0ge1xuICBQQVRIOiAnJHBhdGgnLFxuICBQQVRURVJOOiAnJHZhbCdcbn07XG5cbmNvbnN0IGlzRXhwcmVzc2lvbiA9IChxdWVyeSkgPT5cbiAgISEocXVlcnlbTG9naWNhbE9wZXJhdG9yLkFORF0gfHwgcXVlcnlbTG9naWNhbE9wZXJhdG9yLk9SXSk7XG5cbmNvbnN0IGlzUGF0aCA9IChxdWVyeSkgPT4gISFxdWVyeVtLZXlUeXBlLlBBVEhdO1xuXG5jb25zdCBpc0xlYWYgPSAocXVlcnkpID0+XG4gICFpc0FycmF5KHF1ZXJ5KSAmJiBpc09iamVjdChxdWVyeSkgJiYgIWlzRXhwcmVzc2lvbihxdWVyeSk7XG5cbmNvbnN0IGNvbnZlcnRUb0V4cGxpY2l0ID0gKHF1ZXJ5KSA9PiAoe1xuICBbTG9naWNhbE9wZXJhdG9yLkFORF06IE9iamVjdC5rZXlzKHF1ZXJ5KS5tYXAoKGtleSkgPT4gKHtcbiAgICBba2V5XTogcXVlcnlba2V5XVxuICB9KSlcbn0pO1xuXG4vLyBXaGVuIGBhdXRvYCBpcyBgdHJ1ZWAsIHRoZSBwYXJzZSBmdW5jdGlvbiB3aWxsIGluZmVyIGFuZCBpbml0aWFsaXplIGFuZCBhZGRcbi8vIHRoZSBhcHByb3ByaWF0ZSBgU2VhcmNoZXJgIGluc3RhbmNlXG5mdW5jdGlvbiBwYXJzZShxdWVyeSwgb3B0aW9ucywgeyBhdXRvID0gdHJ1ZSB9ID0ge30pIHtcbiAgY29uc3QgbmV4dCA9IChxdWVyeSkgPT4ge1xuICAgIGxldCBrZXlzID0gT2JqZWN0LmtleXMocXVlcnkpO1xuXG4gICAgY29uc3QgaXNRdWVyeVBhdGggPSBpc1BhdGgocXVlcnkpO1xuXG4gICAgaWYgKCFpc1F1ZXJ5UGF0aCAmJiBrZXlzLmxlbmd0aCA+IDEgJiYgIWlzRXhwcmVzc2lvbihxdWVyeSkpIHtcbiAgICAgIHJldHVybiBuZXh0KGNvbnZlcnRUb0V4cGxpY2l0KHF1ZXJ5KSlcbiAgICB9XG5cbiAgICBpZiAoaXNMZWFmKHF1ZXJ5KSkge1xuICAgICAgY29uc3Qga2V5ID0gaXNRdWVyeVBhdGggPyBxdWVyeVtLZXlUeXBlLlBBVEhdIDoga2V5c1swXTtcblxuICAgICAgY29uc3QgcGF0dGVybiA9IGlzUXVlcnlQYXRoID8gcXVlcnlbS2V5VHlwZS5QQVRURVJOXSA6IHF1ZXJ5W2tleV07XG5cbiAgICAgIGlmICghaXNTdHJpbmcocGF0dGVybikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKExPR0lDQUxfU0VBUkNIX0lOVkFMSURfUVVFUllfRk9SX0tFWShrZXkpKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBvYmogPSB7XG4gICAgICAgIGtleUlkOiBjcmVhdGVLZXlJZChrZXkpLFxuICAgICAgICBwYXR0ZXJuXG4gICAgICB9O1xuXG4gICAgICBpZiAoYXV0bykge1xuICAgICAgICBvYmouc2VhcmNoZXIgPSBjcmVhdGVTZWFyY2hlcihwYXR0ZXJuLCBvcHRpb25zKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9ialxuICAgIH1cblxuICAgIGxldCBub2RlID0ge1xuICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgb3BlcmF0b3I6IGtleXNbMF1cbiAgICB9O1xuXG4gICAga2V5cy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gcXVlcnlba2V5XTtcblxuICAgICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHZhbHVlLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICBub2RlLmNoaWxkcmVuLnB1c2gobmV4dChpdGVtKSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5vZGVcbiAgfTtcblxuICBpZiAoIWlzRXhwcmVzc2lvbihxdWVyeSkpIHtcbiAgICBxdWVyeSA9IGNvbnZlcnRUb0V4cGxpY2l0KHF1ZXJ5KTtcbiAgfVxuXG4gIHJldHVybiBuZXh0KHF1ZXJ5KVxufVxuXG4vLyBQcmFjdGljYWwgc2NvcmluZyBmdW5jdGlvblxuZnVuY3Rpb24gY29tcHV0ZVNjb3JlKFxuICByZXN1bHRzLFxuICB7IGlnbm9yZUZpZWxkTm9ybSA9IENvbmZpZy5pZ25vcmVGaWVsZE5vcm0gfVxuKSB7XG4gIHJlc3VsdHMuZm9yRWFjaCgocmVzdWx0KSA9PiB7XG4gICAgbGV0IHRvdGFsU2NvcmUgPSAxO1xuXG4gICAgcmVzdWx0Lm1hdGNoZXMuZm9yRWFjaCgoeyBrZXksIG5vcm0sIHNjb3JlIH0pID0+IHtcbiAgICAgIGNvbnN0IHdlaWdodCA9IGtleSA/IGtleS53ZWlnaHQgOiBudWxsO1xuXG4gICAgICB0b3RhbFNjb3JlICo9IE1hdGgucG93KFxuICAgICAgICBzY29yZSA9PT0gMCAmJiB3ZWlnaHQgPyBOdW1iZXIuRVBTSUxPTiA6IHNjb3JlLFxuICAgICAgICAod2VpZ2h0IHx8IDEpICogKGlnbm9yZUZpZWxkTm9ybSA/IDEgOiBub3JtKVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHJlc3VsdC5zY29yZSA9IHRvdGFsU2NvcmU7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1NYXRjaGVzKHJlc3VsdCwgZGF0YSkge1xuICBjb25zdCBtYXRjaGVzID0gcmVzdWx0Lm1hdGNoZXM7XG4gIGRhdGEubWF0Y2hlcyA9IFtdO1xuXG4gIGlmICghaXNEZWZpbmVkKG1hdGNoZXMpKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBtYXRjaGVzLmZvckVhY2goKG1hdGNoKSA9PiB7XG4gICAgaWYgKCFpc0RlZmluZWQobWF0Y2guaW5kaWNlcykgfHwgIW1hdGNoLmluZGljZXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCB7IGluZGljZXMsIHZhbHVlIH0gPSBtYXRjaDtcblxuICAgIGxldCBvYmogPSB7XG4gICAgICBpbmRpY2VzLFxuICAgICAgdmFsdWVcbiAgICB9O1xuXG4gICAgaWYgKG1hdGNoLmtleSkge1xuICAgICAgb2JqLmtleSA9IG1hdGNoLmtleS5zcmM7XG4gICAgfVxuXG4gICAgaWYgKG1hdGNoLmlkeCA+IC0xKSB7XG4gICAgICBvYmoucmVmSW5kZXggPSBtYXRjaC5pZHg7XG4gICAgfVxuXG4gICAgZGF0YS5tYXRjaGVzLnB1c2gob2JqKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybVNjb3JlKHJlc3VsdCwgZGF0YSkge1xuICBkYXRhLnNjb3JlID0gcmVzdWx0LnNjb3JlO1xufVxuXG5mdW5jdGlvbiBmb3JtYXQoXG4gIHJlc3VsdHMsXG4gIGRvY3MsXG4gIHtcbiAgICBpbmNsdWRlTWF0Y2hlcyA9IENvbmZpZy5pbmNsdWRlTWF0Y2hlcyxcbiAgICBpbmNsdWRlU2NvcmUgPSBDb25maWcuaW5jbHVkZVNjb3JlXG4gIH0gPSB7fVxuKSB7XG4gIGNvbnN0IHRyYW5zZm9ybWVycyA9IFtdO1xuXG4gIGlmIChpbmNsdWRlTWF0Y2hlcykgdHJhbnNmb3JtZXJzLnB1c2godHJhbnNmb3JtTWF0Y2hlcyk7XG4gIGlmIChpbmNsdWRlU2NvcmUpIHRyYW5zZm9ybWVycy5wdXNoKHRyYW5zZm9ybVNjb3JlKTtcblxuICByZXR1cm4gcmVzdWx0cy5tYXAoKHJlc3VsdCkgPT4ge1xuICAgIGNvbnN0IHsgaWR4IH0gPSByZXN1bHQ7XG5cbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgaXRlbTogZG9jc1tpZHhdLFxuICAgICAgcmVmSW5kZXg6IGlkeFxuICAgIH07XG5cbiAgICBpZiAodHJhbnNmb3JtZXJzLmxlbmd0aCkge1xuICAgICAgdHJhbnNmb3JtZXJzLmZvckVhY2goKHRyYW5zZm9ybWVyKSA9PiB7XG4gICAgICAgIHRyYW5zZm9ybWVyKHJlc3VsdCwgZGF0YSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YVxuICB9KVxufVxuXG5jbGFzcyBGdXNlIHtcbiAgY29uc3RydWN0b3IoZG9jcywgb3B0aW9ucyA9IHt9LCBpbmRleCkge1xuICAgIHRoaXMub3B0aW9ucyA9IHsgLi4uQ29uZmlnLCAuLi5vcHRpb25zIH07XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLm9wdGlvbnMudXNlRXh0ZW5kZWRTZWFyY2ggJiZcbiAgICAgICF0cnVlXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoRVhURU5ERURfU0VBUkNIX1VOQVZBSUxBQkxFKVxuICAgIH1cblxuICAgIHRoaXMuX2tleVN0b3JlID0gbmV3IEtleVN0b3JlKHRoaXMub3B0aW9ucy5rZXlzKTtcblxuICAgIHRoaXMuc2V0Q29sbGVjdGlvbihkb2NzLCBpbmRleCk7XG4gIH1cblxuICBzZXRDb2xsZWN0aW9uKGRvY3MsIGluZGV4KSB7XG4gICAgdGhpcy5fZG9jcyA9IGRvY3M7XG5cbiAgICBpZiAoaW5kZXggJiYgIShpbmRleCBpbnN0YW5jZW9mIEZ1c2VJbmRleCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihJTkNPUlJFQ1RfSU5ERVhfVFlQRSlcbiAgICB9XG5cbiAgICB0aGlzLl9teUluZGV4ID1cbiAgICAgIGluZGV4IHx8XG4gICAgICBjcmVhdGVJbmRleCh0aGlzLm9wdGlvbnMua2V5cywgdGhpcy5fZG9jcywge1xuICAgICAgICBnZXRGbjogdGhpcy5vcHRpb25zLmdldEZuLFxuICAgICAgICBmaWVsZE5vcm1XZWlnaHQ6IHRoaXMub3B0aW9ucy5maWVsZE5vcm1XZWlnaHRcbiAgICAgIH0pO1xuICB9XG5cbiAgYWRkKGRvYykge1xuICAgIGlmICghaXNEZWZpbmVkKGRvYykpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuX2RvY3MucHVzaChkb2MpO1xuICAgIHRoaXMuX215SW5kZXguYWRkKGRvYyk7XG4gIH1cblxuICByZW1vdmUocHJlZGljYXRlID0gKC8qIGRvYywgaWR4ICovKSA9PiBmYWxzZSkge1xuICAgIGNvbnN0IHJlc3VsdHMgPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0aGlzLl9kb2NzLmxlbmd0aDsgaSA8IGxlbjsgaSArPSAxKSB7XG4gICAgICBjb25zdCBkb2MgPSB0aGlzLl9kb2NzW2ldO1xuICAgICAgaWYgKHByZWRpY2F0ZShkb2MsIGkpKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlQXQoaSk7XG4gICAgICAgIGkgLT0gMTtcbiAgICAgICAgbGVuIC09IDE7XG5cbiAgICAgICAgcmVzdWx0cy5wdXNoKGRvYyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdHNcbiAgfVxuXG4gIHJlbW92ZUF0KGlkeCkge1xuICAgIHRoaXMuX2RvY3Muc3BsaWNlKGlkeCwgMSk7XG4gICAgdGhpcy5fbXlJbmRleC5yZW1vdmVBdChpZHgpO1xuICB9XG5cbiAgZ2V0SW5kZXgoKSB7XG4gICAgcmV0dXJuIHRoaXMuX215SW5kZXhcbiAgfVxuXG4gIHNlYXJjaChxdWVyeSwgeyBsaW1pdCA9IC0xIH0gPSB7fSkge1xuICAgIGNvbnN0IHtcbiAgICAgIGluY2x1ZGVNYXRjaGVzLFxuICAgICAgaW5jbHVkZVNjb3JlLFxuICAgICAgc2hvdWxkU29ydCxcbiAgICAgIHNvcnRGbixcbiAgICAgIGlnbm9yZUZpZWxkTm9ybVxuICAgIH0gPSB0aGlzLm9wdGlvbnM7XG5cbiAgICBsZXQgcmVzdWx0cyA9IGlzU3RyaW5nKHF1ZXJ5KVxuICAgICAgPyBpc1N0cmluZyh0aGlzLl9kb2NzWzBdKVxuICAgICAgICA/IHRoaXMuX3NlYXJjaFN0cmluZ0xpc3QocXVlcnkpXG4gICAgICAgIDogdGhpcy5fc2VhcmNoT2JqZWN0TGlzdChxdWVyeSlcbiAgICAgIDogdGhpcy5fc2VhcmNoTG9naWNhbChxdWVyeSk7XG5cbiAgICBjb21wdXRlU2NvcmUocmVzdWx0cywgeyBpZ25vcmVGaWVsZE5vcm0gfSk7XG5cbiAgICBpZiAoc2hvdWxkU29ydCkge1xuICAgICAgcmVzdWx0cy5zb3J0KHNvcnRGbik7XG4gICAgfVxuXG4gICAgaWYgKGlzTnVtYmVyKGxpbWl0KSAmJiBsaW1pdCA+IC0xKSB7XG4gICAgICByZXN1bHRzID0gcmVzdWx0cy5zbGljZSgwLCBsaW1pdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcm1hdChyZXN1bHRzLCB0aGlzLl9kb2NzLCB7XG4gICAgICBpbmNsdWRlTWF0Y2hlcyxcbiAgICAgIGluY2x1ZGVTY29yZVxuICAgIH0pXG4gIH1cblxuICBfc2VhcmNoU3RyaW5nTGlzdChxdWVyeSkge1xuICAgIGNvbnN0IHNlYXJjaGVyID0gY3JlYXRlU2VhcmNoZXIocXVlcnksIHRoaXMub3B0aW9ucyk7XG4gICAgY29uc3QgeyByZWNvcmRzIH0gPSB0aGlzLl9teUluZGV4O1xuICAgIGNvbnN0IHJlc3VsdHMgPSBbXTtcblxuICAgIC8vIEl0ZXJhdGUgb3ZlciBldmVyeSBzdHJpbmcgaW4gdGhlIGluZGV4XG4gICAgcmVjb3Jkcy5mb3JFYWNoKCh7IHY6IHRleHQsIGk6IGlkeCwgbjogbm9ybSB9KSA9PiB7XG4gICAgICBpZiAoIWlzRGVmaW5lZCh0ZXh0KSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBpc01hdGNoLCBzY29yZSwgaW5kaWNlcyB9ID0gc2VhcmNoZXIuc2VhcmNoSW4odGV4dCk7XG5cbiAgICAgIGlmIChpc01hdGNoKSB7XG4gICAgICAgIHJlc3VsdHMucHVzaCh7XG4gICAgICAgICAgaXRlbTogdGV4dCxcbiAgICAgICAgICBpZHgsXG4gICAgICAgICAgbWF0Y2hlczogW3sgc2NvcmUsIHZhbHVlOiB0ZXh0LCBub3JtLCBpbmRpY2VzIH1dXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3VsdHNcbiAgfVxuXG4gIF9zZWFyY2hMb2dpY2FsKHF1ZXJ5KSB7XG5cbiAgICBjb25zdCBleHByZXNzaW9uID0gcGFyc2UocXVlcnksIHRoaXMub3B0aW9ucyk7XG5cbiAgICBjb25zdCBldmFsdWF0ZSA9IChub2RlLCBpdGVtLCBpZHgpID0+IHtcbiAgICAgIGlmICghbm9kZS5jaGlsZHJlbikge1xuICAgICAgICBjb25zdCB7IGtleUlkLCBzZWFyY2hlciB9ID0gbm9kZTtcblxuICAgICAgICBjb25zdCBtYXRjaGVzID0gdGhpcy5fZmluZE1hdGNoZXMoe1xuICAgICAgICAgIGtleTogdGhpcy5fa2V5U3RvcmUuZ2V0KGtleUlkKSxcbiAgICAgICAgICB2YWx1ZTogdGhpcy5fbXlJbmRleC5nZXRWYWx1ZUZvckl0ZW1BdEtleUlkKGl0ZW0sIGtleUlkKSxcbiAgICAgICAgICBzZWFyY2hlclxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAobWF0Y2hlcyAmJiBtYXRjaGVzLmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkeCxcbiAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgbWF0Y2hlc1xuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbXVxuICAgICAgfVxuXG4gICAgICBjb25zdCByZXMgPSBbXTtcbiAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSBub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSA8IGxlbjsgaSArPSAxKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkID0gbm9kZS5jaGlsZHJlbltpXTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZXZhbHVhdGUoY2hpbGQsIGl0ZW0sIGlkeCk7XG4gICAgICAgIGlmIChyZXN1bHQubGVuZ3RoKSB7XG4gICAgICAgICAgcmVzLnB1c2goLi4ucmVzdWx0KTtcbiAgICAgICAgfSBlbHNlIGlmIChub2RlLm9wZXJhdG9yID09PSBMb2dpY2FsT3BlcmF0b3IuQU5EKSB7XG4gICAgICAgICAgcmV0dXJuIFtdXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXNcbiAgICB9O1xuXG4gICAgY29uc3QgcmVjb3JkcyA9IHRoaXMuX215SW5kZXgucmVjb3JkcztcbiAgICBjb25zdCByZXN1bHRNYXAgPSB7fTtcbiAgICBjb25zdCByZXN1bHRzID0gW107XG5cbiAgICByZWNvcmRzLmZvckVhY2goKHsgJDogaXRlbSwgaTogaWR4IH0pID0+IHtcbiAgICAgIGlmIChpc0RlZmluZWQoaXRlbSkpIHtcbiAgICAgICAgbGV0IGV4cFJlc3VsdHMgPSBldmFsdWF0ZShleHByZXNzaW9uLCBpdGVtLCBpZHgpO1xuXG4gICAgICAgIGlmIChleHBSZXN1bHRzLmxlbmd0aCkge1xuICAgICAgICAgIC8vIERlZHVwZSB3aGVuIGFkZGluZ1xuICAgICAgICAgIGlmICghcmVzdWx0TWFwW2lkeF0pIHtcbiAgICAgICAgICAgIHJlc3VsdE1hcFtpZHhdID0geyBpZHgsIGl0ZW0sIG1hdGNoZXM6IFtdIH07XG4gICAgICAgICAgICByZXN1bHRzLnB1c2gocmVzdWx0TWFwW2lkeF0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBleHBSZXN1bHRzLmZvckVhY2goKHsgbWF0Y2hlcyB9KSA9PiB7XG4gICAgICAgICAgICByZXN1bHRNYXBbaWR4XS5tYXRjaGVzLnB1c2goLi4ubWF0Y2hlcyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiByZXN1bHRzXG4gIH1cblxuICBfc2VhcmNoT2JqZWN0TGlzdChxdWVyeSkge1xuICAgIGNvbnN0IHNlYXJjaGVyID0gY3JlYXRlU2VhcmNoZXIocXVlcnksIHRoaXMub3B0aW9ucyk7XG4gICAgY29uc3QgeyBrZXlzLCByZWNvcmRzIH0gPSB0aGlzLl9teUluZGV4O1xuICAgIGNvbnN0IHJlc3VsdHMgPSBbXTtcblxuICAgIC8vIExpc3QgaXMgQXJyYXk8T2JqZWN0PlxuICAgIHJlY29yZHMuZm9yRWFjaCgoeyAkOiBpdGVtLCBpOiBpZHggfSkgPT4ge1xuICAgICAgaWYgKCFpc0RlZmluZWQoaXRlbSkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGxldCBtYXRjaGVzID0gW107XG5cbiAgICAgIC8vIEl0ZXJhdGUgb3ZlciBldmVyeSBrZXkgKGkuZSwgcGF0aCksIGFuZCBmZXRjaCB0aGUgdmFsdWUgYXQgdGhhdCBrZXlcbiAgICAgIGtleXMuZm9yRWFjaCgoa2V5LCBrZXlJbmRleCkgPT4ge1xuICAgICAgICBtYXRjaGVzLnB1c2goXG4gICAgICAgICAgLi4udGhpcy5fZmluZE1hdGNoZXMoe1xuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgdmFsdWU6IGl0ZW1ba2V5SW5kZXhdLFxuICAgICAgICAgICAgc2VhcmNoZXJcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChtYXRjaGVzLmxlbmd0aCkge1xuICAgICAgICByZXN1bHRzLnB1c2goe1xuICAgICAgICAgIGlkeCxcbiAgICAgICAgICBpdGVtLFxuICAgICAgICAgIG1hdGNoZXNcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0c1xuICB9XG4gIF9maW5kTWF0Y2hlcyh7IGtleSwgdmFsdWUsIHNlYXJjaGVyIH0pIHtcbiAgICBpZiAoIWlzRGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBbXVxuICAgIH1cblxuICAgIGxldCBtYXRjaGVzID0gW107XG5cbiAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHZhbHVlLmZvckVhY2goKHsgdjogdGV4dCwgaTogaWR4LCBuOiBub3JtIH0pID0+IHtcbiAgICAgICAgaWYgKCFpc0RlZmluZWQodGV4dCkpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgaXNNYXRjaCwgc2NvcmUsIGluZGljZXMgfSA9IHNlYXJjaGVyLnNlYXJjaEluKHRleHQpO1xuXG4gICAgICAgIGlmIChpc01hdGNoKSB7XG4gICAgICAgICAgbWF0Y2hlcy5wdXNoKHtcbiAgICAgICAgICAgIHNjb3JlLFxuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgdmFsdWU6IHRleHQsXG4gICAgICAgICAgICBpZHgsXG4gICAgICAgICAgICBub3JtLFxuICAgICAgICAgICAgaW5kaWNlc1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgeyB2OiB0ZXh0LCBuOiBub3JtIH0gPSB2YWx1ZTtcblxuICAgICAgY29uc3QgeyBpc01hdGNoLCBzY29yZSwgaW5kaWNlcyB9ID0gc2VhcmNoZXIuc2VhcmNoSW4odGV4dCk7XG5cbiAgICAgIGlmIChpc01hdGNoKSB7XG4gICAgICAgIG1hdGNoZXMucHVzaCh7IHNjb3JlLCBrZXksIHZhbHVlOiB0ZXh0LCBub3JtLCBpbmRpY2VzIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtYXRjaGVzXG4gIH1cbn1cblxuRnVzZS52ZXJzaW9uID0gJzYuNi4yJztcbkZ1c2UuY3JlYXRlSW5kZXggPSBjcmVhdGVJbmRleDtcbkZ1c2UucGFyc2VJbmRleCA9IHBhcnNlSW5kZXg7XG5GdXNlLmNvbmZpZyA9IENvbmZpZztcblxue1xuICBGdXNlLnBhcnNlUXVlcnkgPSBwYXJzZTtcbn1cblxue1xuICByZWdpc3RlcihFeHRlbmRlZFNlYXJjaCk7XG59XG5cbmV4cG9ydCB7IEZ1c2UgYXMgZGVmYXVsdCB9O1xuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbXBhcmVWZXJzaW9ucyh2MSwgdjIpIHtcbiAgLy8gdmFsaWRhdGUgaW5wdXQgYW5kIHNwbGl0IGludG8gc2VnbWVudHNcbiAgY29uc3QgbjEgPSB2YWxpZGF0ZUFuZFBhcnNlKHYxKTtcbiAgY29uc3QgbjIgPSB2YWxpZGF0ZUFuZFBhcnNlKHYyKTtcblxuICAvLyBwb3Agb2ZmIHRoZSBwYXRjaFxuICBjb25zdCBwMSA9IG4xLnBvcCgpO1xuICBjb25zdCBwMiA9IG4yLnBvcCgpO1xuXG4gIC8vIHZhbGlkYXRlIG51bWJlcnNcbiAgY29uc3QgciA9IGNvbXBhcmVTZWdtZW50cyhuMSwgbjIpO1xuICBpZiAociAhPT0gMCkgcmV0dXJuIHI7XG5cbiAgLy8gdmFsaWRhdGUgcHJlLXJlbGVhc2VcbiAgaWYgKHAxICYmIHAyKSB7XG4gICAgcmV0dXJuIGNvbXBhcmVTZWdtZW50cyhwMS5zcGxpdCgnLicpLCBwMi5zcGxpdCgnLicpKTtcbiAgfSBlbHNlIGlmIChwMSB8fCBwMikge1xuICAgIHJldHVybiBwMSA/IC0xIDogMTtcbiAgfVxuXG4gIHJldHVybiAwO1xufVxuXG5leHBvcnQgY29uc3QgdmFsaWRhdGUgPSAodikgPT5cbiAgdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIC9eW3ZcXGRdLy50ZXN0KHYpICYmIHNlbXZlci50ZXN0KHYpO1xuXG5leHBvcnQgY29uc3QgY29tcGFyZSA9ICh2MSwgdjIsIG9wZXJhdG9yKSA9PiB7XG4gIC8vIHZhbGlkYXRlIGlucHV0IG9wZXJhdG9yXG4gIGFzc2VydFZhbGlkT3BlcmF0b3Iob3BlcmF0b3IpO1xuXG4gIC8vIHNpbmNlIHJlc3VsdCBvZiBjb21wYXJlVmVyc2lvbnMgY2FuIG9ubHkgYmUgLTEgb3IgMCBvciAxXG4gIC8vIGEgc2ltcGxlIG1hcCBjYW4gYmUgdXNlZCB0byByZXBsYWNlIHN3aXRjaFxuICBjb25zdCByZXMgPSBjb21wYXJlVmVyc2lvbnModjEsIHYyKTtcblxuICByZXR1cm4gb3BlcmF0b3JSZXNNYXBbb3BlcmF0b3JdLmluY2x1ZGVzKHJlcyk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2F0aXNmaWVzID0gKHYsIHIpID0+IHtcbiAgLy8gaWYgbm8gcmFuZ2Ugb3BlcmF0b3IgdGhlbiBcIj1cIlxuICBjb25zdCBtID0gci5tYXRjaCgvXihbPD49fl5dKykvKTtcbiAgY29uc3Qgb3AgPSBtID8gbVsxXSA6ICc9JztcblxuICAvLyBpZiBndC9sdC9lcSB0aGVuIG9wZXJhdG9yIGNvbXBhcmVcbiAgaWYgKG9wICE9PSAnXicgJiYgb3AgIT09ICd+JykgcmV0dXJuIGNvbXBhcmUodiwgciwgb3ApO1xuXG4gIC8vIGVsc2UgcmFuZ2Ugb2YgZWl0aGVyIFwiflwiIG9yIFwiXlwiIGlzIGFzc3VtZWRcbiAgY29uc3QgW3YxLCB2MiwgdjNdID0gdmFsaWRhdGVBbmRQYXJzZSh2KTtcbiAgY29uc3QgW3IxLCByMiwgcjNdID0gdmFsaWRhdGVBbmRQYXJzZShyKTtcbiAgaWYgKGNvbXBhcmVTdHJpbmdzKHYxLCByMSkgIT09IDApIHJldHVybiBmYWxzZTtcbiAgaWYgKG9wID09PSAnXicpIHtcbiAgICByZXR1cm4gY29tcGFyZVNlZ21lbnRzKFt2MiwgdjNdLCBbcjIsIHIzXSkgPj0gMDtcbiAgfVxuICBpZiAoY29tcGFyZVN0cmluZ3ModjIsIHIyKSAhPT0gMCkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gY29tcGFyZVN0cmluZ3ModjMsIHIzKSA+PSAwO1xufTtcblxuLy8gZXhwb3J0IENKUyBzdHlsZSBmb3IgcGFyaXR5XG5jb21wYXJlVmVyc2lvbnMudmFsaWRhdGUgPSB2YWxpZGF0ZTtcbmNvbXBhcmVWZXJzaW9ucy5jb21wYXJlID0gY29tcGFyZTtcbmNvbXBhcmVWZXJzaW9ucy5zYXN0aXNmaWVzID0gc2F0aXNmaWVzO1xuXG5jb25zdCBzZW12ZXIgPVxuICAvXlt2Xn48Pj1dKj8oXFxkKykoPzpcXC4oW3gqXXxcXGQrKSg/OlxcLihbeCpdfFxcZCspKD86XFwuKFt4Kl18XFxkKykpPyg/Oi0oW1xcZGEtelxcLV0rKD86XFwuW1xcZGEtelxcLV0rKSopKT8oPzpcXCtbXFxkYS16XFwtXSsoPzpcXC5bXFxkYS16XFwtXSspKik/KT8pPyQvaTtcblxuY29uc3QgdmFsaWRhdGVBbmRQYXJzZSA9ICh2KSA9PiB7XG4gIGlmICh0eXBlb2YgdiAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGFyZ3VtZW50IGV4cGVjdGVkIHN0cmluZycpO1xuICB9XG4gIGNvbnN0IG1hdGNoID0gdi5tYXRjaChzZW12ZXIpO1xuICBpZiAoIW1hdGNoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGFyZ3VtZW50IG5vdCB2YWxpZCBzZW12ZXIgKCcke3Z9JyByZWNlaXZlZClgKTtcbiAgfVxuICBtYXRjaC5zaGlmdCgpO1xuICByZXR1cm4gbWF0Y2g7XG59O1xuXG5jb25zdCBpc1dpbGRjYXJkID0gKHMpID0+IHMgPT09ICcqJyB8fCBzID09PSAneCcgfHwgcyA9PT0gJ1gnO1xuXG5jb25zdCB0cnlQYXJzZSA9ICh2KSA9PiB7XG4gIGNvbnN0IG4gPSBwYXJzZUludCh2LCAxMCk7XG4gIHJldHVybiBpc05hTihuKSA/IHYgOiBuO1xufTtcblxuY29uc3QgZm9yY2VUeXBlID0gKGEsIGIpID0+XG4gIHR5cGVvZiBhICE9PSB0eXBlb2YgYiA/IFtTdHJpbmcoYSksIFN0cmluZyhiKV0gOiBbYSwgYl07XG5cbmNvbnN0IGNvbXBhcmVTdHJpbmdzID0gKGEsIGIpID0+IHtcbiAgaWYgKGlzV2lsZGNhcmQoYSkgfHwgaXNXaWxkY2FyZChiKSkgcmV0dXJuIDA7XG4gIGNvbnN0IFthcCwgYnBdID0gZm9yY2VUeXBlKHRyeVBhcnNlKGEpLCB0cnlQYXJzZShiKSk7XG4gIGlmIChhcCA+IGJwKSByZXR1cm4gMTtcbiAgaWYgKGFwIDwgYnApIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59O1xuXG5jb25zdCBjb21wYXJlU2VnbWVudHMgPSAoYSwgYikgPT4ge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IE1hdGgubWF4KGEubGVuZ3RoLCBiLmxlbmd0aCk7IGkrKykge1xuICAgIGNvbnN0IHIgPSBjb21wYXJlU3RyaW5ncyhhW2ldIHx8IDAsIGJbaV0gfHwgMCk7XG4gICAgaWYgKHIgIT09IDApIHJldHVybiByO1xuICB9XG4gIHJldHVybiAwO1xufTtcblxuY29uc3Qgb3BlcmF0b3JSZXNNYXAgPSB7XG4gICc+JzogWzFdLFxuICAnPj0nOiBbMCwgMV0sXG4gICc9JzogWzBdLFxuICAnPD0nOiBbLTEsIDBdLFxuICAnPCc6IFstMV0sXG59O1xuXG5jb25zdCBhbGxvd2VkT3BlcmF0b3JzID0gT2JqZWN0LmtleXMob3BlcmF0b3JSZXNNYXApO1xuXG5jb25zdCBhc3NlcnRWYWxpZE9wZXJhdG9yID0gKG9wKSA9PiB7XG4gIGlmICh0eXBlb2Ygb3AgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgIGBJbnZhbGlkIG9wZXJhdG9yIHR5cGUsIGV4cGVjdGVkIHN0cmluZyBidXQgZ290ICR7dHlwZW9mIG9wfWBcbiAgICApO1xuICB9XG4gIGlmIChhbGxvd2VkT3BlcmF0b3JzLmluZGV4T2Yob3ApID09PSAtMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBJbnZhbGlkIG9wZXJhdG9yLCBleHBlY3RlZCBvbmUgb2YgJHthbGxvd2VkT3BlcmF0b3JzLmpvaW4oJ3wnKX1gXG4gICAgKTtcbiAgfVxufTtcbiIsICJpbXBvcnQgY29tcGFyZVZlcnNpb25zLCB7IGNvbXBhcmUsIHNhdGlzZmllcyB9IGZyb20gXCJjb21wYXJlLXZlcnNpb25zXCI7XG5pbXBvcnQgZW1vamkgZnJvbSBcIm5vZGUtZW1vamlcIjtcblxuaW1wb3J0IFBhY2tNYW5hZ2VyIGZyb20gXCIuLi9pY29uLXBhY2tzL3BhY2stbWFuYWdlclwiO1xuaW1wb3J0IHsgSWNvbkRhdGEsIEljb25JbmZvIH0gZnJvbSBcIi4uL2ljb24tcGFja3MvdHlwZXNcIjtcbmltcG9ydCBJY29uU0MgZnJvbSBcIi4uL2lzYy1tYWluXCI7XG5pbXBvcnQgeyBFbW9qaVN1Z2dlc3Rlck1vZGFsIH0gZnJvbSBcIi4uL21vZHVsZXMvc3VnZ2VzdGVyXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGludGVyZmFjZSBJY29uU0NBUEkge1xuICBoYXNJY29uOiAoaWQ6IHN0cmluZykgPT4gYm9vbGVhbjtcblxuICAvKipcbiAgICogQHBhcmFtIGlkIGFjY2VwdCBzaG9ydGNvZGUgd2l0aCBjb2xvbnNcbiAgICogQHBhcmFtIHJhdyBpZiB0cnVlLCByZXR1cm4gc3RyaW5nIChlbW9qaSkgb3IgZGF0YSB1cmkvcmVzb3VyY2UgcGF0aCBpbnN0ZWFkIG9mIHNwYW4gZWxlbWVudFxuICAgKiBAcmV0dXJucyBzdHJpbmcgKGVtb2ppKSBvciBkYXRhIHVyaS9yZXNvdXJjZSBwYXRoIChpY29ucyk7IG51bGwgaWYgZ2l2ZW4gaWQgaXMgbm90IGZvdW5kXG4gICAqL1xuICBnZXRJY29uKGlkOiBzdHJpbmcsIHJhdzogdHJ1ZSk6IHN0cmluZyB8IG51bGw7XG4gIC8qKlxuICAgKiBAcGFyYW0gaWQgYWNjZXB0IHNob3J0Y29kZSB3aXRoIGNvbG9uc1xuICAgKiBAcGFyYW0gcmF3IGlmIHRydWUsIHJldHVybiBzdmcgZGF0YSB1cmkgaW5zdGVhZCBvZiBzcGFuIGVsZW1lbnRcbiAgICogQHJldHVybnMgc3BhbiBlbGVtZW50IGNvbnRhaW5pbmcgdGhlIGljb24gc3RyaW5nKGVtb2ppKSBvciBpbWcgZWxlbWVudDsgbnVsbCBpZiBnaXZlbiBpZCBpcyBub3QgZm91bmRcbiAgICovXG4gIGdldEljb24oaWQ6IHN0cmluZywgcmF3PzogZmFsc2UpOiBIVE1MU3BhbkVsZW1lbnQgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBnZXQgcmF3IHN2ZyBjb250ZW50IG9mIGljb24gd2hlbiBhdmFpbGFibGVcbiAgICogQHBhcmFtIGlkIGFjY2VwdCBzaG9ydGNvZGUgd2l0aCBjb2xvbnNcbiAgICogQHBhcmFtIHJhdyBpZiB0cnVlLCByZXR1cm4gc3ZnIGNvbnRlbnQgKHdoZW4gZ2l2ZW4gc3ZnIGljb24pIC8gIGluc3RlYWQgb2Ygc3BhbiBlbGVtZW50XG4gICAqIEByZXR1cm5zIHN0cmluZyAoZW1vamkpIG9yIHN2ZyBjb250ZW50IChzdmcgaWNvbikgb3IgcmVzb3VyY2UgcGF0aCAoYml0bWFwIGljb24pOyBudWxsIGlmIGdpdmVuIGlkIGlzIG5vdCBmb3VuZFxuICAgKi9cbiAgZ2V0U1ZHSWNvbihpZDogc3RyaW5nLCByYXc6IHRydWUpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+O1xuICAvKipcbiAgICogZ2V0IGlubGluZSBzdmcgdmVyc2lvbiBvZiBpY29uIHdoZW4gYXZhaWxhYmxlXG4gICAqIEBwYXJhbSBpZCBhY2NlcHQgc2hvcnRjb2RlIHdpdGggY29sb25zXG4gICAqIEBwYXJhbSByYXcgaWYgdHJ1ZSwgcmV0dXJuIHN0cmluZyAoZW1vamkpIG9yIHN2ZyBjb250ZW50IChzdmcgaWNvbikgb3IgcmVzb3VyY2UgcGF0aCAoYml0bWFwIGljb24pIGluc3RlYWQgb2Ygc3BhbiBlbGVtZW50XG4gICAqIEByZXR1cm5zIHNwYW4gZWxlbWVudCBjb250YWluaW5nIHRoZSBlbW9qaSBzdHJpbmcgb3Igc3ZnIGVsZW1lbnQgKHN2ZyBpY29uKSBvciBpbWcgZWxlbWVudCAoYml0bWFwIGljb24pOyBudWxsIGlmIGdpdmVuIGlkIGlzIG5vdCBmb3VuZFxuICAgKi9cbiAgZ2V0U1ZHSWNvbihpZDogc3RyaW5nLCByYXc/OiBmYWxzZSk6IFByb21pc2U8SFRNTFNwYW5FbGVtZW50IHwgbnVsbD47XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBpZCBhY2NlcHQgc2hvcnRjb2RlIHdpdGggY29sb25zXG4gICAqIEByZXR1cm5zIGZ1bGwgZGF0YSAoaW5jbHVkaW5nIGNoYXJhY3Rlci9wYXRoL3N2ZyBjb250ZW50IGRlcGVuZGluZyBvbiBzcGVjaWZpYyB0eXBlKSBhYm91dCBpY29uXG4gICAqIGlmIGdpdmVuIGlkIGlzIGZvdW5kOyBudWxsIGlmIGdpdmVuIGlkIGlzIG5vdCBmb3VuZFxuICAgKi9cbiAgZ2V0SWNvbkRhdGEoaWQ6IHN0cmluZyk6IEljb25EYXRhIHwgbnVsbDtcblxuICAvKipcbiAgICogUHJvbXB0IHVzZXIgZm9yIGljb24sIGF2YWlsYWJsZSBzaW5jZSB2MC42LjFcbiAgICogQHJldHVybnMgaWNvbiBpbmZvIGluY2x1ZGluZyBpZCBpZiB1c2VyIGNob29zZSBvbmU7IG51bGwgaWYgdXNlciBjYW5jZWxcbiAgICovXG4gIGdldEljb25Gcm9tVXNlcigpOiBQcm9taXNlPEljb25JbmZvIHwgbnVsbD47XG5cbiAgaXNFbW9qaTogKHN0cjogc3RyaW5nKSA9PiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gcmVwbGFjZXIgdGFrZXMgYSB2YWlsZCBhbmQgZXhpc3RpbmcgOnNob3J0Y29kZTogYW5kIHJldHVybnMgYSBzdHJpbmdcbiAgICovXG4gIHBvc3RQcm9jZXNzb3IoaW5wdXQ6IHN0cmluZywgcmVwbGFjZXI6IChzaG9ydGNvZGU6IHN0cmluZykgPT4gc3RyaW5nKTogc3RyaW5nO1xuICBwb3N0UHJvY2Vzc29yKGlucHV0OiBIVE1MRWxlbWVudCk6IHZvaWQ7XG5cbiAgdmVyc2lvbjoge1xuICAgIGN1cnJlbnQ6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBDb21wYXJlIFtzZW12ZXJdKGh0dHBzOi8vc2VtdmVyLm9yZy8pIHZlcnNpb24gc3RyaW5ncyB1c2luZyB0aGUgc3BlY2lmaWVkIG9wZXJhdG9yLlxuICAgICAqXG4gICAgICogQHBhcmFtIHZlclRvQ29tcGFyZSB2ZXJzaW9uIHRvIGNvbXBhcmVcbiAgICAgKiBAcGFyYW0gb3BlcmF0b3IgQWxsb3dlZCBhcml0aG1ldGljIG9wZXJhdG9yIHRvIHVzZVxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgY29tcGFyaXNvbiBiZXR3ZWVuIHRoZSB2ZXJUb0NvbXBhcmUgYW5kIHRoZSBjdXJyZW50IHZlcnNpb24gc2F0aXNmaWVzIHRoZSBvcGVyYXRvciwgYGZhbHNlYCBvdGhlcndpc2UuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYFxuICAgICAqIGN1cnJWZXIgPSAnMTAuMS4xJztcbiAgICAgKiBjb21wYXJlKCc8JywgJzEwLjIuMicpOyAvLyByZXR1cm4gdHJ1ZVxuICAgICAqIGNvbXBhcmUoJzw9JywgJzEwLjIuMicpOyAvLyByZXR1cm4gdHJ1ZVxuICAgICAqIGNvbXBhcmUoJz49JyAnMTAuMi4yJyk7IC8vIHJldHVybiBmYWxzZVxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIGNvbXBhcmUoXG4gICAgICBvcGVyYXRvcjogY29tcGFyZVZlcnNpb25zLkNvbXBhcmVPcGVyYXRvcixcbiAgICAgIHZlclRvQ29tcGFyZTogc3RyaW5nLFxuICAgICk6IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogTWF0Y2ggW25wbSBzZW12ZXJdKGh0dHBzOi8vZG9jcy5ucG1qcy5jb20vY2xpL3Y2L3VzaW5nLW5wbS9zZW12ZXIpIHZlcnNpb24gcmFuZ2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmFuZ2UgUmFuZ2UgcGF0dGVybiBmb3IgdmVyc2lvblxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgY3VycmVudCB2ZXJzaW9uIG51bWJlciBpcyB3aXRoaW4gdGhlIHJhbmdlLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgXG4gICAgICogY3VyclZlciA9ICcxLjEuMCc7XG4gICAgICogc2F0aXNmaWVzKCdeMS4wLjAnKTsgLy8gcmV0dXJuIHRydWVcbiAgICAgKiBzYXRpc2ZpZXMoJ34xLjAuMCcpOyAvLyByZXR1cm4gZmFsc2VcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBzYXRpc2ZpZXMocmFuZ2U6IHN0cmluZyk6IGJvb2xlYW47XG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBldnRQcmVmaXggPSBcImljb25zYzpcIiBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFBNRXZlbnRzID1cbiAgfCBbbmFtZTogXCJjaGFuZ2VkXCIsIGFwaTogSWNvblNDQVBJLCBhZmZlY3RlZD86IHN0cmluZ1tdXVxuICB8IFtuYW1lOiBcImluaXRpYWxpemVkXCIsIGFwaTogSWNvblNDQVBJXTtcblxuZGVjbGFyZSBnbG9iYWwge1xuICAvLyBNdXN0IHVzZSB2YXIsIG5vIGNvbnN0L2xldFxuICB2YXIgSWNvblNDQVBJdjA6IEljb25TQ0FQSSB8IHVuZGVmaW5lZDtcbn1cbmV4cG9ydCB0eXBlIEFQSV9OQU1FID0gXCJJY29uU0NBUEl2MFwiO1xuXG5leHBvcnQgY29uc3QgZ2V0QXBpID0gKFxuICBwYWNrTWFuYWdlcjogUGFja01hbmFnZXIsXG4gIHBsdWdpbjogSWNvblNDLFxuKTogSWNvblNDQVBJID0+ICh7XG4gIGhhc0ljb246IHBhY2tNYW5hZ2VyLmhhc0ljb24uYmluZChwYWNrTWFuYWdlciksXG4gIGdldEljb246IHBhY2tNYW5hZ2VyLmdldEljb24uYmluZChwYWNrTWFuYWdlciksXG4gIGdldEljb25EYXRhOiBwYWNrTWFuYWdlci5nZXRJY29uRGF0YS5iaW5kKHBhY2tNYW5hZ2VyKSxcbiAgZ2V0U1ZHSWNvbjogcGFja01hbmFnZXIuZ2V0U1ZHSWNvbi5iaW5kKHBhY2tNYW5hZ2VyKSxcbiAgZ2V0SWNvbkZyb21Vc2VyOiAoKSA9PiBuZXcgRW1vamlTdWdnZXN0ZXJNb2RhbChwbHVnaW4pLm9wZW4oKSxcbiAgaXNFbW9qaTogZW1vamkuaGFzRW1vamkuYmluZChlbW9qaSksXG4gIHBvc3RQcm9jZXNzb3I6IHBsdWdpbi5wb3N0UHJvY2Vzc29yLmJpbmQocGx1Z2luKSxcbiAgdmVyc2lvbjoge1xuICAgIGdldCBjdXJyZW50KCkge1xuICAgICAgcmV0dXJuIHBsdWdpbi5tYW5pZmVzdC52ZXJzaW9uO1xuICAgIH0sXG4gICAgY29tcGFyZTogKG9wLCB2ZXIpID0+IGNvbXBhcmUocGx1Z2luLm1hbmlmZXN0LnZlcnNpb24sIHZlciwgb3ApLFxuICAgIHNhdGlzZmllczogKHJhbmdlKSA9PiBzYXRpc2ZpZXMocGx1Z2luLm1hbmlmZXN0LnZlcnNpb24sIHJhbmdlKSxcbiAgfSxcbn0pO1xuIiwgImltcG9ydCBGdXNlIGZyb20gXCJmdXNlLmpzXCI7XG5pbXBvcnQge1xuICBFZGl0b3IsXG4gIEVkaXRvclBvc2l0aW9uLFxuICBFZGl0b3JTdWdnZXN0LFxuICBFZGl0b3JTdWdnZXN0Q29udGV4dCxcbiAgRWRpdG9yU3VnZ2VzdFRyaWdnZXJJbmZvLFxuICBTdWdnZXN0TW9kYWwsXG59IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgUGFja01hbmFnZXIgZnJvbSBcIi4uL2ljb24tcGFja3MvcGFjay1tYW5hZ2VyXCI7XG5pbXBvcnQgeyBGdXp6eU1hdGNoLCBJY29uSW5mbyB9IGZyb20gXCIuLi9pY29uLXBhY2tzL3R5cGVzXCI7XG5pbXBvcnQgSWNvblNDIGZyb20gXCIuLi9pc2MtbWFpblwiO1xuaW1wb3J0IFVuaW9uUmFuZ2VzIGZyb20gXCIuL3VuaW9uXCI7XG5cbmNvbnN0IENMQVNTX0lEID0gXCJpc2NcIjtcblxuaW50ZXJmYWNlIFN1Z2dlc3RlckJhc2Uge1xuICBwYWNrTWFuYWdlcjogUGFja01hbmFnZXI7XG59XG5jb25zdCBnZXRTdWdnZXN0aW9ucyA9IChpbnB1dDogc3RyaW5nLCBwYWNrTWFuYWdlcjogUGFja01hbmFnZXIpID0+IHtcbiAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gXCJzdHJpbmdcIiAmJiBpbnB1dC50cmltKCkubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiBwYWNrTWFuYWdlci5zZWFyY2goaW5wdXQucmVwbGFjZSgvXlxcK3xcXCskL2csIFwiXCIpLnNwbGl0KC9bK10vZykpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBwYWNrTWFuYWdlci5nZXRBbGxJZHMoKTtcbiAgfVxufTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItYXJyb3cvcHJlZmVyLWFycm93LWZ1bmN0aW9uc1xuYXN5bmMgZnVuY3Rpb24gcmVuZGVyU3VnZ2VzdGlvbihcbiAgdGhpczogU3VnZ2VzdGVyQmFzZSxcbiAgc3VnZ2VzdGlvbjogRnV6enlNYXRjaDxJY29uSW5mbz4sXG4gIGVsOiBIVE1MRWxlbWVudCxcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IGlkLCBuYW1lIH0gPSBzdWdnZXN0aW9uLml0ZW0sXG4gICAgeyBtYXRjaGVzIH0gPSBzdWdnZXN0aW9uLFxuICAgIGljb25FbCA9IGF3YWl0IHRoaXMucGFja01hbmFnZXIuZ2V0U1ZHSWNvbihpZCk7XG4gIGlmICghaWNvbkVsKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRmFpbGVkIHRvIGdldCBpY29uIGZvciBrZXk6IFwiICsgaWQpO1xuXG4gIGVsLmFkZENsYXNzKFwibW9kLWNvbXBsZXhcIik7XG5cbiAgY29uc3Qgc2hvcnRjb2RlID0gZWxcbiAgICAuY3JlYXRlRGl2KFwic3VnZ2VzdGlvbi1jb250ZW50XCIpXG4gICAgLmNyZWF0ZURpdihcInN1Z2dlc3Rpb24tdGl0bGVcIik7XG5cbiAgaWYgKG1hdGNoZXMpIHtcbiAgICBjb25zdCBpbmRpY2VzID1cbiAgICAgIG1hdGNoZXMubGVuZ3RoID09PSAxXG4gICAgICAgID8gbWF0Y2hlc1swXS5rZXkgPT09IFwibmFtZVwiXG4gICAgICAgICAgPyBtYXRjaGVzWzBdLmluZGljZXNcbiAgICAgICAgICA6IFtdXG4gICAgICAgIDogVW5pb25SYW5nZXMoXG4gICAgICAgICAgICBtYXRjaGVzLmZsYXRNYXAoKG0pID0+IChtLmtleSA9PT0gXCJuYW1lXCIgPyBtLmluZGljZXMgOiBbXSkpLFxuICAgICAgICAgICk7XG4gICAgcmVuZGVyTWF0Y2hlcyhzaG9ydGNvZGUsIG5hbWUucmVwbGFjZSgvW18tXS9nLCBcIiBcIiksIGluZGljZXMpO1xuICB9IGVsc2Uge1xuICAgIHNob3J0Y29kZS5zZXRUZXh0KG5hbWUucmVwbGFjZSgvW18tXS9nLCBcIiBcIikpO1xuICB9XG4gIGVsLmNyZWF0ZURpdihcInN1Z2dlc3Rpb24tYXV4XCIpLmNyZWF0ZVNwYW4oXCJzdWdnZXN0aW9uLWZsYWlyXCIsIChlbCkgPT5cbiAgICBlbC5hcHBlbmRDaGlsZChpY29uRWwpLFxuICApO1xufVxuXG5leHBvcnQgY2xhc3MgRW1vamlTdWdnZXN0ZXJNb2RhbFxuICBleHRlbmRzIFN1Z2dlc3RNb2RhbDxGdXp6eU1hdGNoPEljb25JbmZvPj5cbiAgaW1wbGVtZW50cyBTdWdnZXN0ZXJCYXNlXG57XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwbHVnaW46IEljb25TQykge1xuICAgIHN1cGVyKHBsdWdpbi5hcHApO1xuICAgIHRoaXMubW9kYWxFbC5hZGRDbGFzcyhDTEFTU19JRCk7XG4gIH1cbiAgZ2V0IHBhY2tNYW5hZ2VyKCkge1xuICAgIHJldHVybiB0aGlzLnBsdWdpbi5wYWNrTWFuYWdlcjtcbiAgfVxuXG4gIGdldFN1Z2dlc3Rpb25zKGlucHV0OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZ2V0U3VnZ2VzdGlvbnMoaW5wdXQsIHRoaXMucGFja01hbmFnZXIpO1xuICB9XG4gIHJlbmRlclN1Z2dlc3Rpb24gPSByZW5kZXJTdWdnZXN0aW9uO1xuXG4gIC8vIFByb21pc2lmeSB0aGUgbW9kYWxcbiAgcmVzb2x2ZTogKCh2YWx1ZTogSWNvbkluZm8gfCBudWxsKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xuICBvcGVuKCk6IFByb21pc2U8SWNvbkluZm8gfCBudWxsPiB7XG4gICAgc3VwZXIub3BlbigpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgdGhpcy5yZXNvbHZlID0gcmVzb2x2ZTtcbiAgICB9KTtcbiAgfVxuICBvbkNsb3NlKCkge1xuICAgIGlmICh0aGlzLnJlc29sdmUpIHtcbiAgICAgIHRoaXMucmVzb2x2ZShudWxsKTtcbiAgICAgIHRoaXMucmVzb2x2ZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgb25DaG9vc2VTdWdnZXN0aW9uKHN1Z2dlc3Rpb246IEZ1enp5TWF0Y2g8SWNvbkluZm8+KTogdm9pZCB7XG4gICAgLy8gY29uc29sZS5sb2coc3VnZ2VzdGlvbik7XG4gIH1cbiAgc2VsZWN0U3VnZ2VzdGlvbihcbiAgICB2YWx1ZTogRnV6enlNYXRjaDxJY29uSW5mbz4gfCBudWxsLFxuICAgIGV2dDogTW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQsXG4gICk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlc29sdmUpIHtcbiAgICAgIGlmICh2YWx1ZT8uaXRlbSkge1xuICAgICAgICB0aGlzLnJlc29sdmUodmFsdWUuaXRlbSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlc29sdmUobnVsbCk7XG4gICAgICB9XG4gICAgICB0aGlzLnJlc29sdmUgPSBudWxsO1xuICAgIH1cblxuICAgIHN1cGVyLnNlbGVjdFN1Z2dlc3Rpb24odmFsdWUgYXMgYW55LCBldnQpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFbW9qaVN1Z2dlc3RlclxuICBleHRlbmRzIEVkaXRvclN1Z2dlc3Q8RnV6enlNYXRjaDxJY29uSW5mbz4+XG4gIGltcGxlbWVudHMgU3VnZ2VzdGVyQmFzZVxue1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGx1Z2luOiBJY29uU0MpIHtcbiAgICBzdXBlcihwbHVnaW4uYXBwKTtcbiAgICB0aGlzLnN1Z2dlc3RFbC5hZGRDbGFzcyhDTEFTU19JRCk7XG4gIH1cblxuICBnZXQgcGFja01hbmFnZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMucGx1Z2luLnBhY2tNYW5hZ2VyO1xuICB9XG5cbiAgb25UcmlnZ2VyKFxuICAgIGN1cnNvcjogRWRpdG9yUG9zaXRpb24sXG4gICAgZWRpdG9yOiBFZGl0b3IsXG4gICk6IEVkaXRvclN1Z2dlc3RUcmlnZ2VySW5mbyB8IG51bGwge1xuICAgIGlmICghdGhpcy5wbHVnaW4uc2V0dGluZ3Muc3VnZ2VzdGVyKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBzdWIgPSBlZGl0b3IuZ2V0TGluZShjdXJzb3IubGluZSkuc3Vic3RyaW5nKDAsIGN1cnNvci5jaCk7XG4gICAgY29uc3QgdHJhaWxpbmdTcGFjZSA9IHRoaXMucGx1Z2luLnNldHRpbmdzLnRyaWdnZXJXaXRoVHJhaWxpbmdTcGFjZVxuICAgICAgPyBcIiBcIlxuICAgICAgOiBcIlwiO1xuICAgIGxldCBwYXR0ZXJuID0gU3RyaW5nLnJhd2AoPzoke3RyYWlsaW5nU3BhY2V9OnxcdUZGMUFcdUZGMUEpKFteOlxcc10rJClgO1xuICAgIGNvbnN0IG1hdGNoID0gc3ViLm1hdGNoKG5ldyBSZWdFeHAocGF0dGVybiwgXCJpXCIpKTtcbiAgICBpZiAoIW1hdGNoKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBwcmV2U0MgPSAobWF0Y2guaW5wdXQgYXMgc3RyaW5nKVxuICAgICAgLnN1YnN0cmluZygwLCBtYXRjaC5pbmRleClcbiAgICAgIC5tYXRjaCgvOihbXlxcczpdKyQpLyk7XG4gICAgaWYgKHByZXZTQyAmJiB0aGlzLnBhY2tNYW5hZ2VyLmhhc0ljb24ocHJldlNDWzFdKSkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVuZDogY3Vyc29yLFxuICAgICAgc3RhcnQ6IHtcbiAgICAgICAgY2g6IG1hdGNoLmluZGV4IGFzIG51bWJlcixcbiAgICAgICAgbGluZTogY3Vyc29yLmxpbmUsXG4gICAgICB9LFxuICAgICAgcXVlcnk6IG1hdGNoWzFdLFxuICAgIH07XG4gIH1cblxuICBnZXRTdWdnZXN0aW9ucyhjb250ZXh0OiBFZGl0b3JTdWdnZXN0Q29udGV4dCkge1xuICAgIHJldHVybiBnZXRTdWdnZXN0aW9ucyhjb250ZXh0LnF1ZXJ5LCB0aGlzLnBhY2tNYW5hZ2VyKTtcbiAgfVxuXG4gIHJlbmRlclN1Z2dlc3Rpb24gPSByZW5kZXJTdWdnZXN0aW9uO1xuICBzZWxlY3RTdWdnZXN0aW9uKHN1Z2dlc3Rpb246IEZ1enp5TWF0Y2g8SWNvbkluZm8+KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbnRleHQpIHJldHVybjtcbiAgICBjb25zdCB7IGlkLCBwYWNrIH0gPSBzdWdnZXN0aW9uLml0ZW07XG4gICAgdGhpcy5jb250ZXh0LmVkaXRvci5yZXBsYWNlUmFuZ2UoXG4gICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jb2RlMmVtb2ppICYmIHBhY2sgPT09IFwiZW1vamlcIlxuICAgICAgICA/ICh0aGlzLnBhY2tNYW5hZ2VyLmdldEljb24oaWQsIHRydWUpIGFzIHN0cmluZylcbiAgICAgICAgOiBgOiR7aWR9OmAgKyAodGhpcy5wbHVnaW4uc2V0dGluZ3Muc3BhY2VBZnRlclNDID8gXCIgXCIgOiBcIlwiKSxcbiAgICAgIHRoaXMuY29udGV4dC5zdGFydCxcbiAgICAgIHRoaXMuY29udGV4dC5lbmQsXG4gICAgKTtcbiAgfVxufVxuXG5jb25zdCByZW5kZXJNYXRjaGVzID0gKFxuICBlbDogSFRNTEVsZW1lbnQsXG4gIHRleHQ6IHN0cmluZyxcbiAgaW5kaWNlcz86IHJlYWRvbmx5IEZ1c2UuUmFuZ2VUdXBsZVtdLFxuICBvZmZzZXQ/OiBudW1iZXIsXG4pID0+IHtcbiAgaWYgKGluZGljZXMpIHtcbiAgICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIG9mZnNldCA9IDA7XG4gICAgbGV0IHRleHRJbmRleCA9IDA7XG4gICAgZm9yIChcbiAgICAgIGxldCByYW5nZUluZGV4ID0gMDtcbiAgICAgIHJhbmdlSW5kZXggPCBpbmRpY2VzLmxlbmd0aCAmJiB0ZXh0SW5kZXggPCB0ZXh0Lmxlbmd0aDtcbiAgICAgIHJhbmdlSW5kZXgrK1xuICAgICkge1xuICAgICAgbGV0IHJhbmdlID0gaW5kaWNlc1tyYW5nZUluZGV4XSxcbiAgICAgICAgc3RhcnQgPSByYW5nZVswXSArIG9mZnNldCxcbiAgICAgICAgZW5kID0gcmFuZ2VbMV0gKyBvZmZzZXQgKyAxOyAvLyBwYXRjaCBmb3IgRnVzZS5SYW5nZVR1cGxlXG4gICAgICBpZiAoIShlbmQgPD0gMCkpIHtcbiAgICAgICAgaWYgKHN0YXJ0ID49IHRleHQubGVuZ3RoKSBicmVhaztcbiAgICAgICAgaWYgKHN0YXJ0IDwgMCkgc3RhcnQgPSAwO1xuICAgICAgICBpZiAoc3RhcnQgIT09IHRleHRJbmRleClcbiAgICAgICAgICBlbC5hcHBlbmRUZXh0KHRleHQuc3Vic3RyaW5nKHRleHRJbmRleCwgc3RhcnQpKTtcbiAgICAgICAgZWwuY3JlYXRlU3Bhbih7XG4gICAgICAgICAgY2xzOiBcInN1Z2dlc3Rpb24taGlnaGxpZ2h0XCIsXG4gICAgICAgICAgdGV4dDogdGV4dC5zdWJzdHJpbmcoc3RhcnQsIGVuZCksXG4gICAgICAgIH0pO1xuICAgICAgICB0ZXh0SW5kZXggPSBlbmQ7XG4gICAgICB9XG4gICAgfVxuICAgIHRleHRJbmRleCA8IHRleHQubGVuZ3RoICYmIGVsLmFwcGVuZFRleHQodGV4dC5zdWJzdHJpbmcodGV4dEluZGV4KSk7XG4gIH0gZWxzZSBlbC5hcHBlbmRUZXh0KHRleHQpO1xufTtcbiIsICJpbXBvcnQgc3ZnMnVyaSBmcm9tIFwibWluaS1zdmctZGF0YS11cmlcIjtcbmltcG9ydCBlbW9qaUJ5TmFtZSBmcm9tIFwibm9kZS1lbW9qaS9saWIvZW1vamkuanNvblwiO1xuaW1wb3J0IHsgc2V0SWNvbiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBMdWNpZGVJY29uLCBPYnNpZGlhbkljb24gfSBmcm9tIFwiLi4vaWNvbnNcIjtcbmltcG9ydCB7IEJ1bHRpSW5JY29uRGF0YSBhcyBCdWx0aUluSWNvbkRhdGFUeXBlLCBJY29uSW5mbyB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBnZXRDbHNGb3JJY29uIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3Qga2Fib2JUb1NuYWtlID0gKG5hbWU6IHN0cmluZykgPT4gbmFtZS5yZXBsYWNlKC8tL2csIFwiX1wiKTtcblxuY29uc3QgTHVjaWRlUGFja05hbWUgPSBcImx1Y1wiLFxuICBPYnNpZGlhblBhY2tOYW1lID0gXCJvYnNcIjtcblxuZXhwb3J0IHR5cGUgU1ZHUGFja25hbWVzID0gdHlwZW9mIEx1Y2lkZVBhY2tOYW1lIHwgdHlwZW9mIE9ic2lkaWFuUGFja05hbWU7XG5cbmNvbnN0IHJlbW92ZUJ1bHRpSW5JY29uQXR0cnMgPSAoZWw6IEhUTUxFbGVtZW50KSA9PlxuICBbXCJjbGFzc1wiLCBcImhlaWdodFwiLCBcIndpZHRoXCJdLmZvckVhY2goKGspID0+XG4gICAgZWwuZmlyc3RFbGVtZW50Q2hpbGQ/LnJlbW92ZUF0dHJpYnV0ZShrKSxcbiAgKTtcbmNsYXNzIEJ1bHRpSW5JY29uRGF0YSBpbXBsZW1lbnRzIEJ1bHRpSW5JY29uRGF0YVR5cGUge1xuICBwdWJsaWMgdHlwZSA9IFwiYnVsdGktaW5cIiBhcyBjb25zdDtcbiAgcHVibGljIG5hbWU6IHN0cmluZztcbiAgLyoqIGljb24gc2hvcnRjb2RlICovXG4gIHB1YmxpYyBpZDogc3RyaW5nO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGFjazogc3RyaW5nLCBwcml2YXRlIG9ic2lkaWFuSWQ6IHN0cmluZykge1xuICAgIHRoaXMubmFtZSA9IGthYm9iVG9TbmFrZShvYnNpZGlhbklkKTtcbiAgICB0aGlzLmlkID0gYCR7cGFja31fJHt0aGlzLm5hbWV9YDtcbiAgfVxuICBwdWJsaWMgZ2V0IGRhdGEoKSB7XG4gICAgY29uc3QgZWwgPSBjcmVhdGVEaXYoKTtcbiAgICBzZXRJY29uKFxuICAgICAgZWwsXG4gICAgICAodGhpcy5wYWNrID09PSBMdWNpZGVQYWNrTmFtZSA/IFwibHVjaWRlLVwiIDogXCJcIikgKyB0aGlzLm9ic2lkaWFuSWQsXG4gICAgKTtcbiAgICByZW1vdmVCdWx0aUluSWNvbkF0dHJzKGVsKTtcbiAgICBlbC5maXJzdEVsZW1lbnRDaGlsZD8uc2V0QXR0cmlidXRlKFwieG1sbnNcIiwgXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiKTtcbiAgICByZXR1cm4gZWwuaW5uZXJIVE1MO1xuICB9XG4gIHB1YmxpYyBnZXQgZGF0YVVyaSgpIHtcbiAgICByZXR1cm4gc3ZnMnVyaSh0aGlzLmRhdGEpO1xuICB9XG4gIHB1YmxpYyBnZXRET00oc3ZnID0gdHJ1ZSk6IEhUTUxTcGFuRWxlbWVudCB7XG4gICAgY29uc3QgZWwgPSBjcmVhdGVTcGFuKHsgY2xzOiBnZXRDbHNGb3JJY29uKHRoaXMpIH0pO1xuICAgIGlmIChzdmcpIHtcbiAgICAgIGVsLmFkZENsYXNzKFwiaXNjLXN2Zy1pY29uXCIpO1xuICAgICAgc2V0SWNvbihcbiAgICAgICAgZWwsXG4gICAgICAgICh0aGlzLnBhY2sgPT09IEx1Y2lkZVBhY2tOYW1lID8gXCJsdWNpZGUtXCIgOiBcIlwiKSArIHRoaXMub2JzaWRpYW5JZCxcbiAgICAgICk7XG4gICAgICByZW1vdmVCdWx0aUluSWNvbkF0dHJzKGVsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwuYWRkQ2xhc3MoXCJpc2MtaW1nLWljb25cIik7XG4gICAgICBlbC5jcmVhdGVFbChcImltZ1wiLCB7IGF0dHI6IHsgc3JjOiB0aGlzLmRhdGFVcmkgfSB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGVsO1xuICB9XG59XG5cbmNvbnN0IEVNT0pJX1BBQ0tfTkFNRSA9IFwiZW1vamlcIjtcbmNvbnN0IGdldEJ1aWx0SW5zID0gKCk6IHtcbiAgcGFja3M6IFJlYWRvbmx5TWFwPHN0cmluZywgQnVsdGlJbkljb25EYXRhPjtcbiAgaWRzOiBSZWFkb25seUFycmF5PEljb25JbmZvPjtcbiAgcGFja25hbWVzOiBSZWFkb25seUFycmF5PHN0cmluZz47XG59ID0+IHtcbiAgbGV0IHBhY2tzID0gbmV3IE1hcDxzdHJpbmcsIEJ1bHRpSW5JY29uRGF0YT4oKSxcbiAgICBpZHMgPSBbXSBhcyBJY29uSW5mb1tdLFxuICAgIHBhY2tuYW1lcyA9IFtdIGFzIHN0cmluZ1tdO1xuXG4gIGZvciAoY29uc3QgW3BhY2ssIGljb25zXSBvZiBbXG4gICAgW09ic2lkaWFuUGFja05hbWUsIE9ic2lkaWFuSWNvbl0sXG4gICAgW0x1Y2lkZVBhY2tOYW1lLCBMdWNpZGVJY29uXSxcbiAgXSBhcyBjb25zdCkge1xuICAgIHBhY2tuYW1lcy5wdXNoKHBhY2spO1xuICAgIGZvciAoY29uc3Qgb2JzaWRpYW5JZCBvZiBpY29ucykge1xuICAgICAgY29uc3QgaWNvbiA9IG5ldyBCdWx0aUluSWNvbkRhdGEocGFjaywgb2JzaWRpYW5JZCk7XG4gICAgICBwYWNrcy5zZXQoaWNvbi5pZCwgaWNvbik7XG4gICAgICBpZHMucHVzaChpY29uKTtcbiAgICB9XG4gIH1cbiAgcGFja25hbWVzLnB1c2goRU1PSklfUEFDS19OQU1FKTtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoZW1vamlCeU5hbWUpKSB7XG4gICAgaWRzLnB1c2goeyBwYWNrOiBFTU9KSV9QQUNLX05BTUUsIGlkOiBrZXksIG5hbWU6IGtleSB9KTtcbiAgfVxuICByZXR1cm4geyBwYWNrcywgaWRzLCBwYWNrbmFtZXMgfTtcbn07XG5cbmNvbnN0IHJlc3VsdCA9IGdldEJ1aWx0SW5zKCk7XG5leHBvcnQgY29uc3QgQnVpbHRJblNWR0ljb25QYWNrcyA9IHJlc3VsdC5wYWNrcztcbmV4cG9ydCBjb25zdCBCdWlsdEluSWNvbklkcyA9IHJlc3VsdC5pZHM7XG5leHBvcnQgY29uc3QgQnVpbHRJbkljb25QYWNrbmFtZXMgPSByZXN1bHQucGFja25hbWVzO1xuIiwgImltcG9ydCBlbW9qaSBmcm9tIFwibm9kZS1lbW9qaVwiO1xuXG5pbXBvcnQgdHlwZSB7IEVtb2ppSWNvbkRhdGEgYXMgRW1vamlJY29uRGF0YVR5cGUgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgZ2V0Q2xzRm9ySWNvbiB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVtb2ppSWNvbkRhdGEgaW1wbGVtZW50cyBFbW9qaUljb25EYXRhVHlwZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBuYW1lOiBzdHJpbmcpIHt9XG4gIHB1YmxpYyBnZXQgaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgfVxuICBwdWJsaWMgZ2V0IHBhY2soKSB7XG4gICAgcmV0dXJuIFwiZW1vamlcIiBhcyBjb25zdDtcbiAgfVxuICBwdWJsaWMgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuIFwiZW1vamlcIiBhcyBjb25zdDtcbiAgfVxuICBwdWJsaWMgZ2V0IGNoYXIoKSB7XG4gICAgcmV0dXJuIGVtb2ppLmdldCh0aGlzLm5hbWUpO1xuICB9XG5cbiAgc3RhdGljIGdldERhdGEobmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKGVtb2ppLmhhc0Vtb2ppKG5hbWUpKSB7XG4gICAgICByZXR1cm4gbmV3IEVtb2ppSWNvbkRhdGEobmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRET00oc3ZnID0gdHJ1ZSkge1xuICAgIHJldHVybiBjcmVhdGVTcGFuKHtcbiAgICAgIGNsczogW2dldENsc0Zvckljb24odGhpcyksIFwiaXNjLWNoYXItaWNvblwiXSxcbiAgICAgIHRleHQ6IHRoaXMuY2hhcixcbiAgICB9KTtcbiAgfVxufVxuIiwgImltcG9ydCB7IEZpbGVTeXN0ZW1BZGFwdGVyIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgeyBleHRuYW1lIH0gZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IEljb25TQyBmcm9tIFwiLi4vaXNjLW1haW5cIjtcbmltcG9ydCB7IEZpbGVJY29uRGF0YSBhcyBGaWxlSWNvbkRhdGFUeXBlIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IGdldENsc0Zvckljb24sIGdldFBhY2tuTmFtZUZyb21JZCB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZpbGVJY29uRGF0YSBpbXBsZW1lbnRzIEZpbGVJY29uRGF0YVR5cGUge1xuICBzdGF0aWMgZ2V0RGF0YShcbiAgICBpZDogc3RyaW5nLFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBwbHVnaW46IEljb25TQyxcbiAgKTogRmlsZUljb25EYXRhIHwgbnVsbCB7XG4gICAgY29uc3QgcmVzdWx0ID0gZ2V0UGFja25OYW1lRnJvbUlkKGlkKTtcbiAgICBpZiAoIXJlc3VsdCB8fCByZXN1bHQucGFjayA9PT0gXCJlbW9qaVwiKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gbmV3IEZpbGVJY29uRGF0YShpZCwgcmVzdWx0Lm5hbWUsIHJlc3VsdC5wYWNrLCBwYXRoLCBwbHVnaW4pO1xuICB9XG5cbiAgcHVibGljIGdldCB0eXBlKCkge1xuICAgIHJldHVybiBcImZpbGVcIiBhcyBjb25zdDtcbiAgfVxuICBwdWJsaWMgcGF0aDogc3RyaW5nO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9pZDogc3RyaW5nLFxuICAgIHByaXZhdGUgX25hbWU6IHN0cmluZyxcbiAgICBwcml2YXRlIF9wYWNrOiBzdHJpbmcsXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIHByaXZhdGUgcGx1Z2luOiBJY29uU0MsXG4gICkge1xuICAgIHRoaXMucGF0aCA9IHBhdGgudHJpbSgpO1xuICB9XG4gIHByaXZhdGUgZ2V0IHZhdWx0KCkge1xuICAgIHJldHVybiB0aGlzLnBsdWdpbi5hcHAudmF1bHQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlkKCkge1xuICAgIHJldHVybiB0aGlzLl9pZDtcbiAgfVxuICBwdWJsaWMgZ2V0IHBhY2soKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BhY2s7XG4gIH1cbiAgcHVibGljIGdldCBuYW1lKCkge1xuICAgIHJldHVybiB0aGlzLl9uYW1lO1xuICB9XG4gIHB1YmxpYyBnZXQgZXh0KCkge1xuICAgIHJldHVybiBleHRuYW1lKHRoaXMucGF0aCk7XG4gIH1cbiAgcHVibGljIGdldCBmc1BhdGgoKSB7XG4gICAgaWYgKHRoaXMudmF1bHQuYWRhcHRlciBpbnN0YW5jZW9mIEZpbGVTeXN0ZW1BZGFwdGVyKSB7XG4gICAgICByZXR1cm4gdGhpcy52YXVsdC5hZGFwdGVyLmdldEZ1bGxQYXRoKHRoaXMucGF0aCk7XG4gICAgfSBlbHNlIHJldHVybiBudWxsO1xuICB9XG4gIHB1YmxpYyBnZXQgcmVzb3VyY2VQYXRoKCkge1xuICAgIHJldHVybiB0aGlzLnZhdWx0LmFkYXB0ZXIuZ2V0UmVzb3VyY2VQYXRoKHRoaXMucGF0aCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzU1ZHKCkge1xuICAgIHJldHVybiB0aGlzLmV4dCA9PT0gXCIuc3ZnXCI7XG4gIH1cbiAgcHVibGljIGdldERPTShzdmc6IHRydWUpOiBQcm9taXNlPEhUTUxTcGFuRWxlbWVudD47XG4gIHB1YmxpYyBnZXRET00oc3ZnOiBmYWxzZSk6IEhUTUxTcGFuRWxlbWVudDtcbiAgcHVibGljIGdldERPTShzdmcgPSB0cnVlKTogUHJvbWlzZTxIVE1MU3BhbkVsZW1lbnQ+IHwgSFRNTFNwYW5FbGVtZW50IHtcbiAgICBjb25zdCBlbCA9IGNyZWF0ZVNwYW4oeyBjbHM6IGdldENsc0Zvckljb24odGhpcykgfSk7XG4gICAgaWYgKHN2ZyAmJiB0aGlzLmlzU1ZHKSB7XG4gICAgICBlbC5hZGRDbGFzcyhcImlzYy1zdmctaWNvblwiKTtcbiAgICAgIHJldHVybiAoYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBzdmdFbCA9IGF3YWl0IHRoaXMucGx1Z2luLmZpbGVJY29uQ2FjaGUuZ2V0SWNvbih0aGlzLnBhdGgpO1xuICAgICAgICBpZiAoc3ZnRWwpIHtcbiAgICAgICAgICB0aGlzLmZpeEZpbGxDb2xvcihzdmdFbCk7XG4gICAgICAgICAgZWwuYXBwZW5kKHN2Z0VsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiZmFpbGVkIHRvIGdldCBpY29uIGRhdGEgZm9yXCIsIHRoaXMucGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVsO1xuICAgICAgfSkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwuYWRkQ2xhc3MoXCJpc2MtaW1nLWljb25cIik7XG4gICAgICBlbC5jcmVhdGVFbChcImltZ1wiLCB7IGF0dHI6IHsgc3JjOiB0aGlzLnJlc291cmNlUGF0aCB9IH0pO1xuICAgICAgcmV0dXJuIGVsO1xuICAgIH1cbiAgfVxuXG4gIGZpeEZpbGxDb2xvcihzdmc6IFNWR0VsZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAoIXBhY2tUb1BhdGNoLmluY2x1ZGVzKHRoaXMucGFjaykpIHJldHVybjtcbiAgICBmb3IgKGNvbnN0IHBhdGhFbCBvZiBzdmcuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJwYXRoXCIpKSB7XG4gICAgICBpZiAoIXBhdGhFbC5oYXNBdHRyaWJ1dGUoXCJmaWxsXCIpKSB7XG4gICAgICAgIHBhdGhFbC5zZXRBdHRyaWJ1dGUoXCJmaWxsXCIsIFwiY3VycmVudENvbG9yXCIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgcGFja1RvUGF0Y2ggPSBbXCJmYWJcIiwgXCJmYXJcIiwgXCJmYXNcIiwgXCJyaWZcIiwgXCJyaWxcIl07XG4iLCAiaW1wb3J0IEZ1c2UgZnJvbSBcImZ1c2UuanNcIjtcblxuaW50ZXJmYWNlIEljb25CYXNpY0luZm8ge1xuICBwYWNrOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgSWNvbkluZm8gPSBGaWxlSWNvbkluZm8gfCBFbW9qaUljb25JbmZvIHwgQnVsdGlJbkljb25JbmZvO1xuZXhwb3J0IHR5cGUgSWNvbkRhdGEgPSBGaWxlSWNvbkRhdGEgfCBFbW9qaUljb25EYXRhIHwgQnVsdGlJbkljb25EYXRhO1xuXG50eXBlIHdpdGhJZCA9IHsgaWQ6IHN0cmluZyB9O1xuXG50eXBlIEVtb2ppSWNvbkluZm8gPSBJY29uQmFzaWNJbmZvICYgeyBwYWNrOiBcImVtb2ppXCIgfSAmIHdpdGhJZDtcbmV4cG9ydCB0eXBlIEVtb2ppSWNvbkRhdGEgPSBFbW9qaUljb25JbmZvICZcbiAgSWNvbkJhc2ljRGF0YSAmIHsgY2hhcjogc3RyaW5nOyB0eXBlOiBcImVtb2ppXCIgfTtcblxudHlwZSBGaWxlQmFzaWNJbmZvID0gSWNvbkJhc2ljSW5mbyAmIHtcbiAgLyoqIHBhdGggcmVsYXRpdmUgdG8gdmF1bHQgKi9cbiAgcGF0aDogc3RyaW5nO1xuICAvKiogd2l0aCBkb3QgKi9cbiAgZXh0OiBzdHJpbmc7XG59O1xuXG50eXBlIEljb25CYXNpY0RhdGEgPSB7XG4gIGdldERPTShzdmc6IHRydWUpOiBIVE1MU3BhbkVsZW1lbnQgfCBQcm9taXNlPEhUTUxTcGFuRWxlbWVudD47XG4gIGdldERPTShzdmc/OiBmYWxzZSk6IEhUTUxTcGFuRWxlbWVudDtcbn07XG5cbmV4cG9ydCB0eXBlIEZpbGVJY29uSW5mbyA9IEZpbGVCYXNpY0luZm8gJiB3aXRoSWQ7XG5leHBvcnQgdHlwZSBGaWxlSWNvbkRhdGEgPSBGaWxlQmFzaWNJbmZvICZcbiAgSWNvbkJhc2ljRGF0YSAmIHtcbiAgICAvKiogcmVhbCBwYXRoIGluIGZpbGUgc3lzdGVtLCBudWxsIGlmIG5vdCBpbiBEZXNrdG9wICovXG4gICAgZnNQYXRoOiBzdHJpbmcgfCBudWxsO1xuICAgIC8qKiByZXNvdXJjZSBwYXRoIHRvIGljb24gZmlsZSAqL1xuICAgIHJlc291cmNlUGF0aDogc3RyaW5nO1xuICAgIHR5cGU6IFwiZmlsZVwiO1xuICAgIGlzU1ZHOiBib29sZWFuO1xuICB9O1xuZXhwb3J0IGNvbnN0IGlzRmlsZUljb25JbmZvID0gKGlkOiBJY29uSW5mbyk6IGlkIGlzIEZpbGVJY29uSW5mbyA9PlxuICAhIShpZCBhcyBGaWxlSWNvbkluZm8pLmV4dDtcblxuZXhwb3J0IHR5cGUgQnVsdGlJbkljb25JbmZvID0gSWNvbkJhc2ljSW5mbyAmIHdpdGhJZDtcbmV4cG9ydCB0eXBlIEJ1bHRpSW5JY29uRGF0YSA9IEljb25CYXNpY0luZm8gJlxuICBJY29uQmFzaWNEYXRhICYge1xuICAgIC8qKiBkYXRhIHVyaSBvZiBzdmcgaWNvbiAqL1xuICAgIGRhdGFVcmk6IHN0cmluZztcbiAgICAvKiogc3ZnIGljb24gcmF3IGNvbnRlbnQgKi9cbiAgICBkYXRhOiBzdHJpbmc7XG4gICAgdHlwZTogXCJidWx0aS1pblwiO1xuICB9O1xuXG5leHBvcnQgdHlwZSBGdXp6eU1hdGNoPFQ+ID0gRnVzZS5GdXNlUmVzdWx0PFQ+O1xuIiwgImltcG9ydCB7IE5vdGljZSwgVEZpbGUgfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgSWNvblNDIGZyb20gXCIuLi9pc2MtbWFpblwiO1xuaW1wb3J0IHsgY29uZmlybSB9IGZyb20gXCIuL2RpYWxvZ1wiO1xuXG5jb25zdCBqc29uVG9TdmcgPSBhc3luYyAocGx1Z2luOiBJY29uU0MpID0+IHtcbiAgY29uc3QgeyB2YXVsdCB9ID0gcGx1Z2luLmFwcDtcbiAgY29uc3QgZGF0YSA9IChhd2FpdCB2YXVsdC5yZWFkSnNvbihcbiAgICBwbHVnaW4ucGFja01hbmFnZXIuY3VzdG9tSWNvbnNGaWxlUGF0aCxcbiAgKSkgYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgbGV0IHBhdGggPSBwbHVnaW4ucGFja01hbmFnZXIuY3VzdG9tSWNvbnNEaXI7XG4gIGlmICghKGF3YWl0IHZhdWx0LmFkYXB0ZXIuZXhpc3RzKHBhdGgpKSkge1xuICAgIGF3YWl0IHZhdWx0LmFkYXB0ZXIubWtkaXIocGF0aCk7XG4gIH1cbiAgYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgIE9iamVjdC5lbnRyaWVzKGRhdGEpLnJlZHVjZSgoYXJyLCBbaWQsIHN2Z10pID0+IHtcbiAgICAgIGlmICh0eXBlb2YgaWQgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIHN2ZyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBjb25zdCBmaWxlUGF0aCA9IGpvaW4ocGF0aCwgYCR7aWR9LnN2Z2ApO1xuICAgICAgICBhcnIucHVzaCh2YXVsdC5jcmVhdGUoZmlsZVBhdGgsIHN2ZykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycjtcbiAgICB9LCBbXSBhcyBQcm9taXNlPFRGaWxlPltdKSxcbiAgKTtcbn07XG5cbmNvbnN0IHRyeVVwZGF0ZUljb25zID0gYXN5bmMgKHBsdWdpbjogSWNvblNDKSA9PiB7XG4gIGlmIChcbiAgICAoYXdhaXQgcGx1Z2luLmFwcC52YXVsdC5hZGFwdGVyLmV4aXN0cyhcbiAgICAgIHBsdWdpbi5wYWNrTWFuYWdlci5jdXN0b21JY29uc0ZpbGVQYXRoLFxuICAgICkpICYmXG4gICAgIXBsdWdpbi5zZXR0aW5ncy5pc01pZ3JhdGVkXG4gICkge1xuICAgIGNvbnN0IG1lc3NhZ2UgPVxuICAgICAgXCJGb3VuZCBjdXN0b20gaWNvbnMgdGhhdCBoYXZlIG5vdCBiZWVuIHVwZ3JhZGVkLCB1cGRhdGUgaWNvbnMgbm93P1wiO1xuICAgIGlmIChhd2FpdCBjb25maXJtKG1lc3NhZ2UsIHBsdWdpbi5hcHApKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBqc29uVG9TdmcocGx1Z2luKTtcbiAgICAgICAgcGx1Z2luLnNldHRpbmdzLmlzTWlncmF0ZWQgPSB0cnVlO1xuICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG4gICAgICAgIG5ldyBOb3RpY2UoXG4gICAgICAgICAgXCJJY29uIHVwZGF0ZSBjb21wbGV0ZSwgeW91IGNhbiBub3cgZmluZCBpY29uIGZpbGVzIGluIFwiICtcbiAgICAgICAgICAgIHBsdWdpbi5wYWNrTWFuYWdlci5jdXN0b21JY29uc0RpcixcbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIG5ldyBOb3RpY2UoXCJGYWlsZWQgdG8gdXBkYXRlIGljb25zLCBjaGVjayBjb25zb2xlIGZvciBtb3JlIGRldGFpbHNcIik7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgdHJ5VXBkYXRlSWNvbnM7XG4iLCAiaW1wb3J0IHsgQXBwLCBNb2RhbCB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG50eXBlIFByb21pc2VWYWw8VCA9IHZvaWQ+ID0gVCB8IFByb21pc2VMaWtlPFQ+O1xuXG5jbGFzcyBDb25maXJtTW9kYWwgZXh0ZW5kcyBNb2RhbCB7XG4gIGJ1dHRvbkNvbnRhaW5lckVsID0gdGhpcy5tb2RhbEVsLmNyZWF0ZURpdihcIm1vZGFsLWJ1dHRvbi1jb250YWluZXJcIik7XG4gIHByaXZhdGUgcmVzb2x2ZTogKCh2YWx1ZTogUHJvbWlzZVZhbDxib29sZWFuPikgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcbiAgY29uc3RydWN0b3IoYXBwOiBBcHApIHtcbiAgICBzdXBlcihhcHApO1xuICAgIHRoaXMuY29udGFpbmVyRWwuYWRkQ2xhc3MoXCJtb2QtY29uZmlybWF0aW9uXCIpO1xuICAgIHRoaXMuYWRkQnV0dG9uKFwibW9kLWN0YVwiLCBcIk9LXCIsICgpID0+IHRoaXMucmVzb2x2ZSAmJiB0aGlzLnJlc29sdmUodHJ1ZSkpO1xuICAgIHRoaXMuYWRkQ2FuY2VsQnV0dG9uKCk7XG4gIH1cbiAgb3BlbigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBzdXBlci5vcGVuKCk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiAodGhpcy5yZXNvbHZlID0gcmVzb2x2ZSkpO1xuICB9XG4gIGFkZEJ1dHRvbihcbiAgICBjbHM6IHN0cmluZyB8IHN0cmluZ1tdLFxuICAgIHRleHQ6IHN0cmluZyxcbiAgICBjYWxsYmFjaz86IChldnQ6IE1vdXNlRXZlbnQpID0+IGFueSxcbiAgKSB7XG4gICAgdGhpcy5idXR0b25Db250YWluZXJFbFxuICAgICAgLmNyZWF0ZUVsKFwiYnV0dG9uXCIsIHsgY2xzLCB0ZXh0IH0pXG4gICAgICAuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGFzeW5jIChldnQpID0+IHtcbiAgICAgICAgY2FsbGJhY2sgJiYgKGF3YWl0IGNhbGxiYWNrKGV2dCkpO1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBvbkNsb3NlKCkge1xuICAgIHRoaXMucmVzb2x2ZSAmJiB0aGlzLnJlc29sdmUoZmFsc2UpO1xuICB9XG5cbiAgYWRkQ2FuY2VsQnV0dG9uKCkge1xuICAgIHJldHVybiB0aGlzLmFkZEJ1dHRvbihcIlwiLCBcIkNhbmNlbFwiLCB0aGlzLmNsb3NlLmJpbmQodGhpcykpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBjb25maXJtID0gKG1lc3NhZ2U6IHN0cmluZyB8IERvY3VtZW50RnJhZ21lbnQsIGFwcDogQXBwKSA9PiB7XG4gIGNvbnN0IG1vZGFsID0gbmV3IENvbmZpcm1Nb2RhbChhcHApO1xuICBtb2RhbC5jb250ZW50RWwuc2V0VGV4dChtZXNzYWdlKTtcbiAgcmV0dXJuIG1vZGFsLm9wZW4oKTtcbn07XG4iLCAiaW1wb3J0IHsgTWFya2Rvd25Qb3N0UHJvY2Vzc29yIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB0eXBlIEljb25TQyBmcm9tIFwiLi4vaXNjLW1haW5cIjtcblxuY29uc3QgZ2V0Q2FsbG91dEljb25Qb3N0UHJvY2Vzc29yID1cbiAgKHBsdWdpbjogSWNvblNDKTogTWFya2Rvd25Qb3N0UHJvY2Vzc29yID0+XG4gIChlbCwgY3R4KSA9PiB7XG4gICAgZm9yIChjb25zdCBjYWxsb3V0RWwgb2YgZWwucXVlcnlTZWxlY3RvckFsbChcIi5jYWxsb3V0XCIpKSB7XG4gICAgICBjb25zdCBpY29uRWwgPSBjYWxsb3V0RWwucXVlcnlTZWxlY3RvcihcbiAgICAgICAgXCIuY2FsbG91dC10aXRsZSA+IC5jYWxsb3V0LWljb25cIixcbiAgICAgICkhIGFzIEhUTUxFbGVtZW50O1xuICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihhc3luYyAobSkgPT4ge1xuICAgICAgICBpZiAoaWNvbkVsLmNoaWxkRWxlbWVudENvdW50ID4gMCkgcmV0dXJuO1xuICAgICAgICBjb25zdCBpZCA9IGdldENzc1Byb3BlcnR5VmFsdWUoaWNvbkVsLCBcIi0tY2FsbG91dC1pY29uXCIpLFxuICAgICAgICAgIGljb24gPSBhd2FpdCBwbHVnaW4uYXBpLmdldFNWR0ljb24oaWQpO1xuICAgICAgICBpZiAoIWljb24pIHJldHVybjtcbiAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICBpY29uRWwuY2xhc3NOYW1lICs9IFwiIFwiICsgaWNvbi5jbGFzc05hbWU7XG4gICAgICAgIGljb25FbC5yZXBsYWNlQ2hpbGRyZW4oLi4uaWNvbi5jaGlsZE5vZGVzKTtcbiAgICAgIH0pO1xuICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShpY29uRWwsIHsgY2hpbGRMaXN0OiB0cnVlIH0pO1xuICAgIH1cbiAgfTtcbmV4cG9ydCBkZWZhdWx0IGdldENhbGxvdXRJY29uUG9zdFByb2Nlc3NvcjtcblxuY29uc3QgZ2V0Q3NzUHJvcGVydHlWYWx1ZSA9IChcbiAgZWw6IEhUTUxFbGVtZW50LFxuICBwcm9wOiBzdHJpbmcsXG4gIHBzZXVkb0VsPzogc3RyaW5nIHwgbnVsbCxcbikgPT4gZ2V0Q29tcHV0ZWRTdHlsZShlbCwgcHNldWRvRWwpLmdldFByb3BlcnR5VmFsdWUocHJvcCkudHJpbSgpO1xuIiwgImltcG9ydCB7XG4gIGdldEdsb2JhbFJlZ2V4cCxcbiAgUkVfU0hPUlRDT0RFLFxuICBzdHJpcENvbG9ucyxcbn0gZnJvbSBcIi4uL2ljb24tcGFja3MvdXRpbHNcIjtcbmltcG9ydCBJY29uU0MgZnJvbSBcIi4uL2lzYy1tYWluXCI7XG5cbmNvbnN0IGFjY2VwdE5vZGUgPSAobm9kZTogTm9kZSk6IG51bWJlciA9PiB7XG4gIHN3aXRjaCAobm9kZS5ub2RlTmFtZSkge1xuICAgIGNhc2UgXCJDT0RFXCI6XG4gICAgY2FzZSBcIk1KWC1DT05UQUlORVJcIjpcbiAgICAgIHJldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9SRUpFQ1Q7XG4gICAgY2FzZSBcIiN0ZXh0XCI6IHtcbiAgICAgIGlmIChub2RlLm5vZGVWYWx1ZSAmJiBSRV9TSE9SVENPREUudGVzdChub2RlLm5vZGVWYWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVDtcbiAgICAgIH0gZWxzZSByZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfUkVKRUNUO1xuICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX1NLSVA7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXROb2RlUG9zdFByb2Nlc3NvciA9IChcbiAgcGx1Z2luOiBJY29uU0MsXG4pOiAoKGVsOiBIVE1MRWxlbWVudCkgPT4gdm9pZCkgPT4ge1xuICBjb25zdCBzY1JlcGxhY2UgPSBhc3luYyAodGV4dDogVGV4dCkgPT4ge1xuICAgIGZvciAoY29uc3QgY29kZSBvZiBbXG4gICAgICAuLi50ZXh0Lndob2xlVGV4dC5tYXRjaEFsbChnZXRHbG9iYWxSZWdleHAoUkVfU0hPUlRDT0RFKSksXG4gICAgXVxuICAgICAgLnNvcnQoKGEsIGIpID0+IChiLmluZGV4IGFzIG51bWJlcikgLSAoYS5pbmRleCBhcyBudW1iZXIpKVxuICAgICAgLm1hcCgoYXJyKSA9PiAoeyB0ZXh0OiBhcnJbMF0sIGluZGV4OiBhcnIuaW5kZXghIH0pKSkge1xuICAgICAgYXdhaXQgaW5zZXJ0RWxUb1RleHQodGV4dCwgY29kZSk7XG4gICAgfVxuICB9O1xuICBjb25zdCBpbnNlcnRFbFRvVGV4dCA9IGFzeW5jIChcbiAgICB0ZXh0OiBUZXh0LFxuICAgIHsgdGV4dDogcGF0dGVybiwgaW5kZXggfTogeyB0ZXh0OiBzdHJpbmc7IGluZGV4OiBudW1iZXIgfSxcbiAgKSA9PiB7XG4gICAgY29uc3QgaWNvbiA9IGF3YWl0IHBsdWdpbi5wYWNrTWFuYWdlci5nZXRTVkdJY29uKHN0cmlwQ29sb25zKHBhdHRlcm4pKTtcbiAgICBpZiAoIWljb24pIHJldHVybiB0ZXh0O1xuICAgIGlmICh0eXBlb2YgaWNvbiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgdGV4dC50ZXh0Q29udGVudCAmJlxuICAgICAgICAodGV4dC50ZXh0Q29udGVudCA9IHRleHQudGV4dENvbnRlbnQ/LnJlcGxhY2UocGF0dGVybiwgaWNvbikpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0b1JlcGxhY2UgPSB0ZXh0LnNwbGl0VGV4dChpbmRleCk7XG4gICAgICB0b1JlcGxhY2UucGFyZW50RWxlbWVudD8uaW5zZXJ0QmVmb3JlKGljb24sIHRvUmVwbGFjZSk7XG4gICAgICB0b1JlcGxhY2UudGV4dENvbnRlbnQgPSB0b1JlcGxhY2Uud2hvbGVUZXh0LnN1YnN0cmluZyhwYXR0ZXJuLmxlbmd0aCk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiAoZWw6IEhUTUxFbGVtZW50KSA9PiB7XG4gICAgY29uc3Qgd2Fsa2VyID0gZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihlbCwgTm9kZUZpbHRlci5TSE9XX0FMTCwge1xuICAgICAgYWNjZXB0Tm9kZSxcbiAgICB9KTtcbiAgICBsZXQgY3VycmVudE5vZGU6IE5vZGUgfCBudWxsID0gd2Fsa2VyLmN1cnJlbnROb2RlO1xuICAgIHdoaWxlIChjdXJyZW50Tm9kZSkge1xuICAgICAgaWYgKGN1cnJlbnROb2RlLm5vZGVUeXBlID09PSAzKSB7XG4gICAgICAgIGNvbnN0IHRleHQgPSBjdXJyZW50Tm9kZSBhcyBUZXh0ICYgeyBfX1BFTkRJTkdfXz86IFByb21pc2U8YW55PiB9O1xuICAgICAgICAvLyBkb24ndCB3YWl0IGZvciBuZXcgbm9kZSB0byBiZSBpbnNlcnRlZFxuICAgICAgICAoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGxldCB0ZXh0Tm9kZXMgPSBbdGV4dF07XG4gICAgICAgICAgaWYgKHRleHQuX19QRU5ESU5HX18pIHtcbiAgICAgICAgICAgIC8vIHdhaXQgZm9yIHByZXZvdXMgcG9zdCBwcm9jZXNzb3IgdG8gZmluaXNoXG4gICAgICAgICAgICBhd2FpdCB0ZXh0Ll9fUEVORElOR19fO1xuICAgICAgICAgICAgLy8gcmVzY2FuIGZvciBuZXcgdGV4dCBub2Rlc1xuICAgICAgICAgICAgdGV4dE5vZGVzID0gWy4uLnRleHQucGFyZW50RWxlbWVudCEuY2hpbGROb2Rlc10uZmlsdGVyKFxuICAgICAgICAgICAgICAobik6IG4gaXMgVGV4dCA9PiBuIGluc3RhbmNlb2YgVGV4dCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHBlbmRpbmcgPSBQcm9taXNlLmFsbCh0ZXh0Tm9kZXMubWFwKHNjUmVwbGFjZSkpO1xuICAgICAgICAgIC8vIHNhdmUgcHJvbWlzZSB0byBfX1BFTkRJTkdfXyB0byBub3RpZnkgb3RoZXIgYXN5bmMgcG9zdCBwcm9jZXNzb3JcbiAgICAgICAgICB0ZXh0Ll9fUEVORElOR19fID0gcGVuZGluZztcbiAgICAgICAgICBhd2FpdCBwZW5kaW5nO1xuICAgICAgICAgIGRlbGV0ZSB0ZXh0Ll9fUEVORElOR19fO1xuICAgICAgICB9KSgpO1xuICAgICAgfVxuICAgICAgY3VycmVudE5vZGUgPSB3YWxrZXIubmV4dE5vZGUoKTtcbiAgICB9XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TURQb3N0UHJvY2Vzc29yID1cbiAgKHBsdWdpbjogSWNvblNDKSA9PiAoc3RyOiBzdHJpbmcsIHJlcGxhY2VyOiAoc2hvcnRjb2RlOiBzdHJpbmcpID0+IHN0cmluZykgPT5cbiAgICBzdHIucmVwbGFjZShnZXRHbG9iYWxSZWdleHAoUkVfU0hPUlRDT0RFKSwgKGNvZGUpID0+IHtcbiAgICAgIGlmIChwbHVnaW4ucGFja01hbmFnZXIuaGFzSWNvbihzdHJpcENvbG9ucyhjb2RlKSkpIHtcbiAgICAgICAgcmV0dXJuIHJlcGxhY2VyKGNvZGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGNvZGU7XG4gICAgICB9XG4gICAgfSk7XG4iLCAiaW1wb3J0IHR5cGUgSWNvblNDIGZyb20gXCIuLi9pc2MtbWFpblwiO1xuaW1wb3J0IGdldENhbGxvdXRJY29uUG9zdFByb2Nlc3NvciBmcm9tIFwiLi9jYWxsb3V0LWljb25cIjtcbmltcG9ydCB7IGdldE1EUG9zdFByb2Nlc3NvciwgZ2V0Tm9kZVBvc3RQcm9jZXNzb3IgfSBmcm9tIFwiLi90ZXh0XCI7XG5cbmNvbnN0IHNldHVwUG9zdFByb2Nlc3NvcnMgPSAocGx1Z2luOiBJY29uU0MpID0+IHtcbiAgcGx1Z2luLnJlZ2lzdGVyTWFya2Rvd25Qb3N0UHJvY2Vzc29yKHBsdWdpbi5fbm9kZVByb2Nlc3Nvcik7XG4gIHBsdWdpbi5yZWdpc3Rlck1hcmtkb3duUG9zdFByb2Nlc3NvcihnZXRDYWxsb3V0SWNvblBvc3RQcm9jZXNzb3IocGx1Z2luKSk7XG59O1xuXG5leHBvcnQgeyBnZXRNRFBvc3RQcm9jZXNzb3IsIGdldE5vZGVQb3N0UHJvY2Vzc29yLCBzZXR1cFBvc3RQcm9jZXNzb3JzIH07XG4iLCAiY2xhc3MgQmFzZUVycm9yIGV4dGVuZHMgRXJyb3Ige31cblxuZXhwb3J0IGNsYXNzIE5vdFJlY2VpdmVGaWxlTGlzdCBleHRlbmRzIEJhc2VFcnJvciB7fVxuXG5leHBvcnQgY2xhc3MgVW5rbm93bkVycm9yIGV4dGVuZHMgQmFzZUVycm9yIHt9XG4iLCAiZXhwb3J0IGNvbnN0IGpvaW5BcnJheVN0cmluZyA9IChcbiAgYXJyOiBzdHJpbmdbXSxcbiAgc2VwYXJhdG9yOiBzdHJpbmcgPSAnLCdcbik6IHN0cmluZyA9PiBhcnIuam9pbihzZXBhcmF0b3IpXG4iLCAiaW1wb3J0IHsgVW5rbm93bkVycm9yLCBOb3RSZWNlaXZlRmlsZUxpc3QgfSBmcm9tICcuL2Vycm9yJ1xuaW1wb3J0IHsgam9pbkFycmF5U3RyaW5nIH0gZnJvbSAnLi91dGlsJ1xuY29uc3QgREVGQVVMVF9QQVJBTUVURVJTOiBQYXJhbWV0ZXJzID0ge1xuICBhY2NlcHQ6ICcqJyxcbiAgbXVsdGlwbGU6IGZhbHNlLFxuICBzdHJpY3Q6IGZhbHNlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyYW1ldGVyczxcbiAgVCBleHRlbmRzIGJvb2xlYW4gPSBmYWxzZSxcbiAgVSBleHRlbmRzIGJvb2xlYW4gPSBmYWxzZVxuPiB7XG4gIGFjY2VwdDogc3RyaW5nIHwgc3RyaW5nW11cbiAgbXVsdGlwbGU6IFRcbiAgc3RyaWN0OiBVXG59XG5cbnR5cGUgUGlja0ZpbGU8XG4gIFQgZXh0ZW5kcyBib29sZWFuID0gZmFsc2UsXG4gIFUgZXh0ZW5kcyBib29sZWFuID0gZmFsc2Vcbj4gPSBUIGV4dGVuZHMgZmFsc2UgPyAoVSBleHRlbmRzIHRydWUgPyBGaWxlIDogRmlsZUxpc3QpIDogRmlsZUxpc3RcblxuLyoqXG4gKiBDYWxsIGZpbGUgc2VsZWN0IGRpYWxvZyBwcm9ncmFtbWF0aWNhbGx5LlxuICogQHBhcmFtIHtvYmplY3R9IFtwYXJhbWV0ZXJzXSBvcHRpb25hbFxuICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2UgPEZpbGUgfCBGaWxlTGlzdD4gaWYgc3RyaWN0IGlzIGZhbHNlLCByZXR1cm4gRmlsZUxpc3Qgb2JqZWN0LCBpZiBtdWx0aXBsZSBpcyBmYWxzZSBhbmQgc3RyaWN0IGlzIHRydWUgcmV0dXJuIEZpbGUgb2JqZWN0XG4gKi9cbmV4cG9ydCBjb25zdCBmaWxlRGlhbG9nID0gPFxuICBUIGV4dGVuZHMgYm9vbGVhbiA9IGZhbHNlLFxuICBVIGV4dGVuZHMgYm9vbGVhbiA9IGZhbHNlXG4+KFxuICBwYXJhbWV0ZXJzPzogUGFydGlhbDxQYXJhbWV0ZXJzPFQsIFU+PlxuKTogUHJvbWlzZTxQaWNrRmlsZTxULCBVPj4gPT4ge1xuICBjb25zdCB7IGFjY2VwdCwgbXVsdGlwbGUsIHN0cmljdCB9ID0geyAuLi5ERUZBVUxUX1BBUkFNRVRFUlMsIC4uLnBhcmFtZXRlcnMgfVxuICBjb25zdCBpbnB1dCA9IGNyZWF0ZUZpbGVJbnB1dEVsZW1lbnQoe1xuICAgIG11bHRpcGxlLFxuICAgIGFjY2VwdDogQXJyYXkuaXNBcnJheShhY2NlcHQpID8gam9pbkFycmF5U3RyaW5nKGFjY2VwdCkgOiBhY2NlcHRcbiAgfSlcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFBpY2tGaWxlPFQsIFU+PigocmVzb2x2ZSkgPT4ge1xuICAgIGlucHV0Lm9uY2hhbmdlID0gKCkgPT4ge1xuICAgICAgcmVzb2x2ZShyZXNvbHZlcihpbnB1dC5maWxlcywgbXVsdGlwbGUgYXMgVCwgc3RyaWN0IGFzIFUpKVxuICAgICAgaW5wdXQucmVtb3ZlKClcbiAgICB9XG4gICAgaW5wdXQuY2xpY2soKVxuICB9KVxufVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZXIgPSA8VCBleHRlbmRzIGJvb2xlYW4sIFUgZXh0ZW5kcyBib29sZWFuPihcbiAgZmlsZUxpc3Q6IEhUTUxJbnB1dEVsZW1lbnRbJ2ZpbGVzJ10sXG4gIG11bHRpcGxlOiBULFxuICBzdHJpY3Q6IFVcbikgPT4ge1xuICByZXR1cm4gbmV3IFByb21pc2U8UGlja0ZpbGU8VCwgVT4+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBpZiAoIWZpbGVMaXN0KSByZXR1cm4gcmVqZWN0KG5ldyBOb3RSZWNlaXZlRmlsZUxpc3QoKSlcbiAgICBjb25zdCBmaWxlID0gZ2V0RmlsZUxpc3RPYmooZmlsZUxpc3QsIG11bHRpcGxlLCBzdHJpY3QpXG4gICAgaWYgKCFmaWxlKSByZXR1cm4gcmVqZWN0KG5ldyBVbmtub3duRXJyb3IoKSlcblxuICAgIHJlc29sdmUoZmlsZSlcbiAgfSlcbn1cblxuZXhwb3J0IGNvbnN0IGdldEZpbGVMaXN0T2JqID0gPFQgZXh0ZW5kcyBib29sZWFuLCBVIGV4dGVuZHMgYm9vbGVhbj4oXG4gIGZpbGVzOiBOb25OdWxsYWJsZTxIVE1MSW5wdXRFbGVtZW50WydmaWxlcyddPixcbiAgbXVsdGlwbGU6IFQsXG4gIHN0cmljdDogVVxuKTogUGlja0ZpbGU8VCwgVT4gfCBudWxsID0+IHtcbiAgaWYgKCFtdWx0aXBsZSAmJiBzdHJpY3QpIHtcbiAgICBpZiAoZmlsZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gPFBpY2tGaWxlPFQsIFU+PmZpbGVzWzBdXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICB9IGVsc2UgaWYgKGZpbGVzLmxlbmd0aCkge1xuICAgIHJldHVybiA8UGlja0ZpbGU8VCwgVT4+ZmlsZXNcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVGaWxlSW5wdXRFbGVtZW50ID0gKHtcbiAgYWNjZXB0LFxuICBtdWx0aXBsZVxufTogUGljazxIVE1MSW5wdXRFbGVtZW50LCAnYWNjZXB0JyB8ICdtdWx0aXBsZSc+KTogSFRNTElucHV0RWxlbWVudCA9PiB7XG4gIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKVxuICBpbnB1dC50eXBlID0gJ2ZpbGUnXG4gIGlucHV0Lm11bHRpcGxlID0gbXVsdGlwbGVcbiAgaW5wdXQuYWNjZXB0ID0gYWNjZXB0XG4gIHJldHVybiBpbnB1dFxufVxuIiwgImltcG9ydCBcInNldHRpbmdzLmxlc3NcIjtcbmltcG9ydCBcImludmFsaWQubGVzc1wiO1xuXG5pbXBvcnQgeyBmaWxlRGlhbG9nIH0gZnJvbSBcImZpbGUtc2VsZWN0LWRpYWxvZ1wiO1xuaW1wb3J0IHtcbiAgQXBwLFxuICBCdXR0b25Db21wb25lbnQsXG4gIE5vdGljZSxcbiAgUGxhdGZvcm0sXG4gIFBsdWdpblNldHRpbmdUYWIsXG4gIFNldHRpbmcsXG4gIFRleHRDb21wb25lbnQsXG59IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgQnJvd3NlclBhY2tzIGZyb20gXCIuL2NvbXBvbmVudC9icm93c2VyLXBhY2tzXCI7XG5pbXBvcnQgSWNvbk1hbmFnZXIgZnJvbSBcIi4vY29tcG9uZW50L2ljb24tbWFuYWdlclwiO1xuaW1wb3J0IHsgQnVpbHRJbkljb25QYWNrbmFtZXMsIFNWR1BhY2tuYW1lcyB9IGZyb20gXCIuL2ljb24tcGFja3MvYnVpbHQtaW5zXCI7XG5pbXBvcnQgeyBTdXBwb3J0ZWRJY29uRXh0IH0gZnJvbSBcIi4vaWNvbi1wYWNrcy91dGlsc1wiO1xuaW1wb3J0IEljb25TQyBmcm9tIFwiLi9pc2MtbWFpblwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEljb25TQ1NldHRpbmdzIHtcbiAgY29kZTJlbW9qaTogYm9vbGVhbjtcbiAgc3VnZ2VzdGVyOiBib29sZWFuO1xuICBkaXNhYmxlZFBhY2tzOiBTZXQ8c3RyaW5nPjtcbiAgc3BhY2VBZnRlclNDOiBib29sZWFuO1xuICB0cmlnZ2VyV2l0aFRyYWlsaW5nU3BhY2U6IGJvb2xlYW47XG4gIGlzTWlncmF0ZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1NFVFRJTkdTOiBJY29uU0NTZXR0aW5ncyA9IHtcbiAgY29kZTJlbW9qaTogdHJ1ZSxcbiAgc3VnZ2VzdGVyOiB0cnVlLFxuICBkaXNhYmxlZFBhY2tzOiBuZXcgU2V0KFtcIm9ic1wiXSksXG4gIHRyaWdnZXJXaXRoVHJhaWxpbmdTcGFjZTogZmFsc2UsXG4gIHNwYWNlQWZ0ZXJTQzogZmFsc2UsXG4gIGlzTWlncmF0ZWQ6IGZhbHNlLFxufTtcblxuZXhwb3J0IGNsYXNzIEljb25TQ1NldHRpbmdUYWIgZXh0ZW5kcyBQbHVnaW5TZXR0aW5nVGFiIHtcbiAgcGx1Z2luOiBJY29uU0M7XG5cbiAgY29uc3RydWN0b3IoYXBwOiBBcHAsIHBsdWdpbjogSWNvblNDKSB7XG4gICAgc3VwZXIoYXBwLCBwbHVnaW4pO1xuICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xuICB9XG5cbiAgZGlzcGxheSgpOiB2b2lkIHtcbiAgICBjb25zdCB7IGNvbnRhaW5lckVsIH0gPSB0aGlzO1xuXG4gICAgdGhpcy5jb250YWluZXJFbC5lbXB0eSgpO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpLnNldEhlYWRpbmcoKS5zZXROYW1lKFwiSWNvbiBTdWdnZXN0ZXJcIik7XG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0RGVzYyhcbiAgICAgICAgXCJJZiB0aGlzIGlzIHR1cm5lZCBvbiwgYSBTdWdnZXN0ZXIgd2lsbCBhcHBlYXIgZXZlcnl0aW1lIHlvdSB0eXBlIDoob3IgXHVGRjFBXHVGRjFBIGlmIGZ1bGwtd2lkdGgpIGZvbGxvd2VkIGJ5IGEgbGV0dGVyLiBUaGlzIHdpbGwgaGVscCB5b3UgaW5zZXJ0IEVtb2ppcy4gXCIsXG4gICAgICApXG4gICAgICAuYWRkVG9nZ2xlKChjYikgPT4ge1xuICAgICAgICBjYi5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5zdWdnZXN0ZXIpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLnN1Z2dlc3RlciA9IHZhbHVlO1xuICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoXCJSZXBsYWNlIGVtb2ppIHNob3J0Y29kZSB3aXRoIGVtb2ppIGNoYXJhY3RlclwiKVxuICAgICAgLnNldERlc2MoXG4gICAgICAgIFwiSWYgdGhpcyBpcyB0dXJuZWQgb24sIGVtb2ppIHNob3J0Y29kZXMgd2lsbCBiZSBpbW1lZGlhdGVseSByZXBsYWNlZCBieSBlbW9qaSBhZnRlciB0eXBpbmcuIFwiICtcbiAgICAgICAgICBcIk90aGVyd2lzZSB0aGV5IGFyZSBzdGlsbCBzdG9yZWQgYXMgYSBzaG9ydGNvZGUgYW5kIHlvdSBvbmx5IHNlZSB0aGUgRW1vamkgaW4gUHJldmlldyBNb2RlLlwiLFxuICAgICAgKVxuICAgICAgLmFkZFRvZ2dsZSgoY2IpID0+IHtcbiAgICAgICAgY2Iuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY29kZTJlbW9qaSkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY29kZTJlbW9qaSA9IHZhbHVlO1xuICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoXCJUcmlnZ2VyIHdpdGggdHJhaWxpbmcgc3BhY2VcIilcbiAgICAgIC5zZXREZXNjKFxuICAgICAgICBcIm9ubHkgdHJpZ2dlciBzdWdnZXN0ZXIgaWYgdGhlcmUgaXMgYSB0cmFpbGluZyBzcGFjZSBiZWZvcmUgdGhlIGNvbG9uXCIsXG4gICAgICApXG4gICAgICAuYWRkVG9nZ2xlKChjYikgPT4ge1xuICAgICAgICBjYi5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy50cmlnZ2VyV2l0aFRyYWlsaW5nU3BhY2UpLm9uQ2hhbmdlKFxuICAgICAgICAgIGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MudHJpZ2dlcldpdGhUcmFpbGluZ1NwYWNlID0gdmFsdWU7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIkFkZCBzcGFjZSBhZnRlciBpbnNlcnRlZCBzaG9ydGNvZGVcIilcbiAgICAgIC5hZGRUb2dnbGUoKGNiKSA9PiB7XG4gICAgICAgIGNiLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLnNwYWNlQWZ0ZXJTQykub25DaGFuZ2UoXG4gICAgICAgICAgYXN5bmMgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5zcGFjZUFmdGVyU0MgPSB2YWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuc2tpcEljb25QYWNrKCk7XG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIkljb24gUGFja3NcIilcbiAgICAgIC5zZXREZXNjKFwiQnJvd3NlIGFuZCBkb3dubG9hZCBpY29uIHBhY2tzXCIpXG4gICAgICAuYWRkQnV0dG9uKChidG4pID0+XG4gICAgICAgIGJ0blxuICAgICAgICAgIC5zZXRCdXR0b25UZXh0KFwiQnJvd3NlclwiKVxuICAgICAgICAgIC5vbkNsaWNrKCgpID0+IG5ldyBCcm93c2VyUGFja3ModGhpcy5wbHVnaW4pLm9wZW4oKSksXG4gICAgICApO1xuXG4gICAgLy8gY3VzdG9tIGljb24gbWFuYWdlIHNlY3Rpb25cbiAgICBjb25zdCBtYW5hZ2VyQ29udGFpbmVyID0gY3JlYXRlRGl2KHtcbiAgICAgIGNsczogW1wiaXNjLXNldHRpbmdzLWN1c3RvbS1pY29uXCIsIFwiaW5zdGFsbGVkLXBsdWdpbnMtY29udGFpbmVyXCJdLFxuICAgIH0pO1xuICAgIG5ldyBTZXR0aW5nKHRoaXMuY29udGFpbmVyRWwpXG4gICAgICAuc2V0SGVhZGluZygpXG4gICAgICAuc2V0TmFtZShcIkN1c3RvbSBJY29uc1wiKVxuICAgICAgLmFkZEV4dHJhQnV0dG9uKChidG4pID0+XG4gICAgICAgIGJ0blxuICAgICAgICAgIC5zZXRJY29uKFwic2hlZXRzLWluLWJveFwiKVxuICAgICAgICAgIC5zZXRUb29sdGlwKFwiQmFja3VwIGljb25zXCIpXG4gICAgICAgICAgLm9uQ2xpY2soKCkgPT4gdGhpcy5wbHVnaW4ucGFja01hbmFnZXIuYmFja3VwSWNvbnMoKSksXG4gICAgICApXG4gICAgICAuYWRkRXh0cmFCdXR0b24oKGJ0bikgPT5cbiAgICAgICAgYnRuXG4gICAgICAgICAgLnNldEljb24oXCJyZXN0b3JlLWZpbGUtZ2x5cGhcIilcbiAgICAgICAgICAuc2V0VG9vbHRpcChcIlJlc3RvcmUgYmFja3VwXCIpXG4gICAgICAgICAgLm9uQ2xpY2soYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucGFja01hbmFnZXIuaW1wb3J0SWNvbnNGcm9tRmlsZUxpc3QoXG4gICAgICAgICAgICAgIGF3YWl0IGZpbGVEaWFsb2coeyBtdWx0aXBsZTogdHJ1ZSwgYWNjZXB0OiBcIi56aXBcIiB9KSxcbiAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4ucGFja01hbmFnZXIubG9hZEljb25zKCk7XG4gICAgICAgICAgICB0aGlzLm1hbmFnZUN1c3RvbUljb25zKG1hbmFnZXJDb250YWluZXIpO1xuICAgICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLmFkZEV4dHJhQnV0dG9uKChidG4pID0+XG4gICAgICAgIGJ0blxuICAgICAgICAgIC5zZXRJY29uKFwic3dpdGNoXCIpXG4gICAgICAgICAgLnNldFRvb2x0aXAoXCJSZWxvYWQgY3VzdG9tIGljb25zXCIpXG4gICAgICAgICAgLm9uQ2xpY2soYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4ucGFja01hbmFnZXIubG9hZEljb25zKCk7XG4gICAgICAgICAgICB0aGlzLm1hbmFnZUN1c3RvbUljb25zKG1hbmFnZXJDb250YWluZXIpO1xuICAgICAgICAgICAgbmV3IE5vdGljZShcIkN1c3RvbSBpY29ucyByZWxvYWRlZFwiKTtcbiAgICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC50aGVuKFxuICAgICAgICAocykgPT5cbiAgICAgICAgICBQbGF0Zm9ybS5pc0Rlc2t0b3BBcHAgJiZcbiAgICAgICAgICBzLmFkZEV4dHJhQnV0dG9uKChidG4pID0+XG4gICAgICAgICAgICBidG5cbiAgICAgICAgICAgICAgLnNldEljb24oXCJmb2xkZXJcIilcbiAgICAgICAgICAgICAgLnNldFRvb2x0aXAoXCJPcGVuIEljb25zIEZvbGRlclwiKVxuICAgICAgICAgICAgICAub25DbGljaygoKSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuYXBwLm9wZW5XaXRoRGVmYXVsdEFwcChcbiAgICAgICAgICAgICAgICAgIHRoaXMucGx1Z2luLnBhY2tNYW5hZ2VyLmN1c3RvbUljb25zRGlyLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICk7XG4gICAgdGhpcy5jb250YWluZXJFbC5hcHBlbmRDaGlsZChtYW5hZ2VyQ29udGFpbmVyKTtcbiAgICB0aGlzLm1hbmFnZUN1c3RvbUljb25zKG1hbmFnZXJDb250YWluZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0RGlzYWJsZWRQYWNrKHRhcmdldDogc3RyaW5nLCBzZXR0aW5nOiBTZXR0aW5nKSB7XG4gICAgcmV0dXJuIHNldHRpbmcuYWRkVG9nZ2xlKChjYikgPT4ge1xuICAgICAgY2Iuc2V0VmFsdWUoIXRoaXMucGx1Z2luLnNldHRpbmdzLmRpc2FibGVkUGFja3MuaGFzKHRhcmdldCkpLm9uQ2hhbmdlKFxuICAgICAgICBhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmRpc2FibGVkUGFja3MuZGVsZXRlKHRhcmdldCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmRpc2FibGVkUGFja3MuYWRkKHRhcmdldCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuICAgICAgICB9LFxuICAgICAgKTtcbiAgICAgIGNiLnRvZ2dsZUVsLnNldEF0dHIoXCJhcmlhLWxhYmVsXCIsIGBFbmFibGUvRGlzYWJsZSAke3RhcmdldH0gSWNvbiBQYWNrYCk7XG4gICAgfSk7XG4gIH1cbiAgc2tpcEljb25QYWNrKCk6IHZvaWQge1xuICAgIGNvbnN0IHsgY29udGFpbmVyRWwgfSA9IHRoaXM7XG5cbiAgICBjb25zdCBnZXRTZXR0aW5nID0gKFxuICAgICAgcGFjazogU1ZHUGFja25hbWVzLFxuICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgZ2V0RGVzYz86IChlbDogRG9jdW1lbnRGcmFnbWVudCkgPT4gdm9pZCxcbiAgICApID0+XG4gICAgICB0aGlzLl9zZXREaXNhYmxlZFBhY2soXG4gICAgICAgIHBhY2ssXG4gICAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKS5zZXROYW1lKG5hbWUpLnNldERlc2MoY3JlYXRlRnJhZ21lbnQoZ2V0RGVzYykpLFxuICAgICAgKTtcblxuICAgIG5ldyBTZXR0aW5nKHRoaXMuY29udGFpbmVyRWwpLnNldEhlYWRpbmcoKS5zZXROYW1lKFwiSWNvbiBQYWNrc1wiKTtcblxuICAgIGdldFNldHRpbmcoXCJsdWNcIiwgXCJMdWNpZGVcIiwgKGVsKSA9PlxuICAgICAgZWwuY3JlYXRlRWwoXCJhXCIsIHtcbiAgICAgICAgaHJlZjogXCJodHRwczovL2x1Y2lkZS5kZXZcIixcbiAgICAgICAgdGV4dDogXCJvZmZpY2lhbCB3ZWJzaXRlXCIsXG4gICAgICB9KSxcbiAgICApO1xuICAgIGdldFNldHRpbmcoXCJvYnNcIiwgXCJPYnNpZGlhbidzIGJ1aWx0LWluIGljb25zXCIsIChlbCkgPT5cbiAgICAgIGVsLmFwcGVuZFRleHQoXG4gICAgICAgIFwiT2JzaWRpYW4ncyBidWlsdC1pbiBpY29ucyBhcmUgbW9zdGx5IHVzZWQgZm9yIFVJIGNvbXBvbmVudHMuIFwiLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgbWFuYWdlQ3VzdG9tSWNvbnMoY29udGFpbmVyRWw6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgaWYgKGNvbnRhaW5lckVsLmhhc0NoaWxkTm9kZXMoKSkgY29udGFpbmVyRWwuZW1wdHkoKTtcblxuICAgIGNvbnN0IGlzUGFja25hbWVJbnZhbGlkID0gKG5hbWU6IHN0cmluZykgPT5cbiAgICAgICEvXltBLVphLXowLTldKyQvLnRlc3QobmFtZSkgfHxcbiAgICAgIHRoaXMucGx1Z2luLnBhY2tNYW5hZ2VyLmlzUGFja25hbWVFeGlzdHMobmFtZSk7XG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIkFkZCBuZXcgaWNvbiBwYWNrXCIpXG4gICAgICAuc2V0RGVzYyhcIlJlc2VydmVkIG5hbWVzOiBcIiArIEJ1aWx0SW5JY29uUGFja25hbWVzLmpvaW4oXCIsIFwiKSlcbiAgICAgIC50aGVuKChzKSA9PiB7XG4gICAgICAgIGxldCBidXR0b246IEJ1dHRvbkNvbXBvbmVudCB8IG51bGwgPSBudWxsLFxuICAgICAgICAgIGlucHV0OiBUZXh0Q29tcG9uZW50IHwgbnVsbCA9IG51bGw7XG4gICAgICAgIHMuYWRkVGV4dCgodHh0KSA9PiB7XG4gICAgICAgICAgdHh0XG4gICAgICAgICAgICAuc2V0UGxhY2Vob2xkZXIoXCJFbnRlciBuYW1lXCIpXG4gICAgICAgICAgICAub25DaGFuZ2UoKG5hbWUpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgaXNJbnZhbGlkID0gaXNQYWNrbmFtZUludmFsaWQobmFtZSk7XG4gICAgICAgICAgICAgIHR4dC5pbnB1dEVsLnRvZ2dsZUNsYXNzKFwiaW52YWxpZFwiLCAhIW5hbWUgJiYgaXNJbnZhbGlkKTtcbiAgICAgICAgICAgICAgYnV0dG9uPy5zZXREaXNhYmxlZChpc0ludmFsaWQpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKCh0eHQpID0+IHR4dC5pbnB1dEVsLmFkZENsYXNzKFwiaXNjLWFkZC1wYWNrLWlucHV0XCIpKSxcbiAgICAgICAgICAgIChpbnB1dCA9IHR4dCk7XG4gICAgICAgIH0pLmFkZEJ1dHRvbihcbiAgICAgICAgICAoYnRuKSA9PiAoXG4gICAgICAgICAgICBidG5cbiAgICAgICAgICAgICAgLnNldEN0YSgpXG4gICAgICAgICAgICAgIC5zZXRJY29uKFwicGx1cy13aXRoLWNpcmNsZVwiKVxuICAgICAgICAgICAgICAub25DbGljaygoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFja05hbWUgPSBpbnB1dD8uZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgICAgICBpZiAoIXBhY2tOYW1lKSByZXR1cm47XG4gICAgICAgICAgICAgICAgaWYgKGlzUGFja25hbWVJbnZhbGlkKHBhY2tOYW1lKSkge1xuICAgICAgICAgICAgICAgICAgbmV3IE5vdGljZShcIlRoaXMgbmFtZSBpcyBpbnZhbGlkLlwiKTtcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5hZGROZXdDdXN0b21JY29uRW50cnkoXG4gICAgICAgICAgICAgICAgICBwYWNrTmFtZSxcbiAgICAgICAgICAgICAgICAgIGNvbnRhaW5lckVsLFxuICAgICAgICAgICAgICAgICkuc2V0dGluZ0VsLnNjcm9sbEludG9WaWV3KCk7XG4gICAgICAgICAgICAgICAgaW5wdXQ/LnNldFZhbHVlKFwiXCIpO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIChidXR0b24gPSBidG4pXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5wbHVnaW4ucGFja01hbmFnZXIuY3VzdG9tUGFja25hbWVzLmZvckVhY2goKHBhY2spID0+XG4gICAgICB0aGlzLmFkZE5ld0N1c3RvbUljb25FbnRyeShwYWNrLCBjb250YWluZXJFbCksXG4gICAgKTtcbiAgfVxuICBhZGROZXdDdXN0b21JY29uRW50cnkocGFjazogc3RyaW5nLCBjb250YWluZXJFbDogSFRNTEVsZW1lbnQpIHtcbiAgICBjb25zdCBzZXR0aW5nID0gbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShwYWNrKVxuICAgICAgLnNldERlc2MoXG4gICAgICAgIGNyZWF0ZUZyYWdtZW50KChlbCkgPT4ge1xuICAgICAgICAgIGVsLmFwcGVuZFRleHQoXCJEcmFnIGZpbGVzIGluIHRvIGltcG9ydCBjdXN0b20gaWNvbnNcIik7XG4gICAgICAgICAgZWwuY3JlYXRlRWwoXCJiclwiKTtcbiAgICAgICAgICBlbC5hcHBlbmRUZXh0KFwiU3VwcG9ydGVkIGZvcm1hdDogXCIpO1xuICAgICAgICAgIFN1cHBvcnRlZEljb25FeHQuZm9yRWFjaCgoZXh0LCBpbmRleCwgYXJyKSA9PiB7XG4gICAgICAgICAgICBlbC5jcmVhdGVFbChcImNvZGVcIiwgeyB0ZXh0OiBleHQgfSk7XG4gICAgICAgICAgICBpZiAoYXJyLmxlbmd0aCAtIDEgIT09IGluZGV4KSBlbC5hcHBlbmRUZXh0KFwiLCBcIik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLmFkZEJ1dHRvbigoYnRuKSA9PlxuICAgICAgICBidG5cbiAgICAgICAgICAuc2V0SWNvbihcInNoZWV0cy1pbi1ib3hcIilcbiAgICAgICAgICAuc2V0VG9vbHRpcChcIkJhY2t1cCBpY29uc1wiKVxuICAgICAgICAgIC5vbkNsaWNrKCgpID0+IHRoaXMucGx1Z2luLnBhY2tNYW5hZ2VyLmJhY2t1cEljb25zKHBhY2spKSxcbiAgICAgIClcbiAgICAgIC5hZGRCdXR0b24oKGJ0bikgPT5cbiAgICAgICAgYnRuXG4gICAgICAgICAgLnNldEljb24oXCJnby10by1maWxlXCIpXG4gICAgICAgICAgLnNldFRvb2x0aXAoXCJzZWxlY3QgZmlsZXMgdG8gaW1wb3J0XCIpXG4gICAgICAgICAgLm9uQ2xpY2soYXN5bmMgKCkgPT5cbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnBhY2tNYW5hZ2VyLmFkZEZyb21GaWxlcyhcbiAgICAgICAgICAgICAgcGFjayxcbiAgICAgICAgICAgICAgYXdhaXQgZmlsZURpYWxvZyh7XG4gICAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICAgICAgICAgICAgYWNjZXB0OiBTdXBwb3J0ZWRJY29uRXh0IGFzIGFueSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICksXG4gICAgICApXG4gICAgICAuYWRkQnV0dG9uKChidG4pID0+XG4gICAgICAgIGJ0blxuICAgICAgICAgIC5zZXRJY29uKFwidHJhc2hcIilcbiAgICAgICAgICAuc2V0VG9vbHRpcChcImRlbGV0ZVwiKVxuICAgICAgICAgIC5zZXRXYXJuaW5nKClcbiAgICAgICAgICAub25DbGljaygoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5wYWNrTWFuYWdlci5maWx0ZXIoKGssIHYpID0+IHYucGFjayAhPT0gcGFjayk7XG4gICAgICAgICAgICBjb250YWluZXJFbC5yZW1vdmVDaGlsZChzZXR0aW5nLnNldHRpbmdFbCk7XG4gICAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuYWRkQnV0dG9uKChidG4pID0+XG4gICAgICAgIGJ0blxuICAgICAgICAgIC5zZXRJY29uKFwicG9wdXAtb3BlblwiKVxuICAgICAgICAgIC5zZXRUb29sdGlwKFwibWFuYWdlIGljb25zXCIpXG4gICAgICAgICAgLnNldEN0YSgpXG4gICAgICAgICAgLm9uQ2xpY2soKCkgPT4gbmV3IEljb25NYW5hZ2VyKHRoaXMucGx1Z2luLCBwYWNrKS5vcGVuKCkpLFxuICAgICAgKVxuICAgICAgLnRoZW4oKHMpID0+XG4gICAgICAgIHNldHVwRG5kKHMuc2V0dGluZ0VsLCBhc3luYyAoZXZ0KSA9PiB7XG4gICAgICAgICAgaWYgKCFldnQuZGF0YVRyYW5zZmVyKSB7XG4gICAgICAgICAgICBuZXcgTm90aWNlKFwiRmFpbGVkIHRvIGdldCBkcm9wcGVkIGl0ZW1zXCIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnBsdWdpbi5wYWNrTWFuYWdlci5hZGRGcm9tRmlsZXMocGFjaywgZXZ0LmRhdGFUcmFuc2Zlci5maWxlcyk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB0aGlzLl9zZXREaXNhYmxlZFBhY2socGFjaywgc2V0dGluZyk7XG4gICAgcmV0dXJuIHNldHRpbmc7XG4gIH1cbn1cblxuY29uc3Qgc2V0dXBEbmQgPSAoZWw6IEhUTUxFbGVtZW50LCBkcm9wcGVkSGFuZGxlcjogKGV2dDogRHJhZ0V2ZW50KSA9PiBhbnkpID0+IHtcbiAgY29uc3QgZHJhZ292ZXJDbGFzcyA9IFwiZHJhZ292ZXJcIjtcbiAgZWwuYWRkRXZlbnRMaXN0ZW5lcihcImRyYWdvdmVyXCIsIChldnQpID0+IHtcbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAoZXZ0LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQpLmFkZENsYXNzKGRyYWdvdmVyQ2xhc3MpO1xuICB9KTtcbiAgZWwuYWRkRXZlbnRMaXN0ZW5lcihcImRyb3BcIiwgKGV2dCkgPT4ge1xuICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIChldnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudCkucmVtb3ZlQ2xhc3MoZHJhZ292ZXJDbGFzcyk7XG4gICAgZHJvcHBlZEhhbmRsZXIoZXZ0KTtcbiAgfSk7XG4gIGVsLmFkZEV2ZW50TGlzdGVuZXIoXCJkcmFnbGVhdmVcIiwgKGV2dCkgPT4ge1xuICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIChldnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudCkucmVtb3ZlQ2xhc3MoZHJhZ292ZXJDbGFzcyk7XG4gIH0pO1xufTtcbiIsICJpbXBvcnQgXCIuL2Jyb3dzZXItcGFja3MubGVzc1wiO1xuXG5pbXBvcnQgYXNzZXJ0TmV2ZXIgZnJvbSBcImFzc2VydC1uZXZlclwiO1xuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xuaW1wb3J0IHsgTW9kYWwsIHJlcXVlc3RVcmwgfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gXCJyZWFjdC1kb21cIjtcbmltcG9ydCB7XG4gIEZpQXdhcmQsXG4gIEZpRG93bmxvYWQsXG4gIEZpRXh0ZXJuYWxMaW5rLFxuICBGaUhvbWUsXG4gIEZpSW1hZ2UsXG59IGZyb20gXCJyZWFjdC1pY29ucy9maVwiO1xuXG5pbXBvcnQgSWNvblNDIGZyb20gXCIuLi9pc2MtbWFpblwiO1xuaW1wb3J0IHtcbiAgZ2V0SWNvblBhY2tCdW5kbGVVcmwsXG4gIGdldE1hbmlmZXN0VmlhQVBJLFxuICBJY29uUGFja01hbmlmZXN0UmF3LFxufSBmcm9tIFwiLi4vbW9kdWxlcy9pY29uLXBhY2tzXCI7XG5pbXBvcnQgTG9hZGluZyBmcm9tIFwiLi9sb2FkaW5nXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJyb3dzZXJQYWNrcyBleHRlbmRzIE1vZGFsIHtcbiAgY29uc3RydWN0b3IocHVibGljIHBsdWdpbjogSWNvblNDKSB7XG4gICAgc3VwZXIocGx1Z2luLmFwcCk7XG4gICAgdGhpcy5tb2RhbEVsLmFkZENsYXNzKFwibW9kLWJyb3dzZXItcGFja3NcIik7XG4gIH1cbiAgb25PcGVuKCk6IHZvaWQge1xuICAgIFJlYWN0RE9NLnJlbmRlcihcbiAgICAgIDxCcm93c2VyUGFja1ZpZXcgZ2V0SWNvblBhY2s9e3RoaXMuZ2V0SWNvblBhY2suYmluZCh0aGlzKX0gLz4sXG4gICAgICB0aGlzLmNvbnRlbnRFbCxcbiAgICApO1xuICB9XG4gIG9uQ2xvc2UoKTogdm9pZCB7XG4gICAgUmVhY3RET00udW5tb3VudENvbXBvbmVudEF0Tm9kZSh0aGlzLmNvbnRlbnRFbCk7XG4gIH1cblxuICBhc3luYyBnZXRJY29uUGFjayhwYXRoOiBzdHJpbmcsIGJyYW5jaD86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGRvd25sb2FkID0gYXN5bmMgKGFsdCA9IGZhbHNlKSA9PiB7XG4gICAgICBjb25zdCB1cmwgPSBnZXRJY29uUGFja0J1bmRsZVVybChwYXRoLCBicmFuY2gsIGFsdCksXG4gICAgICAgIHppcCA9IChhd2FpdCByZXF1ZXN0VXJsKHsgdXJsIH0pKS5hcnJheUJ1ZmZlcjtcbiAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnBhY2tNYW5hZ2VyLmltcG9ydEljb25zKFxuICAgICAgICB7IG5hbWU6IHVybC5zcGxpdChcIi9cIikucG9wKCkhLCBkYXRhOiB6aXAgfSxcbiAgICAgICAgZmFsc2UsXG4gICAgICApO1xuICAgIH07XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGRvd25sb2FkKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJzd2l0Y2ggdG8gYWx0ZXJuYXRpdmUgbGlua1wiLCBlcnJvcik7XG4gICAgICBhd2FpdCBkb3dubG9hZCh0cnVlKTtcbiAgICB9XG4gIH1cbn1cblxudHlwZSBjb21tb25LZXlzID0gXCJzZXJpZXNcIiB8IFwiZGVzY3JpcHRpb25cIiB8IFwiaG9tZXBhZ2VcIiB8IFwibGljZW5zZVwiO1xudHlwZSBTdHlsZUluZm8gPSBPbWl0PEljb25QYWNrTWFuaWZlc3RSYXcsIGNvbW1vbktleXM+O1xudHlwZSBJY29uUGFja01hbmlmZXN0ID0gUGljazxJY29uUGFja01hbmlmZXN0UmF3LCBjb21tb25LZXlzPiAmXG4gIFJlY29yZDxcInN0eWxlc1wiLCBTdHlsZUluZm9bXT4gJlxuICBSZWNvcmQ8XCJjb3VudFwiLCBudW1iZXI+O1xuXG5jb25zdCBnZXRNYW5pZmVzdExpc3QgPSBhc3luYyAoXG4gIGJyYW5jaCA9IFwibWFzdGVyXCIsXG4pOiBQcm9taXNlPEljb25QYWNrTWFuaWZlc3RbXT4gPT4ge1xuICBjb25zdCByYXdMaXN0ID0gKGF3YWl0IGdldE1hbmlmZXN0VmlhQVBJKGJyYW5jaCkpIGFzIEljb25QYWNrTWFuaWZlc3RSYXdbXTtcbiAgbGV0IGxpc3Q6IEljb25QYWNrTWFuaWZlc3RbXSA9IFtdO1xuICBmb3IgKGNvbnN0IG1hbmlmZXN0IG9mIHJhd0xpc3QpIHtcbiAgICBsZXQgbGFzdCA9IGxpc3QubGFzdCgpO1xuICAgIGlmIChsYXN0Py5zZXJpZXMgPT09IG1hbmlmZXN0LnNlcmllcykge1xuICAgICAgbGFzdC5zdHlsZXMucHVzaChtYW5pZmVzdCk7XG4gICAgICBsYXN0LmNvdW50ICs9IG1hbmlmZXN0LmNvdW50O1xuICAgIH0gZWxzZSB7XG4gICAgICBsaXN0LnB1c2goe1xuICAgICAgICBob21lcGFnZTogbWFuaWZlc3QuaG9tZXBhZ2UsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBtYW5pZmVzdC5kZXNjcmlwdGlvbixcbiAgICAgICAgc2VyaWVzOiBtYW5pZmVzdC5zZXJpZXMsXG4gICAgICAgIGxpY2Vuc2U6IG1hbmlmZXN0LmxpY2Vuc2UsXG4gICAgICAgIHN0eWxlczogW21hbmlmZXN0XSxcbiAgICAgICAgY291bnQ6IG1hbmlmZXN0LmNvdW50LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBsaXN0O1xufTtcblxuY29uc3QgQnJvd3NlclBhY2tWaWV3ID0gKHtcbiAgZ2V0SWNvblBhY2ssXG59OiB7XG4gIGdldEljb25QYWNrOiAocGF0aDogc3RyaW5nLCBicmFuY2g/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG59KSA9PiB7XG4gIGNvbnN0IFttYW5pZmVzdExpc3QsIHNldE1hbmlmZXN0TGlzdF0gPSB1c2VTdGF0ZTxcbiAgICBJY29uUGFja01hbmlmZXN0W10gfCBudWxsIHwgRXJyb3JcbiAgPihudWxsKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBnZXRNYW5pZmVzdExpc3QoKS50aGVuKHNldE1hbmlmZXN0TGlzdCkuY2F0Y2goc2V0TWFuaWZlc3RMaXN0KTtcbiAgfSwgW10pO1xuICBpZiAobWFuaWZlc3RMaXN0ID09PSBudWxsKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibG9hZGluZ1wiPlxuICAgICAgICA8TG9hZGluZyB0eXBlPVwic3BpblwiIGNsYXNzTmFtZT1cImxvYWRpbmctaW5kaWNhdG9yXCIgLz5cbiAgICAgICAgPGRpdj5Mb2FkaW5nIEljb24gUGFjayBMaXN0Li4uPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkobWFuaWZlc3RMaXN0KSkge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImljb24tcGFjay1saXN0XCI+XG4gICAgICAgIHttYW5pZmVzdExpc3QubWFwKChtYW5pZmVzdCkgPT4gKFxuICAgICAgICAgIDxJY29uUGFja01hbmlmZXN0XG4gICAgICAgICAgICBrZXk9e21hbmlmZXN0LmhvbWVwYWdlfVxuICAgICAgICAgICAgbWFuaWZlc3Q9e21hbmlmZXN0fVxuICAgICAgICAgICAgb25Eb3dubG9hZD17KHBhdGgpID0+IGdldEljb25QYWNrKHBhdGgpfVxuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmVycm9yKG1hbmlmZXN0TGlzdCk7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZXJyb3JcIj5cbiAgICAgICAgRmFpbGVkIHRvIExvYWQgSWNvbiBQYWNrIExpc3Q6XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibW9kLXdhcm5pbmdcIj5cbiAgICAgICAgICB7bWFuaWZlc3RMaXN0Lm1lc3NhZ2UgPz8gbWFuaWZlc3RMaXN0LnRvU3RyaW5nKCl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxufTtcblxuaW50ZXJmYWNlIE1hbmlmZXN0RXJyb3JTdGF0ZSB7XG4gIHN0YXRlOiBcImVycm9yXCI7XG4gIGVycm9yOiB1bmtub3duO1xufVxudHlwZSBNYW5pZmVzdFN0YXRlID1cbiAgfCBNYW5pZmVzdEVycm9yU3RhdGVcbiAgfCBSZWNvcmQ8XCJzdGF0ZVwiLCBcImRpc3BsYXlcIiB8IFwiZG93bmxvYWRpbmdcIiB8IFwiZG9uZVwiPjtcblxuY29uc3QgUGFja01hbmlmZXN0Q2xhc3MgPSBcInBhY2stbWFuaWZlc3RcIjtcbmNvbnN0IEljb25QYWNrTWFuaWZlc3QgPSAoe1xuICBtYW5pZmVzdDogeyBzZXJpZXMsIHN0eWxlcywgZGVzY3JpcHRpb24sIGNvdW50LCBob21lcGFnZSwgbGljZW5zZSB9LFxuICBvbkRvd25sb2FkLFxufToge1xuICBtYW5pZmVzdDogSWNvblBhY2tNYW5pZmVzdDtcbiAgb25Eb3dubG9hZDogKHBhdGg6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbn0pID0+IHtcbiAgY29uc3QgZ2V0U3ViQ2xhc3MgPSB1c2VDYWxsYmFjayhcbiAgICAoY2xhc3NOYW1lOiBzdHJpbmcpID0+IGAke1BhY2tNYW5pZmVzdENsYXNzfS0ke2NsYXNzTmFtZX1gLFxuICAgIFtdLFxuICApO1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtQYWNrTWFuaWZlc3RDbGFzc30+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0U3ViQ2xhc3MoXCJ0aXRsZVwiKX0+e3Nlcmllc308L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRTdWJDbGFzcyhcImRldGFpbHNcIil9PlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzTmFtZT17Z2V0U3ViQ2xhc3MoXCJsaWNlbnNlXCIpfVxuICAgICAgICAgIGFyaWEtbGFiZWw9e1wiTGljZW5zZTogXCIgKyBsaWNlbnNlfVxuICAgICAgICA+XG4gICAgICAgICAgPEZpQXdhcmQgc2l6ZT1cIjAuOWVtXCIgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzTmFtZT17Z2V0U3ViQ2xhc3MoXCJjb3VudFwiKX1cbiAgICAgICAgICBhcmlhLWxhYmVsPXtgJHtjb3VudH0gaWNvbnMgaW4gdG90YWxgfVxuICAgICAgICA+XG4gICAgICAgICAgPEZpSW1hZ2Ugc2l6ZT1cIjAuOWVtXCIgLz5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e1wiaWNvbi10ZXh0XCJ9Pntjb3VudH08L3NwYW4+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e2dldFN1YkNsYXNzKFwiZGVzY1wiKX0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e2dldFN1YkNsYXNzKFwiaG9tZXBhZ2VcIil9XG4gICAgICAgICAgYXJpYS1sYWJlbD17aG9tZXBhZ2V9XG4gICAgICAgICAgb25DbGljaz17KCkgPT4gd2luZG93Lm9wZW4oaG9tZXBhZ2UpfVxuICAgICAgICA+XG4gICAgICAgICAgPEZpSG9tZSAvPlxuICAgICAgICAgIDxhIGNsYXNzTmFtZT17XCJpY29uLXRleHRcIn0+SG9tZSBQYWdlPC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAge2Rlc2NyaXB0aW9ufVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInN0eWxlcy1saXN0XCI+XG4gICAgICAgIHtzdHlsZXMubWFwKChzdHlsZSkgPT4gKFxuICAgICAgICAgIDxJY29uUGFja1N0eWxlXG4gICAgICAgICAgICBrZXk9e3N0eWxlLmJ1bmRsZU5hbWV9XG4gICAgICAgICAgICBzdHlsZUluZm89e3N0eWxlfVxuICAgICAgICAgICAgb25Eb3dubG9hZD17b25Eb3dubG9hZH1cbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuY29uc3QgU3R5bGVJbmZvQ2xhc3MgPSBcInN0eWxlLWluZm9cIixcbiAgZ2V0U3R5bGVJbmZvQ2xhc3MgPSAoLi4uY2xhc3Nlczogc3RyaW5nW10pID0+IGNscyhTdHlsZUluZm9DbGFzcywgLi4uY2xhc3Nlcyk7XG5jb25zdCBJY29uUGFja1N0eWxlID0gKHtcbiAgc3R5bGVJbmZvOiB7IGNvdW50LCBwYWNrSWQsIHBhdGgsIHN0eWxlIH0sXG4gIG9uRG93bmxvYWQsXG59OiB7XG4gIHN0eWxlSW5mbzogU3R5bGVJbmZvO1xuICBvbkRvd25sb2FkOiAocGF0aDogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xufSkgPT4ge1xuICBjb25zdCBnZXRTdWJDbGFzcyA9IHVzZUNhbGxiYWNrKFxuICAgIChjbGFzc05hbWU6IHN0cmluZykgPT4gYCR7U3R5bGVJbmZvQ2xhc3N9LSR7Y2xhc3NOYW1lfWAsXG4gICAgW10sXG4gICk7XG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVdID0gdXNlU3RhdGU8TWFuaWZlc3RTdGF0ZT4oeyBzdGF0ZTogXCJkaXNwbGF5XCIgfSk7XG4gIHN3aXRjaCAoc3RhdGUuc3RhdGUpIHtcbiAgICBjYXNlIFwiZGlzcGxheVwiOlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldFN0eWxlSW5mb0NsYXNzKCl9PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRTdWJDbGFzcyhcInRpdGxlXCIpfT5cbiAgICAgICAgICAgIHtzdHlsZSA/IHN0eWxlIDogXCJyZWd1bGFyXCJ9XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldFN1YkNsYXNzKFwicGFjay1pZFwiKX1cbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlBhY2sgaWQgdXNlZCBhcyBzaG9ydGNvZGUgcHJlZml4XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3BhY2tJZH1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRTdWJDbGFzcyhcImRldGFpbHNcIil9PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldFN1YkNsYXNzKFwiY291bnRcIil9XG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2Ake2NvdW50fSBpY29ucyBpbiB0b3RhbGB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxGaUltYWdlIHNpemU9XCIwLjllbVwiIC8+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17XCJpY29uLXRleHRcIn0+e2NvdW50fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRTdWJDbGFzcyhcImJ1dHRvbi1jb250YWluZXJcIil9PlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldFN1YkNsYXNzKFwiZG93bmxvYWRcIil9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9e2FzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICBzZXRTdGF0ZSh7IHN0YXRlOiBcImRvd25sb2FkaW5nXCIgfSk7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgIGF3YWl0IG9uRG93bmxvYWQocGF0aCk7XG4gICAgICAgICAgICAgICAgICBzZXRTdGF0ZSh7IHN0YXRlOiBcImRvbmVcIiB9KTtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZG9uZVwiKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICBzZXRTdGF0ZSh7IHN0YXRlOiBcImVycm9yXCIsIGVycm9yIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkRvd25sb2FkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEZpRG93bmxvYWQgLz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiRG93bmxvYWQgdmlhIEJyb3dzZXJcIlxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB3aW5kb3cub3BlbihnZXRJY29uUGFja0J1bmRsZVVybChwYXRoKSl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxGaUV4dGVybmFsTGluayAvPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKTtcbiAgICBjYXNlIFwiZG93bmxvYWRpbmdcIjpcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRTdHlsZUluZm9DbGFzcyhcImRvd25sb2FkaW5nXCIpfT5cbiAgICAgICAgICA8TG9hZGluZyB0eXBlPVwiYnViYmxlc1wiIGNsYXNzTmFtZT1cImxvYWRpbmctaW5kaWNhdG9yXCIgLz5cbiAgICAgICAgICA8ZGl2PkRvd25sb2FkaW5nLi4uPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKTtcbiAgICBjYXNlIFwiZG9uZVwiOlxuICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXtnZXRTdHlsZUluZm9DbGFzcyhcImRvbmVcIil9PkRvd25sb2FkZWQ8L2Rpdj47XG4gICAgY2FzZSBcImVycm9yXCI6XG4gICAgICBjb25zb2xlLmVycm9yKHN0YXRlLmVycm9yKTtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRTdHlsZUluZm9DbGFzcyhcImVycm9yXCIpfT5cbiAgICAgICAgICBGYWlsZWQgdG8gRG93bmxvYWQ6XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtb2Qtd2FybmluZ1wiPlxuICAgICAgICAgICAge3N0YXRlLmVycm9yIGluc3RhbmNlb2YgRXJyb3JcbiAgICAgICAgICAgICAgPyBzdGF0ZS5lcnJvci5tZXNzYWdlXG4gICAgICAgICAgICAgIDogKHN0YXRlLmVycm9yIGFzIGFueSk/LnRvU3RyaW5nKCl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKTtcbiAgICBkZWZhdWx0OlxuICAgICAgYXNzZXJ0TmV2ZXIoc3RhdGUpO1xuICB9XG59O1xuIiwgImV4cG9ydCBjb25zdCBFTVBUWV9PQkogPSB7fTtcbmV4cG9ydCBjb25zdCBFTVBUWV9BUlIgPSBbXTtcbmV4cG9ydCBjb25zdCBJU19OT05fRElNRU5TSU9OQUwgPSAvYWNpdHxleCg/OnN8Z3xufHB8JCl8cnBofGdyaWR8b3dzfG1uY3xudHd8aW5lW2NoXXx6b298Xm9yZHxpdGVyYS9pO1xuIiwgImltcG9ydCB7IEVNUFRZX0FSUiB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG4vKipcbiAqIEFzc2lnbiBwcm9wZXJ0aWVzIGZyb20gYHByb3BzYCB0byBgb2JqYFxuICogQHRlbXBsYXRlIE8sIFAgVGhlIG9iaiBhbmQgcHJvcHMgdHlwZXNcbiAqIEBwYXJhbSB7T30gb2JqIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIHRvXG4gKiBAcGFyYW0ge1B9IHByb3BzIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIGZyb21cbiAqIEByZXR1cm5zIHtPICYgUH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbihvYmosIHByb3BzKSB7XG5cdC8vIEB0cy1pZ25vcmUgV2UgY2hhbmdlIHRoZSB0eXBlIG9mIGBvYmpgIHRvIGJlIGBPICYgUGBcblx0Zm9yIChsZXQgaSBpbiBwcm9wcykgb2JqW2ldID0gcHJvcHNbaV07XG5cdHJldHVybiAvKiogQHR5cGUge08gJiBQfSAqLyAob2JqKTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgYSBjaGlsZCBub2RlIGZyb20gaXRzIHBhcmVudCBpZiBhdHRhY2hlZC4gVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yXG4gKiBJRTExIHdoaWNoIGRvZXNuJ3Qgc3VwcG9ydCBgRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlKClgLiBVc2luZyB0aGlzIGZ1bmN0aW9uXG4gKiBpcyBzbWFsbGVyIHRoYW4gaW5jbHVkaW5nIGEgZGVkaWNhdGVkIHBvbHlmaWxsLlxuICogQHBhcmFtIHtOb2RlfSBub2RlIFRoZSBub2RlIHRvIHJlbW92ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlTm9kZShub2RlKSB7XG5cdGxldCBwYXJlbnROb2RlID0gbm9kZS5wYXJlbnROb2RlO1xuXHRpZiAocGFyZW50Tm9kZSkgcGFyZW50Tm9kZS5yZW1vdmVDaGlsZChub2RlKTtcbn1cblxuZXhwb3J0IGNvbnN0IHNsaWNlID0gRU1QVFlfQVJSLnNsaWNlO1xuIiwgImltcG9ydCB7IF9jYXRjaEVycm9yIH0gZnJvbSAnLi9kaWZmL2NhdGNoLWVycm9yJztcblxuLyoqXG4gKiBUaGUgYG9wdGlvbmAgb2JqZWN0IGNhbiBwb3RlbnRpYWxseSBjb250YWluIGNhbGxiYWNrIGZ1bmN0aW9uc1xuICogdGhhdCBhcmUgY2FsbGVkIGR1cmluZyB2YXJpb3VzIHN0YWdlcyBvZiBvdXIgcmVuZGVyZXIuIFRoaXMgaXMgdGhlXG4gKiBmb3VuZGF0aW9uIG9uIHdoaWNoIGFsbCBvdXIgYWRkb25zIGxpa2UgYHByZWFjdC9kZWJ1Z2AsIGBwcmVhY3QvY29tcGF0YCxcbiAqIGFuZCBgcHJlYWN0L2hvb2tzYCBhcmUgYmFzZWQgb24uIFNlZSB0aGUgYE9wdGlvbnNgIHR5cGUgaW4gYGludGVybmFsLmQudHNgXG4gKiBmb3IgYSBmdWxsIGxpc3Qgb2YgYXZhaWxhYmxlIG9wdGlvbiBob29rcyAobW9zdCBlZGl0b3JzL0lERXMgYWxsb3cgeW91IHRvXG4gKiBjdHJsK2NsaWNrIG9yIGNtZCtjbGljayBvbiBtYWMgdGhlIHR5cGUgZGVmaW5pdGlvbiBiZWxvdykuXG4gKiBAdHlwZSB7aW1wb3J0KCcuL2ludGVybmFsJykuT3B0aW9uc31cbiAqL1xuY29uc3Qgb3B0aW9ucyA9IHtcblx0X2NhdGNoRXJyb3Jcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG9wdGlvbnM7XG4iLCAiaW1wb3J0IHsgc2xpY2UgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IG9wdGlvbnMgZnJvbSAnLi9vcHRpb25zJztcblxubGV0IHZub2RlSWQgPSAwO1xuXG4vKipcbiAqIENyZWF0ZSBhbiB2aXJ0dWFsIG5vZGUgKHVzZWQgZm9yIEpTWClcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL2ludGVybmFsJykuVk5vZGVbXCJ0eXBlXCJdfSB0eXBlIFRoZSBub2RlIG5hbWUgb3IgQ29tcG9uZW50XG4gKiBjb25zdHJ1Y3RvciBmb3IgdGhpcyB2aXJ0dWFsIG5vZGVcbiAqIEBwYXJhbSB7b2JqZWN0IHwgbnVsbCB8IHVuZGVmaW5lZH0gW3Byb3BzXSBUaGUgcHJvcGVydGllcyBvZiB0aGUgdmlydHVhbCBub2RlXG4gKiBAcGFyYW0ge0FycmF5PGltcG9ydCgnLicpLkNvbXBvbmVudENoaWxkcmVuPn0gW2NoaWxkcmVuXSBUaGUgY2hpbGRyZW4gb2YgdGhlIHZpcnR1YWwgbm9kZVxuICogQHJldHVybnMge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlZOb2RlfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRWxlbWVudCh0eXBlLCBwcm9wcywgY2hpbGRyZW4pIHtcblx0bGV0IG5vcm1hbGl6ZWRQcm9wcyA9IHt9LFxuXHRcdGtleSxcblx0XHRyZWYsXG5cdFx0aTtcblx0Zm9yIChpIGluIHByb3BzKSB7XG5cdFx0aWYgKGkgPT0gJ2tleScpIGtleSA9IHByb3BzW2ldO1xuXHRcdGVsc2UgaWYgKGkgPT0gJ3JlZicpIHJlZiA9IHByb3BzW2ldO1xuXHRcdGVsc2Ugbm9ybWFsaXplZFByb3BzW2ldID0gcHJvcHNbaV07XG5cdH1cblxuXHRpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDIpIHtcblx0XHRub3JtYWxpemVkUHJvcHMuY2hpbGRyZW4gPVxuXHRcdFx0YXJndW1lbnRzLmxlbmd0aCA+IDMgPyBzbGljZS5jYWxsKGFyZ3VtZW50cywgMikgOiBjaGlsZHJlbjtcblx0fVxuXG5cdC8vIElmIGEgQ29tcG9uZW50IFZOb2RlLCBjaGVjayBmb3IgYW5kIGFwcGx5IGRlZmF1bHRQcm9wc1xuXHQvLyBOb3RlOiB0eXBlIG1heSBiZSB1bmRlZmluZWQgaW4gZGV2ZWxvcG1lbnQsIG11c3QgbmV2ZXIgZXJyb3IgaGVyZS5cblx0aWYgKHR5cGVvZiB0eXBlID09ICdmdW5jdGlvbicgJiYgdHlwZS5kZWZhdWx0UHJvcHMgIT0gbnVsbCkge1xuXHRcdGZvciAoaSBpbiB0eXBlLmRlZmF1bHRQcm9wcykge1xuXHRcdFx0aWYgKG5vcm1hbGl6ZWRQcm9wc1tpXSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdG5vcm1hbGl6ZWRQcm9wc1tpXSA9IHR5cGUuZGVmYXVsdFByb3BzW2ldO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBjcmVhdGVWTm9kZSh0eXBlLCBub3JtYWxpemVkUHJvcHMsIGtleSwgcmVmLCBudWxsKTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBWTm9kZSAodXNlZCBpbnRlcm5hbGx5IGJ5IFByZWFjdClcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL2ludGVybmFsJykuVk5vZGVbXCJ0eXBlXCJdfSB0eXBlIFRoZSBub2RlIG5hbWUgb3IgQ29tcG9uZW50XG4gKiBDb25zdHJ1Y3RvciBmb3IgdGhpcyB2aXJ0dWFsIG5vZGVcbiAqIEBwYXJhbSB7b2JqZWN0IHwgc3RyaW5nIHwgbnVtYmVyIHwgbnVsbH0gcHJvcHMgVGhlIHByb3BlcnRpZXMgb2YgdGhpcyB2aXJ0dWFsIG5vZGUuXG4gKiBJZiB0aGlzIHZpcnR1YWwgbm9kZSByZXByZXNlbnRzIGEgdGV4dCBub2RlLCB0aGlzIGlzIHRoZSB0ZXh0IG9mIHRoZSBub2RlIChzdHJpbmcgb3IgbnVtYmVyKS5cbiAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyIHwgbnVsbH0ga2V5IFRoZSBrZXkgZm9yIHRoaXMgdmlydHVhbCBub2RlLCB1c2VkIHdoZW5cbiAqIGRpZmZpbmcgaXQgYWdhaW5zdCBpdHMgY2hpbGRyZW5cbiAqIEBwYXJhbSB7aW1wb3J0KCcuL2ludGVybmFsJykuVk5vZGVbXCJyZWZcIl19IHJlZiBUaGUgcmVmIHByb3BlcnR5IHRoYXQgd2lsbFxuICogcmVjZWl2ZSBhIHJlZmVyZW5jZSB0byBpdHMgY3JlYXRlZCBjaGlsZFxuICogQHJldHVybnMge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlZOb2RlfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVk5vZGUodHlwZSwgcHJvcHMsIGtleSwgcmVmLCBvcmlnaW5hbCkge1xuXHQvLyBWOCBzZWVtcyB0byBiZSBiZXR0ZXIgYXQgZGV0ZWN0aW5nIHR5cGUgc2hhcGVzIGlmIHRoZSBvYmplY3QgaXMgYWxsb2NhdGVkIGZyb20gdGhlIHNhbWUgY2FsbCBzaXRlXG5cdC8vIERvIG5vdCBpbmxpbmUgaW50byBjcmVhdGVFbGVtZW50IGFuZCBjb2VyY2VUb1ZOb2RlIVxuXHRjb25zdCB2bm9kZSA9IHtcblx0XHR0eXBlLFxuXHRcdHByb3BzLFxuXHRcdGtleSxcblx0XHRyZWYsXG5cdFx0X2NoaWxkcmVuOiBudWxsLFxuXHRcdF9wYXJlbnQ6IG51bGwsXG5cdFx0X2RlcHRoOiAwLFxuXHRcdF9kb206IG51bGwsXG5cdFx0Ly8gX25leHREb20gbXVzdCBiZSBpbml0aWFsaXplZCB0byB1bmRlZmluZWQgYi9jIGl0IHdpbGwgZXZlbnR1YWxseVxuXHRcdC8vIGJlIHNldCB0byBkb20ubmV4dFNpYmxpbmcgd2hpY2ggY2FuIHJldHVybiBgbnVsbGAgYW5kIGl0IGlzIGltcG9ydGFudFxuXHRcdC8vIHRvIGJlIGFibGUgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBhbiB1bmluaXRpYWxpemVkIF9uZXh0RG9tIGFuZFxuXHRcdC8vIGEgX25leHREb20gdGhhdCBoYXMgYmVlbiBzZXQgdG8gYG51bGxgXG5cdFx0X25leHREb206IHVuZGVmaW5lZCxcblx0XHRfY29tcG9uZW50OiBudWxsLFxuXHRcdF9oeWRyYXRpbmc6IG51bGwsXG5cdFx0Y29uc3RydWN0b3I6IHVuZGVmaW5lZCxcblx0XHRfb3JpZ2luYWw6IG9yaWdpbmFsID09IG51bGwgPyArK3Zub2RlSWQgOiBvcmlnaW5hbFxuXHR9O1xuXG5cdC8vIE9ubHkgaW52b2tlIHRoZSB2bm9kZSBob29rIGlmIHRoaXMgd2FzICpub3QqIGEgZGlyZWN0IGNvcHk6XG5cdGlmIChvcmlnaW5hbCA9PSBudWxsICYmIG9wdGlvbnMudm5vZGUgIT0gbnVsbCkgb3B0aW9ucy52bm9kZSh2bm9kZSk7XG5cblx0cmV0dXJuIHZub2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVmKCkge1xuXHRyZXR1cm4geyBjdXJyZW50OiBudWxsIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBGcmFnbWVudChwcm9wcykge1xuXHRyZXR1cm4gcHJvcHMuY2hpbGRyZW47XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSB0aGUgYXJndW1lbnQgaXMgYSB2YWxpZCBQcmVhY3QgVk5vZGUuXG4gKiBAcGFyYW0geyp9IHZub2RlXG4gKiBAcmV0dXJucyB7dm5vZGUgaXMgaW1wb3J0KCcuL2ludGVybmFsJykuVk5vZGV9XG4gKi9cbmV4cG9ydCBjb25zdCBpc1ZhbGlkRWxlbWVudCA9IHZub2RlID0+XG5cdHZub2RlICE9IG51bGwgJiYgdm5vZGUuY29uc3RydWN0b3IgPT09IHVuZGVmaW5lZDtcbiIsICJpbXBvcnQgeyBhc3NpZ24gfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgZGlmZiwgY29tbWl0Um9vdCB9IGZyb20gJy4vZGlmZi9pbmRleCc7XG5pbXBvcnQgb3B0aW9ucyBmcm9tICcuL29wdGlvbnMnO1xuaW1wb3J0IHsgRnJhZ21lbnQgfSBmcm9tICcuL2NyZWF0ZS1lbGVtZW50JztcblxuLyoqXG4gKiBCYXNlIENvbXBvbmVudCBjbGFzcy4gUHJvdmlkZXMgYHNldFN0YXRlKClgIGFuZCBgZm9yY2VVcGRhdGUoKWAsIHdoaWNoXG4gKiB0cmlnZ2VyIHJlbmRlcmluZ1xuICogQHBhcmFtIHtvYmplY3R9IHByb3BzIFRoZSBpbml0aWFsIGNvbXBvbmVudCBwcm9wc1xuICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHQgVGhlIGluaXRpYWwgY29udGV4dCBmcm9tIHBhcmVudCBjb21wb25lbnRzJ1xuICogZ2V0Q2hpbGRDb250ZXh0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBDb21wb25lbnQocHJvcHMsIGNvbnRleHQpIHtcblx0dGhpcy5wcm9wcyA9IHByb3BzO1xuXHR0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xufVxuXG4vKipcbiAqIFVwZGF0ZSBjb21wb25lbnQgc3RhdGUgYW5kIHNjaGVkdWxlIGEgcmUtcmVuZGVyLlxuICogQHRoaXMge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkNvbXBvbmVudH1cbiAqIEBwYXJhbSB7b2JqZWN0IHwgKChzOiBvYmplY3QsIHA6IG9iamVjdCkgPT4gb2JqZWN0KX0gdXBkYXRlIEEgaGFzaCBvZiBzdGF0ZVxuICogcHJvcGVydGllcyB0byB1cGRhdGUgd2l0aCBuZXcgdmFsdWVzIG9yIGEgZnVuY3Rpb24gdGhhdCBnaXZlbiB0aGUgY3VycmVudFxuICogc3RhdGUgYW5kIHByb3BzIHJldHVybnMgYSBuZXcgcGFydGlhbCBzdGF0ZVxuICogQHBhcmFtIHsoKSA9PiB2b2lkfSBbY2FsbGJhY2tdIEEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIG9uY2UgY29tcG9uZW50IHN0YXRlIGlzXG4gKiB1cGRhdGVkXG4gKi9cbkNvbXBvbmVudC5wcm90b3R5cGUuc2V0U3RhdGUgPSBmdW5jdGlvbih1cGRhdGUsIGNhbGxiYWNrKSB7XG5cdC8vIG9ubHkgY2xvbmUgc3RhdGUgd2hlbiBjb3B5aW5nIHRvIG5leHRTdGF0ZSB0aGUgZmlyc3QgdGltZS5cblx0bGV0IHM7XG5cdGlmICh0aGlzLl9uZXh0U3RhdGUgIT0gbnVsbCAmJiB0aGlzLl9uZXh0U3RhdGUgIT09IHRoaXMuc3RhdGUpIHtcblx0XHRzID0gdGhpcy5fbmV4dFN0YXRlO1xuXHR9IGVsc2Uge1xuXHRcdHMgPSB0aGlzLl9uZXh0U3RhdGUgPSBhc3NpZ24oe30sIHRoaXMuc3RhdGUpO1xuXHR9XG5cblx0aWYgKHR5cGVvZiB1cGRhdGUgPT0gJ2Z1bmN0aW9uJykge1xuXHRcdC8vIFNvbWUgbGlicmFyaWVzIGxpa2UgYGltbWVyYCBtYXJrIHRoZSBjdXJyZW50IHN0YXRlIGFzIHJlYWRvbmx5LFxuXHRcdC8vIHByZXZlbnRpbmcgdXMgZnJvbSBtdXRhdGluZyBpdCwgc28gd2UgbmVlZCB0byBjbG9uZSBpdC4gU2VlICMyNzE2XG5cdFx0dXBkYXRlID0gdXBkYXRlKGFzc2lnbih7fSwgcyksIHRoaXMucHJvcHMpO1xuXHR9XG5cblx0aWYgKHVwZGF0ZSkge1xuXHRcdGFzc2lnbihzLCB1cGRhdGUpO1xuXHR9XG5cblx0Ly8gU2tpcCB1cGRhdGUgaWYgdXBkYXRlciBmdW5jdGlvbiByZXR1cm5lZCBudWxsXG5cdGlmICh1cGRhdGUgPT0gbnVsbCkgcmV0dXJuO1xuXG5cdGlmICh0aGlzLl92bm9kZSkge1xuXHRcdGlmIChjYWxsYmFjaykgdGhpcy5fcmVuZGVyQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuXHRcdGVucXVldWVSZW5kZXIodGhpcyk7XG5cdH1cbn07XG5cbi8qKlxuICogSW1tZWRpYXRlbHkgcGVyZm9ybSBhIHN5bmNocm9ub3VzIHJlLXJlbmRlciBvZiB0aGUgY29tcG9uZW50XG4gKiBAdGhpcyB7aW1wb3J0KCcuL2ludGVybmFsJykuQ29tcG9uZW50fVxuICogQHBhcmFtIHsoKSA9PiB2b2lkfSBbY2FsbGJhY2tdIEEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGFmdGVyIGNvbXBvbmVudCBpc1xuICogcmUtcmVuZGVyZWRcbiAqL1xuQ29tcG9uZW50LnByb3RvdHlwZS5mb3JjZVVwZGF0ZSA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG5cdGlmICh0aGlzLl92bm9kZSkge1xuXHRcdC8vIFNldCByZW5kZXIgbW9kZSBzbyB0aGF0IHdlIGNhbiBkaWZmZXJlbnRpYXRlIHdoZXJlIHRoZSByZW5kZXIgcmVxdWVzdFxuXHRcdC8vIGlzIGNvbWluZyBmcm9tLiBXZSBuZWVkIHRoaXMgYmVjYXVzZSBmb3JjZVVwZGF0ZSBzaG91bGQgbmV2ZXIgY2FsbFxuXHRcdC8vIHNob3VsZENvbXBvbmVudFVwZGF0ZVxuXHRcdHRoaXMuX2ZvcmNlID0gdHJ1ZTtcblx0XHRpZiAoY2FsbGJhY2spIHRoaXMuX3JlbmRlckNhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTtcblx0XHRlbnF1ZXVlUmVuZGVyKHRoaXMpO1xuXHR9XG59O1xuXG4vKipcbiAqIEFjY2VwdHMgYHByb3BzYCBhbmQgYHN0YXRlYCwgYW5kIHJldHVybnMgYSBuZXcgVmlydHVhbCBET00gdHJlZSB0byBidWlsZC5cbiAqIFZpcnR1YWwgRE9NIGlzIGdlbmVyYWxseSBjb25zdHJ1Y3RlZCB2aWEgW0pTWF0oaHR0cDovL2phc29uZm9ybWF0LmNvbS93dGYtaXMtanN4KS5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wcyBQcm9wcyAoZWc6IEpTWCBhdHRyaWJ1dGVzKSByZWNlaXZlZCBmcm9tIHBhcmVudFxuICogZWxlbWVudC9jb21wb25lbnRcbiAqIEBwYXJhbSB7b2JqZWN0fSBzdGF0ZSBUaGUgY29tcG9uZW50J3MgY3VycmVudCBzdGF0ZVxuICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHQgQ29udGV4dCBvYmplY3QsIGFzIHJldHVybmVkIGJ5IHRoZSBuZWFyZXN0XG4gKiBhbmNlc3RvcidzIGBnZXRDaGlsZENvbnRleHQoKWBcbiAqIEByZXR1cm5zIHtpbXBvcnQoJy4vaW5kZXgnKS5Db21wb25lbnRDaGlsZHJlbiB8IHZvaWR9XG4gKi9cbkNvbXBvbmVudC5wcm90b3R5cGUucmVuZGVyID0gRnJhZ21lbnQ7XG5cbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5WTm9kZX0gdm5vZGVcbiAqIEBwYXJhbSB7bnVtYmVyIHwgbnVsbH0gW2NoaWxkSW5kZXhdXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREb21TaWJsaW5nKHZub2RlLCBjaGlsZEluZGV4KSB7XG5cdGlmIChjaGlsZEluZGV4ID09IG51bGwpIHtcblx0XHQvLyBVc2UgY2hpbGRJbmRleD09bnVsbCBhcyBhIHNpZ25hbCB0byByZXN1bWUgdGhlIHNlYXJjaCBmcm9tIHRoZSB2bm9kZSdzIHNpYmxpbmdcblx0XHRyZXR1cm4gdm5vZGUuX3BhcmVudFxuXHRcdFx0PyBnZXREb21TaWJsaW5nKHZub2RlLl9wYXJlbnQsIHZub2RlLl9wYXJlbnQuX2NoaWxkcmVuLmluZGV4T2Yodm5vZGUpICsgMSlcblx0XHRcdDogbnVsbDtcblx0fVxuXG5cdGxldCBzaWJsaW5nO1xuXHRmb3IgKDsgY2hpbGRJbmRleCA8IHZub2RlLl9jaGlsZHJlbi5sZW5ndGg7IGNoaWxkSW5kZXgrKykge1xuXHRcdHNpYmxpbmcgPSB2bm9kZS5fY2hpbGRyZW5bY2hpbGRJbmRleF07XG5cblx0XHRpZiAoc2libGluZyAhPSBudWxsICYmIHNpYmxpbmcuX2RvbSAhPSBudWxsKSB7XG5cdFx0XHQvLyBTaW5jZSB1cGRhdGVQYXJlbnREb21Qb2ludGVycyBrZWVwcyBfZG9tIHBvaW50ZXIgY29ycmVjdCxcblx0XHRcdC8vIHdlIGNhbiByZWx5IG9uIF9kb20gdG8gdGVsbCB1cyBpZiB0aGlzIHN1YnRyZWUgY29udGFpbnMgYVxuXHRcdFx0Ly8gcmVuZGVyZWQgRE9NIG5vZGUsIGFuZCB3aGF0IHRoZSBmaXJzdCByZW5kZXJlZCBET00gbm9kZSBpc1xuXHRcdFx0cmV0dXJuIHNpYmxpbmcuX2RvbTtcblx0XHR9XG5cdH1cblxuXHQvLyBJZiB3ZSBnZXQgaGVyZSwgd2UgaGF2ZSBub3QgZm91bmQgYSBET00gbm9kZSBpbiB0aGlzIHZub2RlJ3MgY2hpbGRyZW4uXG5cdC8vIFdlIG11c3QgcmVzdW1lIGZyb20gdGhpcyB2bm9kZSdzIHNpYmxpbmcgKGluIGl0J3MgcGFyZW50IF9jaGlsZHJlbiBhcnJheSlcblx0Ly8gT25seSBjbGltYiB1cCBhbmQgc2VhcmNoIHRoZSBwYXJlbnQgaWYgd2UgYXJlbid0IHNlYXJjaGluZyB0aHJvdWdoIGEgRE9NXG5cdC8vIFZOb2RlIChtZWFuaW5nIHdlIHJlYWNoZWQgdGhlIERPTSBwYXJlbnQgb2YgdGhlIG9yaWdpbmFsIHZub2RlIHRoYXQgYmVnYW5cblx0Ly8gdGhlIHNlYXJjaClcblx0cmV0dXJuIHR5cGVvZiB2bm9kZS50eXBlID09ICdmdW5jdGlvbicgPyBnZXREb21TaWJsaW5nKHZub2RlKSA6IG51bGw7XG59XG5cbi8qKlxuICogVHJpZ2dlciBpbi1wbGFjZSByZS1yZW5kZXJpbmcgb2YgYSBjb21wb25lbnQuXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkNvbXBvbmVudH0gY29tcG9uZW50IFRoZSBjb21wb25lbnQgdG8gcmVyZW5kZXJcbiAqL1xuZnVuY3Rpb24gcmVuZGVyQ29tcG9uZW50KGNvbXBvbmVudCkge1xuXHRsZXQgdm5vZGUgPSBjb21wb25lbnQuX3Zub2RlLFxuXHRcdG9sZERvbSA9IHZub2RlLl9kb20sXG5cdFx0cGFyZW50RG9tID0gY29tcG9uZW50Ll9wYXJlbnREb207XG5cblx0aWYgKHBhcmVudERvbSkge1xuXHRcdGxldCBjb21taXRRdWV1ZSA9IFtdO1xuXHRcdGNvbnN0IG9sZFZOb2RlID0gYXNzaWduKHt9LCB2bm9kZSk7XG5cdFx0b2xkVk5vZGUuX29yaWdpbmFsID0gdm5vZGUuX29yaWdpbmFsICsgMTtcblxuXHRcdGRpZmYoXG5cdFx0XHRwYXJlbnREb20sXG5cdFx0XHR2bm9kZSxcblx0XHRcdG9sZFZOb2RlLFxuXHRcdFx0Y29tcG9uZW50Ll9nbG9iYWxDb250ZXh0LFxuXHRcdFx0cGFyZW50RG9tLm93bmVyU1ZHRWxlbWVudCAhPT0gdW5kZWZpbmVkLFxuXHRcdFx0dm5vZGUuX2h5ZHJhdGluZyAhPSBudWxsID8gW29sZERvbV0gOiBudWxsLFxuXHRcdFx0Y29tbWl0UXVldWUsXG5cdFx0XHRvbGREb20gPT0gbnVsbCA/IGdldERvbVNpYmxpbmcodm5vZGUpIDogb2xkRG9tLFxuXHRcdFx0dm5vZGUuX2h5ZHJhdGluZ1xuXHRcdCk7XG5cdFx0Y29tbWl0Um9vdChjb21taXRRdWV1ZSwgdm5vZGUpO1xuXG5cdFx0aWYgKHZub2RlLl9kb20gIT0gb2xkRG9tKSB7XG5cdFx0XHR1cGRhdGVQYXJlbnREb21Qb2ludGVycyh2bm9kZSk7XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5WTm9kZX0gdm5vZGVcbiAqL1xuZnVuY3Rpb24gdXBkYXRlUGFyZW50RG9tUG9pbnRlcnModm5vZGUpIHtcblx0aWYgKCh2bm9kZSA9IHZub2RlLl9wYXJlbnQpICE9IG51bGwgJiYgdm5vZGUuX2NvbXBvbmVudCAhPSBudWxsKSB7XG5cdFx0dm5vZGUuX2RvbSA9IHZub2RlLl9jb21wb25lbnQuYmFzZSA9IG51bGw7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB2bm9kZS5fY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcblx0XHRcdGxldCBjaGlsZCA9IHZub2RlLl9jaGlsZHJlbltpXTtcblx0XHRcdGlmIChjaGlsZCAhPSBudWxsICYmIGNoaWxkLl9kb20gIT0gbnVsbCkge1xuXHRcdFx0XHR2bm9kZS5fZG9tID0gdm5vZGUuX2NvbXBvbmVudC5iYXNlID0gY2hpbGQuX2RvbTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHVwZGF0ZVBhcmVudERvbVBvaW50ZXJzKHZub2RlKTtcblx0fVxufVxuXG4vKipcbiAqIFRoZSByZW5kZXIgcXVldWVcbiAqIEB0eXBlIHtBcnJheTxpbXBvcnQoJy4vaW50ZXJuYWwnKS5Db21wb25lbnQ+fVxuICovXG5sZXQgcmVyZW5kZXJRdWV1ZSA9IFtdO1xuXG4vKipcbiAqIEFzeW5jaHJvbm91c2x5IHNjaGVkdWxlIGEgY2FsbGJhY2tcbiAqIEB0eXBlIHsoY2I6ICgpID0+IHZvaWQpID0+IHZvaWR9XG4gKi9cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4vLyBOb3RlIHRoZSBmb2xsb3dpbmcgbGluZSBpc24ndCB0cmVlLXNoYWtlbiBieSByb2xsdXAgY3V6IG9mIHJvbGx1cC9yb2xsdXAjMjU2NlxuY29uc3QgZGVmZXIgPVxuXHR0eXBlb2YgUHJvbWlzZSA9PSAnZnVuY3Rpb24nXG5cdFx0PyBQcm9taXNlLnByb3RvdHlwZS50aGVuLmJpbmQoUHJvbWlzZS5yZXNvbHZlKCkpXG5cdFx0OiBzZXRUaW1lb3V0O1xuXG4vKlxuICogVGhlIHZhbHVlIG9mIGBDb21wb25lbnQuZGVib3VuY2VgIG11c3QgYXN5bmNocm9ub3VzbHkgaW52b2tlIHRoZSBwYXNzZWQgaW4gY2FsbGJhY2suIEl0IGlzXG4gKiBpbXBvcnRhbnQgdGhhdCBjb250cmlidXRvcnMgdG8gUHJlYWN0IGNhbiBjb25zaXN0ZW50bHkgcmVhc29uIGFib3V0IHdoYXQgY2FsbHMgdG8gYHNldFN0YXRlYCwgZXRjLlxuICogZG8sIGFuZCB3aGVuIHRoZWlyIGVmZmVjdHMgd2lsbCBiZSBhcHBsaWVkLiBTZWUgdGhlIGxpbmtzIGJlbG93IGZvciBzb21lIGZ1cnRoZXIgcmVhZGluZyBvbiBkZXNpZ25pbmdcbiAqIGFzeW5jaHJvbm91cyBBUElzLlxuICogKiBbRGVzaWduaW5nIEFQSXMgZm9yIEFzeW5jaHJvbnldKGh0dHBzOi8vYmxvZy5penMubWUvMjAxMy8wOC9kZXNpZ25pbmctYXBpcy1mb3ItYXN5bmNocm9ueSlcbiAqICogW0NhbGxiYWNrcyBzeW5jaHJvbm91cyBhbmQgYXN5bmNocm9ub3VzXShodHRwczovL2Jsb2cub21ldGVyLmNvbS8yMDExLzA3LzI0L2NhbGxiYWNrcy1zeW5jaHJvbm91cy1hbmQtYXN5bmNocm9ub3VzLylcbiAqL1xuXG5sZXQgcHJldkRlYm91bmNlO1xuXG4vKipcbiAqIEVucXVldWUgYSByZXJlbmRlciBvZiBhIGNvbXBvbmVudFxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5Db21wb25lbnR9IGMgVGhlIGNvbXBvbmVudCB0byByZXJlbmRlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5xdWV1ZVJlbmRlcihjKSB7XG5cdGlmIChcblx0XHQoIWMuX2RpcnR5ICYmXG5cdFx0XHQoYy5fZGlydHkgPSB0cnVlKSAmJlxuXHRcdFx0cmVyZW5kZXJRdWV1ZS5wdXNoKGMpICYmXG5cdFx0XHQhcHJvY2Vzcy5fcmVyZW5kZXJDb3VudCsrKSB8fFxuXHRcdHByZXZEZWJvdW5jZSAhPT0gb3B0aW9ucy5kZWJvdW5jZVJlbmRlcmluZ1xuXHQpIHtcblx0XHRwcmV2RGVib3VuY2UgPSBvcHRpb25zLmRlYm91bmNlUmVuZGVyaW5nO1xuXHRcdChwcmV2RGVib3VuY2UgfHwgZGVmZXIpKHByb2Nlc3MpO1xuXHR9XG59XG5cbi8qKiBGbHVzaCB0aGUgcmVuZGVyIHF1ZXVlIGJ5IHJlcmVuZGVyaW5nIGFsbCBxdWV1ZWQgY29tcG9uZW50cyAqL1xuZnVuY3Rpb24gcHJvY2VzcygpIHtcblx0bGV0IHF1ZXVlO1xuXHR3aGlsZSAoKHByb2Nlc3MuX3JlcmVuZGVyQ291bnQgPSByZXJlbmRlclF1ZXVlLmxlbmd0aCkpIHtcblx0XHRxdWV1ZSA9IHJlcmVuZGVyUXVldWUuc29ydCgoYSwgYikgPT4gYS5fdm5vZGUuX2RlcHRoIC0gYi5fdm5vZGUuX2RlcHRoKTtcblx0XHRyZXJlbmRlclF1ZXVlID0gW107XG5cdFx0Ly8gRG9uJ3QgdXBkYXRlIGByZW5kZXJDb3VudGAgeWV0LiBLZWVwIGl0cyB2YWx1ZSBub24temVybyB0byBwcmV2ZW50IHVubmVjZXNzYXJ5XG5cdFx0Ly8gcHJvY2VzcygpIGNhbGxzIGZyb20gZ2V0dGluZyBzY2hlZHVsZWQgd2hpbGUgYHF1ZXVlYCBpcyBzdGlsbCBiZWluZyBjb25zdW1lZC5cblx0XHRxdWV1ZS5zb21lKGMgPT4ge1xuXHRcdFx0aWYgKGMuX2RpcnR5KSByZW5kZXJDb21wb25lbnQoYyk7XG5cdFx0fSk7XG5cdH1cbn1cbnByb2Nlc3MuX3JlcmVuZGVyQ291bnQgPSAwO1xuIiwgImltcG9ydCB7IGVucXVldWVSZW5kZXIgfSBmcm9tICcuL2NvbXBvbmVudCc7XG5cbmV4cG9ydCBsZXQgaSA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb250ZXh0KGRlZmF1bHRWYWx1ZSwgY29udGV4dElkKSB7XG5cdGNvbnRleHRJZCA9ICdfX2NDJyArIGkrKztcblxuXHRjb25zdCBjb250ZXh0ID0ge1xuXHRcdF9pZDogY29udGV4dElkLFxuXHRcdF9kZWZhdWx0VmFsdWU6IGRlZmF1bHRWYWx1ZSxcblx0XHQvKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkZ1bmN0aW9uQ29tcG9uZW50fSAqL1xuXHRcdENvbnN1bWVyKHByb3BzLCBjb250ZXh0VmFsdWUpIHtcblx0XHRcdC8vIHJldHVybiBwcm9wcy5jaGlsZHJlbihcblx0XHRcdC8vIFx0Y29udGV4dFtjb250ZXh0SWRdID8gY29udGV4dFtjb250ZXh0SWRdLnByb3BzLnZhbHVlIDogZGVmYXVsdFZhbHVlXG5cdFx0XHQvLyApO1xuXHRcdFx0cmV0dXJuIHByb3BzLmNoaWxkcmVuKGNvbnRleHRWYWx1ZSk7XG5cdFx0fSxcblx0XHQvKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkZ1bmN0aW9uQ29tcG9uZW50fSAqL1xuXHRcdFByb3ZpZGVyKHByb3BzKSB7XG5cdFx0XHRpZiAoIXRoaXMuZ2V0Q2hpbGRDb250ZXh0KSB7XG5cdFx0XHRcdGxldCBzdWJzID0gW107XG5cdFx0XHRcdGxldCBjdHggPSB7fTtcblx0XHRcdFx0Y3R4W2NvbnRleHRJZF0gPSB0aGlzO1xuXG5cdFx0XHRcdHRoaXMuZ2V0Q2hpbGRDb250ZXh0ID0gKCkgPT4gY3R4O1xuXG5cdFx0XHRcdHRoaXMuc2hvdWxkQ29tcG9uZW50VXBkYXRlID0gZnVuY3Rpb24oX3Byb3BzKSB7XG5cdFx0XHRcdFx0aWYgKHRoaXMucHJvcHMudmFsdWUgIT09IF9wcm9wcy52YWx1ZSkge1xuXHRcdFx0XHRcdFx0Ly8gSSB0aGluayB0aGUgZm9yY2VkIHZhbHVlIHByb3BhZ2F0aW9uIGhlcmUgd2FzIG9ubHkgbmVlZGVkIHdoZW4gYG9wdGlvbnMuZGVib3VuY2VSZW5kZXJpbmdgIHdhcyBiZWluZyBieXBhc3NlZDpcblx0XHRcdFx0XHRcdC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wcmVhY3Rqcy9wcmVhY3QvY29tbWl0LzRkMzM5ZmI4MDNiZWEwOWU5ZjE5OGFiZjM4Y2ExYmY4ZWE0Yjc3NzEjZGlmZi01NDY4MmNlMzgwOTM1YTcxN2U0MWI4YmZjNTQ3MzdmNlIzNThcblx0XHRcdFx0XHRcdC8vIEluIHRob3NlIGNhc2VzIHRob3VnaCwgZXZlbiB3aXRoIHRoZSB2YWx1ZSBjb3JyZWN0ZWQsIHdlJ3JlIGRvdWJsZS1yZW5kZXJpbmcgYWxsIG5vZGVzLlxuXHRcdFx0XHRcdFx0Ly8gSXQgbWlnaHQgYmUgYmV0dGVyIHRvIGp1c3QgdGVsbCBmb2xrcyBub3QgdG8gdXNlIGZvcmNlLXN5bmMgbW9kZS5cblx0XHRcdFx0XHRcdC8vIEN1cnJlbnRseSwgdXNpbmcgYHVzZUNvbnRleHQoKWAgaW4gYSBjbGFzcyBjb21wb25lbnQgd2lsbCBvdmVyd3JpdGUgaXRzIGB0aGlzLmNvbnRleHRgIHZhbHVlLlxuXHRcdFx0XHRcdFx0Ly8gc3Vicy5zb21lKGMgPT4ge1xuXHRcdFx0XHRcdFx0Ly8gXHRjLmNvbnRleHQgPSBfcHJvcHMudmFsdWU7XG5cdFx0XHRcdFx0XHQvLyBcdGVucXVldWVSZW5kZXIoYyk7XG5cdFx0XHRcdFx0XHQvLyB9KTtcblxuXHRcdFx0XHRcdFx0Ly8gc3Vicy5zb21lKGMgPT4ge1xuXHRcdFx0XHRcdFx0Ly8gXHRjLmNvbnRleHRbY29udGV4dElkXSA9IF9wcm9wcy52YWx1ZTtcblx0XHRcdFx0XHRcdC8vIFx0ZW5xdWV1ZVJlbmRlcihjKTtcblx0XHRcdFx0XHRcdC8vIH0pO1xuXHRcdFx0XHRcdFx0c3Vicy5zb21lKGVucXVldWVSZW5kZXIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fTtcblxuXHRcdFx0XHR0aGlzLnN1YiA9IGMgPT4ge1xuXHRcdFx0XHRcdHN1YnMucHVzaChjKTtcblx0XHRcdFx0XHRsZXQgb2xkID0gYy5jb21wb25lbnRXaWxsVW5tb3VudDtcblx0XHRcdFx0XHRjLmNvbXBvbmVudFdpbGxVbm1vdW50ID0gKCkgPT4ge1xuXHRcdFx0XHRcdFx0c3Vicy5zcGxpY2Uoc3Vicy5pbmRleE9mKGMpLCAxKTtcblx0XHRcdFx0XHRcdGlmIChvbGQpIG9sZC5jYWxsKGMpO1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBwcm9wcy5jaGlsZHJlbjtcblx0XHR9XG5cdH07XG5cblx0Ly8gRGV2dG9vbHMgbmVlZHMgYWNjZXNzIHRvIHRoZSBjb250ZXh0IG9iamVjdCB3aGVuIGl0XG5cdC8vIGVuY291bnRlcnMgYSBQcm92aWRlci4gVGhpcyBpcyBuZWNlc3NhcnkgdG8gc3VwcG9ydFxuXHQvLyBzZXR0aW5nIGBkaXNwbGF5TmFtZWAgb24gdGhlIGNvbnRleHQgb2JqZWN0IGluc3RlYWRcblx0Ly8gb2Ygb24gdGhlIGNvbXBvbmVudCBpdHNlbGYuIFNlZTpcblx0Ly8gaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2NvbnRleHQuaHRtbCNjb250ZXh0ZGlzcGxheW5hbWVcblxuXHRyZXR1cm4gKGNvbnRleHQuUHJvdmlkZXIuX2NvbnRleHRSZWYgPSBjb250ZXh0LkNvbnN1bWVyLmNvbnRleHRUeXBlID0gY29udGV4dCk7XG59XG4iLCAiaW1wb3J0IHsgZGlmZiwgdW5tb3VudCwgYXBwbHlSZWYgfSBmcm9tICcuL2luZGV4JztcbmltcG9ydCB7IGNyZWF0ZVZOb2RlLCBGcmFnbWVudCB9IGZyb20gJy4uL2NyZWF0ZS1lbGVtZW50JztcbmltcG9ydCB7IEVNUFRZX09CSiwgRU1QVFlfQVJSIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGdldERvbVNpYmxpbmcgfSBmcm9tICcuLi9jb21wb25lbnQnO1xuXG4vKipcbiAqIERpZmYgdGhlIGNoaWxkcmVuIG9mIGEgdmlydHVhbCBub2RlXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi4vaW50ZXJuYWwnKS5QcmVhY3RFbGVtZW50fSBwYXJlbnREb20gVGhlIERPTSBlbGVtZW50IHdob3NlXG4gKiBjaGlsZHJlbiBhcmUgYmVpbmcgZGlmZmVkXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi4vaW50ZXJuYWwnKS5Db21wb25lbnRDaGlsZHJlbltdfSByZW5kZXJSZXN1bHRcbiAqIEBwYXJhbSB7aW1wb3J0KCcuLi9pbnRlcm5hbCcpLlZOb2RlfSBuZXdQYXJlbnRWTm9kZSBUaGUgbmV3IHZpcnR1YWxcbiAqIG5vZGUgd2hvc2UgY2hpbGRyZW4gc2hvdWxkIGJlIGRpZmYnZWQgYWdhaW5zdCBvbGRQYXJlbnRWTm9kZVxuICogQHBhcmFtIHtpbXBvcnQoJy4uL2ludGVybmFsJykuVk5vZGV9IG9sZFBhcmVudFZOb2RlIFRoZSBvbGQgdmlydHVhbFxuICogbm9kZSB3aG9zZSBjaGlsZHJlbiBzaG91bGQgYmUgZGlmZidlZCBhZ2FpbnN0IG5ld1BhcmVudFZOb2RlXG4gKiBAcGFyYW0ge29iamVjdH0gZ2xvYmFsQ29udGV4dCBUaGUgY3VycmVudCBjb250ZXh0IG9iamVjdCAtIG1vZGlmaWVkIGJ5IGdldENoaWxkQ29udGV4dFxuICogQHBhcmFtIHtib29sZWFufSBpc1N2ZyBXaGV0aGVyIG9yIG5vdCB0aGlzIERPTSBub2RlIGlzIGFuIFNWRyBub2RlXG4gKiBAcGFyYW0ge0FycmF5PGltcG9ydCgnLi4vaW50ZXJuYWwnKS5QcmVhY3RFbGVtZW50Pn0gZXhjZXNzRG9tQ2hpbGRyZW5cbiAqIEBwYXJhbSB7QXJyYXk8aW1wb3J0KCcuLi9pbnRlcm5hbCcpLkNvbXBvbmVudD59IGNvbW1pdFF1ZXVlIExpc3Qgb2YgY29tcG9uZW50c1xuICogd2hpY2ggaGF2ZSBjYWxsYmFja3MgdG8gaW52b2tlIGluIGNvbW1pdFJvb3RcbiAqIEBwYXJhbSB7aW1wb3J0KCcuLi9pbnRlcm5hbCcpLlByZWFjdEVsZW1lbnR9IG9sZERvbSBUaGUgY3VycmVudCBhdHRhY2hlZCBET01cbiAqIGVsZW1lbnQgYW55IG5ldyBkb20gZWxlbWVudHMgc2hvdWxkIGJlIHBsYWNlZCBhcm91bmQuIExpa2VseSBgbnVsbGAgb24gZmlyc3RcbiAqIHJlbmRlciAoZXhjZXB0IHdoZW4gaHlkcmF0aW5nKS4gQ2FuIGJlIGEgc2libGluZyBET00gZWxlbWVudCB3aGVuIGRpZmZpbmdcbiAqIEZyYWdtZW50cyB0aGF0IGhhdmUgc2libGluZ3MuIEluIG1vc3QgY2FzZXMsIGl0IHN0YXJ0cyBvdXQgYXMgYG9sZENoaWxkcmVuWzBdLl9kb21gLlxuICogQHBhcmFtIHtib29sZWFufSBpc0h5ZHJhdGluZyBXaGV0aGVyIG9yIG5vdCB3ZSBhcmUgaW4gaHlkcmF0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWZmQ2hpbGRyZW4oXG5cdHBhcmVudERvbSxcblx0cmVuZGVyUmVzdWx0LFxuXHRuZXdQYXJlbnRWTm9kZSxcblx0b2xkUGFyZW50Vk5vZGUsXG5cdGdsb2JhbENvbnRleHQsXG5cdGlzU3ZnLFxuXHRleGNlc3NEb21DaGlsZHJlbixcblx0Y29tbWl0UXVldWUsXG5cdG9sZERvbSxcblx0aXNIeWRyYXRpbmdcbikge1xuXHRsZXQgaSwgaiwgb2xkVk5vZGUsIGNoaWxkVk5vZGUsIG5ld0RvbSwgZmlyc3RDaGlsZERvbSwgcmVmcztcblxuXHQvLyBUaGlzIGlzIGEgY29tcHJlc3Npb24gb2Ygb2xkUGFyZW50Vk5vZGUhPW51bGwgJiYgb2xkUGFyZW50Vk5vZGUgIT0gRU1QVFlfT0JKICYmIG9sZFBhcmVudFZOb2RlLl9jaGlsZHJlbiB8fCBFTVBUWV9BUlJcblx0Ly8gYXMgRU1QVFlfT0JKLl9jaGlsZHJlbiBzaG91bGQgYmUgYHVuZGVmaW5lZGAuXG5cdGxldCBvbGRDaGlsZHJlbiA9IChvbGRQYXJlbnRWTm9kZSAmJiBvbGRQYXJlbnRWTm9kZS5fY2hpbGRyZW4pIHx8IEVNUFRZX0FSUjtcblxuXHRsZXQgb2xkQ2hpbGRyZW5MZW5ndGggPSBvbGRDaGlsZHJlbi5sZW5ndGg7XG5cblx0bmV3UGFyZW50Vk5vZGUuX2NoaWxkcmVuID0gW107XG5cdGZvciAoaSA9IDA7IGkgPCByZW5kZXJSZXN1bHQubGVuZ3RoOyBpKyspIHtcblx0XHRjaGlsZFZOb2RlID0gcmVuZGVyUmVzdWx0W2ldO1xuXG5cdFx0aWYgKGNoaWxkVk5vZGUgPT0gbnVsbCB8fCB0eXBlb2YgY2hpbGRWTm9kZSA9PSAnYm9vbGVhbicpIHtcblx0XHRcdGNoaWxkVk5vZGUgPSBuZXdQYXJlbnRWTm9kZS5fY2hpbGRyZW5baV0gPSBudWxsO1xuXHRcdH1cblx0XHQvLyBJZiB0aGlzIG5ld1ZOb2RlIGlzIGJlaW5nIHJldXNlZCAoZS5nLiA8ZGl2PntyZXVzZX17cmV1c2V9PC9kaXY+KSBpbiB0aGUgc2FtZSBkaWZmLFxuXHRcdC8vIG9yIHdlIGFyZSByZW5kZXJpbmcgYSBjb21wb25lbnQgKGUuZy4gc2V0U3RhdGUpIGNvcHkgdGhlIG9sZFZOb2RlcyBzbyBpdCBjYW4gaGF2ZVxuXHRcdC8vIGl0J3Mgb3duIERPTSAmIGV0Yy4gcG9pbnRlcnNcblx0XHRlbHNlIGlmIChcblx0XHRcdHR5cGVvZiBjaGlsZFZOb2RlID09ICdzdHJpbmcnIHx8XG5cdFx0XHR0eXBlb2YgY2hpbGRWTm9kZSA9PSAnbnVtYmVyJyB8fFxuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHZhbGlkLXR5cGVvZlxuXHRcdFx0dHlwZW9mIGNoaWxkVk5vZGUgPT0gJ2JpZ2ludCdcblx0XHQpIHtcblx0XHRcdGNoaWxkVk5vZGUgPSBuZXdQYXJlbnRWTm9kZS5fY2hpbGRyZW5baV0gPSBjcmVhdGVWTm9kZShcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0Y2hpbGRWTm9kZSxcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0Y2hpbGRWTm9kZVxuXHRcdFx0KTtcblx0XHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRWTm9kZSkpIHtcblx0XHRcdGNoaWxkVk5vZGUgPSBuZXdQYXJlbnRWTm9kZS5fY2hpbGRyZW5baV0gPSBjcmVhdGVWTm9kZShcblx0XHRcdFx0RnJhZ21lbnQsXG5cdFx0XHRcdHsgY2hpbGRyZW46IGNoaWxkVk5vZGUgfSxcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0bnVsbFxuXHRcdFx0KTtcblx0XHR9IGVsc2UgaWYgKGNoaWxkVk5vZGUuX2RlcHRoID4gMCkge1xuXHRcdFx0Ly8gVk5vZGUgaXMgYWxyZWFkeSBpbiB1c2UsIGNsb25lIGl0LiBUaGlzIGNhbiBoYXBwZW4gaW4gdGhlIGZvbGxvd2luZ1xuXHRcdFx0Ly8gc2NlbmFyaW86XG5cdFx0XHQvLyAgIGNvbnN0IHJldXNlID0gPGRpdiAvPlxuXHRcdFx0Ly8gICA8ZGl2PntyZXVzZX08c3BhbiAvPntyZXVzZX08L2Rpdj5cblx0XHRcdGNoaWxkVk5vZGUgPSBuZXdQYXJlbnRWTm9kZS5fY2hpbGRyZW5baV0gPSBjcmVhdGVWTm9kZShcblx0XHRcdFx0Y2hpbGRWTm9kZS50eXBlLFxuXHRcdFx0XHRjaGlsZFZOb2RlLnByb3BzLFxuXHRcdFx0XHRjaGlsZFZOb2RlLmtleSxcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0Y2hpbGRWTm9kZS5fb3JpZ2luYWxcblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNoaWxkVk5vZGUgPSBuZXdQYXJlbnRWTm9kZS5fY2hpbGRyZW5baV0gPSBjaGlsZFZOb2RlO1xuXHRcdH1cblxuXHRcdC8vIFRlcnNlciByZW1vdmVzIHRoZSBgY29udGludWVgIGhlcmUgYW5kIHdyYXBzIHRoZSBsb29wIGJvZHlcblx0XHQvLyBpbiBhIGBpZiAoY2hpbGRWTm9kZSkgeyAuLi4gfSBjb25kaXRpb25cblx0XHRpZiAoY2hpbGRWTm9kZSA9PSBudWxsKSB7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHRjaGlsZFZOb2RlLl9wYXJlbnQgPSBuZXdQYXJlbnRWTm9kZTtcblx0XHRjaGlsZFZOb2RlLl9kZXB0aCA9IG5ld1BhcmVudFZOb2RlLl9kZXB0aCArIDE7XG5cblx0XHQvLyBDaGVjayBpZiB3ZSBmaW5kIGEgY29ycmVzcG9uZGluZyBlbGVtZW50IGluIG9sZENoaWxkcmVuLlxuXHRcdC8vIElmIGZvdW5kLCBkZWxldGUgdGhlIGFycmF5IGl0ZW0gYnkgc2V0dGluZyB0byBgdW5kZWZpbmVkYC5cblx0XHQvLyBXZSB1c2UgYHVuZGVmaW5lZGAsIGFzIGBudWxsYCBpcyByZXNlcnZlZCBmb3IgZW1wdHkgcGxhY2Vob2xkZXJzXG5cdFx0Ly8gKGhvbGVzKS5cblx0XHRvbGRWTm9kZSA9IG9sZENoaWxkcmVuW2ldO1xuXG5cdFx0aWYgKFxuXHRcdFx0b2xkVk5vZGUgPT09IG51bGwgfHxcblx0XHRcdChvbGRWTm9kZSAmJlxuXHRcdFx0XHRjaGlsZFZOb2RlLmtleSA9PSBvbGRWTm9kZS5rZXkgJiZcblx0XHRcdFx0Y2hpbGRWTm9kZS50eXBlID09PSBvbGRWTm9kZS50eXBlKVxuXHRcdCkge1xuXHRcdFx0b2xkQ2hpbGRyZW5baV0gPSB1bmRlZmluZWQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIEVpdGhlciBvbGRWTm9kZSA9PT0gdW5kZWZpbmVkIG9yIG9sZENoaWxkcmVuTGVuZ3RoID4gMCxcblx0XHRcdC8vIHNvIGFmdGVyIHRoaXMgbG9vcCBvbGRWTm9kZSA9PSBudWxsIG9yIG9sZFZOb2RlIGlzIGEgdmFsaWQgdmFsdWUuXG5cdFx0XHRmb3IgKGogPSAwOyBqIDwgb2xkQ2hpbGRyZW5MZW5ndGg7IGorKykge1xuXHRcdFx0XHRvbGRWTm9kZSA9IG9sZENoaWxkcmVuW2pdO1xuXHRcdFx0XHQvLyBJZiBjaGlsZFZOb2RlIGlzIHVua2V5ZWQsIHdlIG9ubHkgbWF0Y2ggc2ltaWxhcmx5IHVua2V5ZWQgbm9kZXMsIG90aGVyd2lzZSB3ZSBtYXRjaCBieSBrZXkuXG5cdFx0XHRcdC8vIFdlIGFsd2F5cyBtYXRjaCBieSB0eXBlIChpbiBlaXRoZXIgY2FzZSkuXG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRvbGRWTm9kZSAmJlxuXHRcdFx0XHRcdGNoaWxkVk5vZGUua2V5ID09IG9sZFZOb2RlLmtleSAmJlxuXHRcdFx0XHRcdGNoaWxkVk5vZGUudHlwZSA9PT0gb2xkVk5vZGUudHlwZVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRvbGRDaGlsZHJlbltqXSA9IHVuZGVmaW5lZDtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHRvbGRWTm9kZSA9IG51bGw7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0b2xkVk5vZGUgPSBvbGRWTm9kZSB8fCBFTVBUWV9PQko7XG5cblx0XHQvLyBNb3JwaCB0aGUgb2xkIGVsZW1lbnQgaW50byB0aGUgbmV3IG9uZSwgYnV0IGRvbid0IGFwcGVuZCBpdCB0byB0aGUgZG9tIHlldFxuXHRcdGRpZmYoXG5cdFx0XHRwYXJlbnREb20sXG5cdFx0XHRjaGlsZFZOb2RlLFxuXHRcdFx0b2xkVk5vZGUsXG5cdFx0XHRnbG9iYWxDb250ZXh0LFxuXHRcdFx0aXNTdmcsXG5cdFx0XHRleGNlc3NEb21DaGlsZHJlbixcblx0XHRcdGNvbW1pdFF1ZXVlLFxuXHRcdFx0b2xkRG9tLFxuXHRcdFx0aXNIeWRyYXRpbmdcblx0XHQpO1xuXG5cdFx0bmV3RG9tID0gY2hpbGRWTm9kZS5fZG9tO1xuXG5cdFx0aWYgKChqID0gY2hpbGRWTm9kZS5yZWYpICYmIG9sZFZOb2RlLnJlZiAhPSBqKSB7XG5cdFx0XHRpZiAoIXJlZnMpIHJlZnMgPSBbXTtcblx0XHRcdGlmIChvbGRWTm9kZS5yZWYpIHJlZnMucHVzaChvbGRWTm9kZS5yZWYsIG51bGwsIGNoaWxkVk5vZGUpO1xuXHRcdFx0cmVmcy5wdXNoKGosIGNoaWxkVk5vZGUuX2NvbXBvbmVudCB8fCBuZXdEb20sIGNoaWxkVk5vZGUpO1xuXHRcdH1cblxuXHRcdGlmIChuZXdEb20gIT0gbnVsbCkge1xuXHRcdFx0aWYgKGZpcnN0Q2hpbGREb20gPT0gbnVsbCkge1xuXHRcdFx0XHRmaXJzdENoaWxkRG9tID0gbmV3RG9tO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoXG5cdFx0XHRcdHR5cGVvZiBjaGlsZFZOb2RlLnR5cGUgPT0gJ2Z1bmN0aW9uJyAmJlxuXHRcdFx0XHRjaGlsZFZOb2RlLl9jaGlsZHJlbiA9PT0gb2xkVk5vZGUuX2NoaWxkcmVuXG5cdFx0XHQpIHtcblx0XHRcdFx0Y2hpbGRWTm9kZS5fbmV4dERvbSA9IG9sZERvbSA9IHJlb3JkZXJDaGlsZHJlbihcblx0XHRcdFx0XHRjaGlsZFZOb2RlLFxuXHRcdFx0XHRcdG9sZERvbSxcblx0XHRcdFx0XHRwYXJlbnREb21cblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG9sZERvbSA9IHBsYWNlQ2hpbGQoXG5cdFx0XHRcdFx0cGFyZW50RG9tLFxuXHRcdFx0XHRcdGNoaWxkVk5vZGUsXG5cdFx0XHRcdFx0b2xkVk5vZGUsXG5cdFx0XHRcdFx0b2xkQ2hpbGRyZW4sXG5cdFx0XHRcdFx0bmV3RG9tLFxuXHRcdFx0XHRcdG9sZERvbVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAodHlwZW9mIG5ld1BhcmVudFZOb2RlLnR5cGUgPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHQvLyBCZWNhdXNlIHRoZSBuZXdQYXJlbnRWTm9kZSBpcyBGcmFnbWVudC1saWtlLCB3ZSBuZWVkIHRvIHNldCBpdCdzXG5cdFx0XHRcdC8vIF9uZXh0RG9tIHByb3BlcnR5IHRvIHRoZSBuZXh0U2libGluZyBvZiBpdHMgbGFzdCBjaGlsZCBET00gbm9kZS5cblx0XHRcdFx0Ly9cblx0XHRcdFx0Ly8gYG9sZERvbWAgY29udGFpbnMgdGhlIGNvcnJlY3QgdmFsdWUgaGVyZSBiZWNhdXNlIGlmIHRoZSBsYXN0IGNoaWxkXG5cdFx0XHRcdC8vIGlzIGEgRnJhZ21lbnQtbGlrZSwgdGhlbiBvbGREb20gaGFzIGFscmVhZHkgYmVlbiBzZXQgdG8gdGhhdCBjaGlsZCdzIF9uZXh0RG9tLlxuXHRcdFx0XHQvLyBJZiB0aGUgbGFzdCBjaGlsZCBpcyBhIERPTSBWTm9kZSwgdGhlbiBvbGREb20gd2lsbCBiZSBzZXQgdG8gdGhhdCBET01cblx0XHRcdFx0Ly8gbm9kZSdzIG5leHRTaWJsaW5nLlxuXHRcdFx0XHRuZXdQYXJlbnRWTm9kZS5fbmV4dERvbSA9IG9sZERvbTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0b2xkRG9tICYmXG5cdFx0XHRvbGRWTm9kZS5fZG9tID09IG9sZERvbSAmJlxuXHRcdFx0b2xkRG9tLnBhcmVudE5vZGUgIT0gcGFyZW50RG9tXG5cdFx0KSB7XG5cdFx0XHQvLyBUaGUgYWJvdmUgY29uZGl0aW9uIGlzIHRvIGhhbmRsZSBudWxsIHBsYWNlaG9sZGVycy4gU2VlIHRlc3QgaW4gcGxhY2Vob2xkZXIudGVzdC5qczpcblx0XHRcdC8vIGBlZmZpY2llbnRseSByZXBsYWNlIG51bGwgcGxhY2Vob2xkZXJzIGluIHBhcmVudCByZXJlbmRlcnNgXG5cdFx0XHRvbGREb20gPSBnZXREb21TaWJsaW5nKG9sZFZOb2RlKTtcblx0XHR9XG5cdH1cblxuXHRuZXdQYXJlbnRWTm9kZS5fZG9tID0gZmlyc3RDaGlsZERvbTtcblxuXHQvLyBSZW1vdmUgcmVtYWluaW5nIG9sZENoaWxkcmVuIGlmIHRoZXJlIGFyZSBhbnkuXG5cdGZvciAoaSA9IG9sZENoaWxkcmVuTGVuZ3RoOyBpLS07ICkge1xuXHRcdGlmIChvbGRDaGlsZHJlbltpXSAhPSBudWxsKSB7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdHR5cGVvZiBuZXdQYXJlbnRWTm9kZS50eXBlID09ICdmdW5jdGlvbicgJiZcblx0XHRcdFx0b2xkQ2hpbGRyZW5baV0uX2RvbSAhPSBudWxsICYmXG5cdFx0XHRcdG9sZENoaWxkcmVuW2ldLl9kb20gPT0gbmV3UGFyZW50Vk5vZGUuX25leHREb21cblx0XHRcdCkge1xuXHRcdFx0XHQvLyBJZiB0aGUgbmV3UGFyZW50Vk5vZGUuX19uZXh0RG9tIHBvaW50cyB0byBhIGRvbSBub2RlIHRoYXQgaXMgYWJvdXQgdG9cblx0XHRcdFx0Ly8gYmUgdW5tb3VudGVkLCB0aGVuIGdldCB0aGUgbmV4dCBzaWJsaW5nIG9mIHRoYXQgdm5vZGUgYW5kIHNldFxuXHRcdFx0XHQvLyBfbmV4dERvbSB0byBpdFxuXHRcdFx0XHRuZXdQYXJlbnRWTm9kZS5fbmV4dERvbSA9IGdldERvbVNpYmxpbmcob2xkUGFyZW50Vk5vZGUsIGkgKyAxKTtcblx0XHRcdH1cblxuXHRcdFx0dW5tb3VudChvbGRDaGlsZHJlbltpXSwgb2xkQ2hpbGRyZW5baV0pO1xuXHRcdH1cblx0fVxuXG5cdC8vIFNldCByZWZzIG9ubHkgYWZ0ZXIgdW5tb3VudFxuXHRpZiAocmVmcykge1xuXHRcdGZvciAoaSA9IDA7IGkgPCByZWZzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRhcHBseVJlZihyZWZzW2ldLCByZWZzWysraV0sIHJlZnNbKytpXSk7XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIHJlb3JkZXJDaGlsZHJlbihjaGlsZFZOb2RlLCBvbGREb20sIHBhcmVudERvbSkge1xuXHQvLyBOb3RlOiBWTm9kZXMgaW4gbmVzdGVkIHN1c3BlbmRlZCB0cmVlcyBtYXkgYmUgbWlzc2luZyBfY2hpbGRyZW4uXG5cdGxldCBjID0gY2hpbGRWTm9kZS5fY2hpbGRyZW47XG5cdGxldCB0bXAgPSAwO1xuXHRmb3IgKDsgYyAmJiB0bXAgPCBjLmxlbmd0aDsgdG1wKyspIHtcblx0XHRsZXQgdm5vZGUgPSBjW3RtcF07XG5cdFx0aWYgKHZub2RlKSB7XG5cdFx0XHQvLyBXZSB0eXBpY2FsbHkgZW50ZXIgdGhpcyBjb2RlIHBhdGggb24gc0NVIGJhaWxvdXQsIHdoZXJlIHdlIGNvcHlcblx0XHRcdC8vIG9sZFZOb2RlLl9jaGlsZHJlbiB0byBuZXdWTm9kZS5fY2hpbGRyZW4uIElmIHRoYXQgaXMgdGhlIGNhc2UsIHdlIG5lZWRcblx0XHRcdC8vIHRvIHVwZGF0ZSB0aGUgb2xkIGNoaWxkcmVuJ3MgX3BhcmVudCBwb2ludGVyIHRvIHBvaW50IHRvIHRoZSBuZXdWTm9kZVxuXHRcdFx0Ly8gKGNoaWxkVk5vZGUgaGVyZSkuXG5cdFx0XHR2bm9kZS5fcGFyZW50ID0gY2hpbGRWTm9kZTtcblxuXHRcdFx0aWYgKHR5cGVvZiB2bm9kZS50eXBlID09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0b2xkRG9tID0gcmVvcmRlckNoaWxkcmVuKHZub2RlLCBvbGREb20sIHBhcmVudERvbSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRvbGREb20gPSBwbGFjZUNoaWxkKFxuXHRcdFx0XHRcdHBhcmVudERvbSxcblx0XHRcdFx0XHR2bm9kZSxcblx0XHRcdFx0XHR2bm9kZSxcblx0XHRcdFx0XHRjLFxuXHRcdFx0XHRcdHZub2RlLl9kb20sXG5cdFx0XHRcdFx0b2xkRG9tXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIG9sZERvbTtcbn1cblxuLyoqXG4gKiBGbGF0dGVuIGFuZCBsb29wIHRocm91Z2ggdGhlIGNoaWxkcmVuIG9mIGEgdmlydHVhbCBub2RlXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi4vaW5kZXgnKS5Db21wb25lbnRDaGlsZHJlbn0gY2hpbGRyZW4gVGhlIHVuZmxhdHRlbmVkXG4gKiBjaGlsZHJlbiBvZiBhIHZpcnR1YWwgbm9kZVxuICogQHJldHVybnMge2ltcG9ydCgnLi4vaW50ZXJuYWwnKS5WTm9kZVtdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9DaGlsZEFycmF5KGNoaWxkcmVuLCBvdXQpIHtcblx0b3V0ID0gb3V0IHx8IFtdO1xuXHRpZiAoY2hpbGRyZW4gPT0gbnVsbCB8fCB0eXBlb2YgY2hpbGRyZW4gPT0gJ2Jvb2xlYW4nKSB7XG5cdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcblx0XHRjaGlsZHJlbi5zb21lKGNoaWxkID0+IHtcblx0XHRcdHRvQ2hpbGRBcnJheShjaGlsZCwgb3V0KTtcblx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHRvdXQucHVzaChjaGlsZHJlbik7XG5cdH1cblx0cmV0dXJuIG91dDtcbn1cblxuZnVuY3Rpb24gcGxhY2VDaGlsZChcblx0cGFyZW50RG9tLFxuXHRjaGlsZFZOb2RlLFxuXHRvbGRWTm9kZSxcblx0b2xkQ2hpbGRyZW4sXG5cdG5ld0RvbSxcblx0b2xkRG9tXG4pIHtcblx0bGV0IG5leHREb207XG5cdGlmIChjaGlsZFZOb2RlLl9uZXh0RG9tICE9PSB1bmRlZmluZWQpIHtcblx0XHQvLyBPbmx5IEZyYWdtZW50cyBvciBjb21wb25lbnRzIHRoYXQgcmV0dXJuIEZyYWdtZW50IGxpa2UgVk5vZGVzIHdpbGxcblx0XHQvLyBoYXZlIGEgbm9uLXVuZGVmaW5lZCBfbmV4dERvbS4gQ29udGludWUgdGhlIGRpZmYgZnJvbSB0aGUgc2libGluZ1xuXHRcdC8vIG9mIGxhc3QgRE9NIGNoaWxkIG9mIHRoaXMgY2hpbGQgVk5vZGVcblx0XHRuZXh0RG9tID0gY2hpbGRWTm9kZS5fbmV4dERvbTtcblxuXHRcdC8vIEVhZ2VybHkgY2xlYW51cCBfbmV4dERvbS4gV2UgZG9uJ3QgbmVlZCB0byBwZXJzaXN0IHRoZSB2YWx1ZSBiZWNhdXNlXG5cdFx0Ly8gaXQgaXMgb25seSB1c2VkIGJ5IGBkaWZmQ2hpbGRyZW5gIHRvIGRldGVybWluZSB3aGVyZSB0byByZXN1bWUgdGhlIGRpZmYgYWZ0ZXJcblx0XHQvLyBkaWZmaW5nIENvbXBvbmVudHMgYW5kIEZyYWdtZW50cy4gT25jZSB3ZSBzdG9yZSBpdCB0aGUgbmV4dERPTSBsb2NhbCB2YXIsIHdlXG5cdFx0Ly8gY2FuIGNsZWFuIHVwIHRoZSBwcm9wZXJ0eVxuXHRcdGNoaWxkVk5vZGUuX25leHREb20gPSB1bmRlZmluZWQ7XG5cdH0gZWxzZSBpZiAoXG5cdFx0b2xkVk5vZGUgPT0gbnVsbCB8fFxuXHRcdG5ld0RvbSAhPSBvbGREb20gfHxcblx0XHRuZXdEb20ucGFyZW50Tm9kZSA9PSBudWxsXG5cdCkge1xuXHRcdG91dGVyOiBpZiAob2xkRG9tID09IG51bGwgfHwgb2xkRG9tLnBhcmVudE5vZGUgIT09IHBhcmVudERvbSkge1xuXHRcdFx0cGFyZW50RG9tLmFwcGVuZENoaWxkKG5ld0RvbSk7XG5cdFx0XHRuZXh0RG9tID0gbnVsbDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gYGo8b2xkQ2hpbGRyZW5MZW5ndGg7IGorPTJgIGlzIGFuIGFsdGVybmF0aXZlIHRvIGBqKys8b2xkQ2hpbGRyZW5MZW5ndGgvMmBcblx0XHRcdGZvciAoXG5cdFx0XHRcdGxldCBzaWJEb20gPSBvbGREb20sIGogPSAwO1xuXHRcdFx0XHQoc2liRG9tID0gc2liRG9tLm5leHRTaWJsaW5nKSAmJiBqIDwgb2xkQ2hpbGRyZW4ubGVuZ3RoO1xuXHRcdFx0XHRqICs9IDJcblx0XHRcdCkge1xuXHRcdFx0XHRpZiAoc2liRG9tID09IG5ld0RvbSkge1xuXHRcdFx0XHRcdGJyZWFrIG91dGVyO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRwYXJlbnREb20uaW5zZXJ0QmVmb3JlKG5ld0RvbSwgb2xkRG9tKTtcblx0XHRcdG5leHREb20gPSBvbGREb207XG5cdFx0fVxuXHR9XG5cblx0Ly8gSWYgd2UgaGF2ZSBwcmUtY2FsY3VsYXRlZCB0aGUgbmV4dERPTSBub2RlLCB1c2UgaXQuIEVsc2UgY2FsY3VsYXRlIGl0IG5vd1xuXHQvLyBTdHJpY3RseSBjaGVjayBmb3IgYHVuZGVmaW5lZGAgaGVyZSBjdXogYG51bGxgIGlzIGEgdmFsaWQgdmFsdWUgb2YgYG5leHREb21gLlxuXHQvLyBTZWUgbW9yZSBkZXRhaWwgaW4gY3JlYXRlLWVsZW1lbnQuanM6Y3JlYXRlVk5vZGVcblx0aWYgKG5leHREb20gIT09IHVuZGVmaW5lZCkge1xuXHRcdG9sZERvbSA9IG5leHREb207XG5cdH0gZWxzZSB7XG5cdFx0b2xkRG9tID0gbmV3RG9tLm5leHRTaWJsaW5nO1xuXHR9XG5cblx0cmV0dXJuIG9sZERvbTtcbn1cbiIsICJpbXBvcnQgeyBJU19OT05fRElNRU5TSU9OQUwgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IG9wdGlvbnMgZnJvbSAnLi4vb3B0aW9ucyc7XG5cbi8qKlxuICogRGlmZiB0aGUgb2xkIGFuZCBuZXcgcHJvcGVydGllcyBvZiBhIFZOb2RlIGFuZCBhcHBseSBjaGFuZ2VzIHRvIHRoZSBET00gbm9kZVxuICogQHBhcmFtIHtpbXBvcnQoJy4uL2ludGVybmFsJykuUHJlYWN0RWxlbWVudH0gZG9tIFRoZSBET00gbm9kZSB0byBhcHBseVxuICogY2hhbmdlcyB0b1xuICogQHBhcmFtIHtvYmplY3R9IG5ld1Byb3BzIFRoZSBuZXcgcHJvcHNcbiAqIEBwYXJhbSB7b2JqZWN0fSBvbGRQcm9wcyBUaGUgb2xkIHByb3BzXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGlzU3ZnIFdoZXRoZXIgb3Igbm90IHRoaXMgbm9kZSBpcyBhbiBTVkcgbm9kZVxuICogQHBhcmFtIHtib29sZWFufSBoeWRyYXRlIFdoZXRoZXIgb3Igbm90IHdlIGFyZSBpbiBoeWRyYXRpb24gbW9kZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlmZlByb3BzKGRvbSwgbmV3UHJvcHMsIG9sZFByb3BzLCBpc1N2ZywgaHlkcmF0ZSkge1xuXHRsZXQgaTtcblxuXHRmb3IgKGkgaW4gb2xkUHJvcHMpIHtcblx0XHRpZiAoaSAhPT0gJ2NoaWxkcmVuJyAmJiBpICE9PSAna2V5JyAmJiAhKGkgaW4gbmV3UHJvcHMpKSB7XG5cdFx0XHRzZXRQcm9wZXJ0eShkb20sIGksIG51bGwsIG9sZFByb3BzW2ldLCBpc1N2Zyk7XG5cdFx0fVxuXHR9XG5cblx0Zm9yIChpIGluIG5ld1Byb3BzKSB7XG5cdFx0aWYgKFxuXHRcdFx0KCFoeWRyYXRlIHx8IHR5cGVvZiBuZXdQcm9wc1tpXSA9PSAnZnVuY3Rpb24nKSAmJlxuXHRcdFx0aSAhPT0gJ2NoaWxkcmVuJyAmJlxuXHRcdFx0aSAhPT0gJ2tleScgJiZcblx0XHRcdGkgIT09ICd2YWx1ZScgJiZcblx0XHRcdGkgIT09ICdjaGVja2VkJyAmJlxuXHRcdFx0b2xkUHJvcHNbaV0gIT09IG5ld1Byb3BzW2ldXG5cdFx0KSB7XG5cdFx0XHRzZXRQcm9wZXJ0eShkb20sIGksIG5ld1Byb3BzW2ldLCBvbGRQcm9wc1tpXSwgaXNTdmcpO1xuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiBzZXRTdHlsZShzdHlsZSwga2V5LCB2YWx1ZSkge1xuXHRpZiAoa2V5WzBdID09PSAnLScpIHtcblx0XHRzdHlsZS5zZXRQcm9wZXJ0eShrZXksIHZhbHVlKTtcblx0fSBlbHNlIGlmICh2YWx1ZSA9PSBudWxsKSB7XG5cdFx0c3R5bGVba2V5XSA9ICcnO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSAhPSAnbnVtYmVyJyB8fCBJU19OT05fRElNRU5TSU9OQUwudGVzdChrZXkpKSB7XG5cdFx0c3R5bGVba2V5XSA9IHZhbHVlO1xuXHR9IGVsc2Uge1xuXHRcdHN0eWxlW2tleV0gPSB2YWx1ZSArICdweCc7XG5cdH1cbn1cblxuLyoqXG4gKiBTZXQgYSBwcm9wZXJ0eSB2YWx1ZSBvbiBhIERPTSBub2RlXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi4vaW50ZXJuYWwnKS5QcmVhY3RFbGVtZW50fSBkb20gVGhlIERPTSBub2RlIHRvIG1vZGlmeVxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIHNldFxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0IHRoZSBwcm9wZXJ0eSB0b1xuICogQHBhcmFtIHsqfSBvbGRWYWx1ZSBUaGUgb2xkIHZhbHVlIHRoZSBwcm9wZXJ0eSBoYWRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNTdmcgV2hldGhlciBvciBub3QgdGhpcyBET00gbm9kZSBpcyBhbiBTVkcgbm9kZSBvciBub3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFByb3BlcnR5KGRvbSwgbmFtZSwgdmFsdWUsIG9sZFZhbHVlLCBpc1N2Zykge1xuXHRsZXQgdXNlQ2FwdHVyZTtcblxuXHRvOiBpZiAobmFtZSA9PT0gJ3N0eWxlJykge1xuXHRcdGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycpIHtcblx0XHRcdGRvbS5zdHlsZS5jc3NUZXh0ID0gdmFsdWU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmICh0eXBlb2Ygb2xkVmFsdWUgPT0gJ3N0cmluZycpIHtcblx0XHRcdFx0ZG9tLnN0eWxlLmNzc1RleHQgPSBvbGRWYWx1ZSA9ICcnO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAob2xkVmFsdWUpIHtcblx0XHRcdFx0Zm9yIChuYW1lIGluIG9sZFZhbHVlKSB7XG5cdFx0XHRcdFx0aWYgKCEodmFsdWUgJiYgbmFtZSBpbiB2YWx1ZSkpIHtcblx0XHRcdFx0XHRcdHNldFN0eWxlKGRvbS5zdHlsZSwgbmFtZSwgJycpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAodmFsdWUpIHtcblx0XHRcdFx0Zm9yIChuYW1lIGluIHZhbHVlKSB7XG5cdFx0XHRcdFx0aWYgKCFvbGRWYWx1ZSB8fCB2YWx1ZVtuYW1lXSAhPT0gb2xkVmFsdWVbbmFtZV0pIHtcblx0XHRcdFx0XHRcdHNldFN0eWxlKGRvbS5zdHlsZSwgbmFtZSwgdmFsdWVbbmFtZV0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHQvLyBCZW5jaG1hcmsgZm9yIGNvbXBhcmlzb246IGh0dHBzOi8vZXNiZW5jaC5jb20vYmVuY2gvNTc0Yzk1NGJkYjk2NWI5YTAwOTY1YWM2XG5cdGVsc2UgaWYgKG5hbWVbMF0gPT09ICdvJyAmJiBuYW1lWzFdID09PSAnbicpIHtcblx0XHR1c2VDYXB0dXJlID0gbmFtZSAhPT0gKG5hbWUgPSBuYW1lLnJlcGxhY2UoL0NhcHR1cmUkLywgJycpKTtcblxuXHRcdC8vIEluZmVyIGNvcnJlY3QgY2FzaW5nIGZvciBET00gYnVpbHQtaW4gZXZlbnRzOlxuXHRcdGlmIChuYW1lLnRvTG93ZXJDYXNlKCkgaW4gZG9tKSBuYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpLnNsaWNlKDIpO1xuXHRcdGVsc2UgbmFtZSA9IG5hbWUuc2xpY2UoMik7XG5cblx0XHRpZiAoIWRvbS5fbGlzdGVuZXJzKSBkb20uX2xpc3RlbmVycyA9IHt9O1xuXHRcdGRvbS5fbGlzdGVuZXJzW25hbWUgKyB1c2VDYXB0dXJlXSA9IHZhbHVlO1xuXG5cdFx0aWYgKHZhbHVlKSB7XG5cdFx0XHRpZiAoIW9sZFZhbHVlKSB7XG5cdFx0XHRcdGNvbnN0IGhhbmRsZXIgPSB1c2VDYXB0dXJlID8gZXZlbnRQcm94eUNhcHR1cmUgOiBldmVudFByb3h5O1xuXHRcdFx0XHRkb20uYWRkRXZlbnRMaXN0ZW5lcihuYW1lLCBoYW5kbGVyLCB1c2VDYXB0dXJlKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgaGFuZGxlciA9IHVzZUNhcHR1cmUgPyBldmVudFByb3h5Q2FwdHVyZSA6IGV2ZW50UHJveHk7XG5cdFx0XHRkb20ucmVtb3ZlRXZlbnRMaXN0ZW5lcihuYW1lLCBoYW5kbGVyLCB1c2VDYXB0dXJlKTtcblx0XHR9XG5cdH0gZWxzZSBpZiAobmFtZSAhPT0gJ2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MJykge1xuXHRcdGlmIChpc1N2Zykge1xuXHRcdFx0Ly8gTm9ybWFsaXplIGluY29ycmVjdCBwcm9wIHVzYWdlIGZvciBTVkc6XG5cdFx0XHQvLyAtIHhsaW5rOmhyZWYgLyB4bGlua0hyZWYgLS0+IGhyZWYgKHhsaW5rOmhyZWYgd2FzIHJlbW92ZWQgZnJvbSBTVkcgYW5kIGlzbid0IG5lZWRlZClcblx0XHRcdC8vIC0gY2xhc3NOYW1lIC0tPiBjbGFzc1xuXHRcdFx0bmFtZSA9IG5hbWUucmVwbGFjZSgveGxpbmsoSHw6aCkvLCAnaCcpLnJlcGxhY2UoL3NOYW1lJC8sICdzJyk7XG5cdFx0fSBlbHNlIGlmIChcblx0XHRcdG5hbWUgIT09ICdocmVmJyAmJlxuXHRcdFx0bmFtZSAhPT0gJ2xpc3QnICYmXG5cdFx0XHRuYW1lICE9PSAnZm9ybScgJiZcblx0XHRcdC8vIERlZmF1bHQgdmFsdWUgaW4gYnJvd3NlcnMgaXMgYC0xYCBhbmQgYW4gZW1wdHkgc3RyaW5nIGlzXG5cdFx0XHQvLyBjYXN0IHRvIGAwYCBpbnN0ZWFkXG5cdFx0XHRuYW1lICE9PSAndGFiSW5kZXgnICYmXG5cdFx0XHRuYW1lICE9PSAnZG93bmxvYWQnICYmXG5cdFx0XHRuYW1lIGluIGRvbVxuXHRcdCkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0ZG9tW25hbWVdID0gdmFsdWUgPT0gbnVsbCA/ICcnIDogdmFsdWU7XG5cdFx0XHRcdC8vIGxhYmVsbGVkIGJyZWFrIGlzIDFiIHNtYWxsZXIgaGVyZSB0aGFuIGEgcmV0dXJuIHN0YXRlbWVudCAoc29ycnkpXG5cdFx0XHRcdGJyZWFrIG87XG5cdFx0XHR9IGNhdGNoIChlKSB7fVxuXHRcdH1cblxuXHRcdC8vIEFSSUEtYXR0cmlidXRlcyBoYXZlIGEgZGlmZmVyZW50IG5vdGlvbiBvZiBib29sZWFuIHZhbHVlcy5cblx0XHQvLyBUaGUgdmFsdWUgYGZhbHNlYCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgYXR0cmlidXRlIG5vdFxuXHRcdC8vIGV4aXN0aW5nIG9uIHRoZSBET00sIHNvIHdlIGNhbid0IHJlbW92ZSBpdC4gRm9yIG5vbi1ib29sZWFuXG5cdFx0Ly8gQVJJQS1hdHRyaWJ1dGVzIHdlIGNvdWxkIHRyZWF0IGZhbHNlIGFzIGEgcmVtb3ZhbCwgYnV0IHRoZVxuXHRcdC8vIGFtb3VudCBvZiBleGNlcHRpb25zIHdvdWxkIGNvc3QgdXMgdG9vIG1hbnkgYnl0ZXMuIE9uIHRvcCBvZlxuXHRcdC8vIHRoYXQgb3RoZXIgVkRPTSBmcmFtZXdvcmtzIGFsc28gYWx3YXlzIHN0cmluZ2lmeSBgZmFsc2VgLlxuXG5cdFx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0Ly8gbmV2ZXIgc2VyaWFsaXplIGZ1bmN0aW9ucyBhcyBhdHRyaWJ1dGUgdmFsdWVzXG5cdFx0fSBlbHNlIGlmIChcblx0XHRcdHZhbHVlICE9IG51bGwgJiZcblx0XHRcdCh2YWx1ZSAhPT0gZmFsc2UgfHwgKG5hbWVbMF0gPT09ICdhJyAmJiBuYW1lWzFdID09PSAncicpKVxuXHRcdCkge1xuXHRcdFx0ZG9tLnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGRvbS5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogUHJveHkgYW4gZXZlbnQgdG8gaG9va2VkIGV2ZW50IGhhbmRsZXJzXG4gKiBAcGFyYW0ge0V2ZW50fSBlIFRoZSBldmVudCBvYmplY3QgZnJvbSB0aGUgYnJvd3NlclxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gZXZlbnRQcm94eShlKSB7XG5cdHRoaXMuX2xpc3RlbmVyc1tlLnR5cGUgKyBmYWxzZV0ob3B0aW9ucy5ldmVudCA/IG9wdGlvbnMuZXZlbnQoZSkgOiBlKTtcbn1cblxuZnVuY3Rpb24gZXZlbnRQcm94eUNhcHR1cmUoZSkge1xuXHR0aGlzLl9saXN0ZW5lcnNbZS50eXBlICsgdHJ1ZV0ob3B0aW9ucy5ldmVudCA/IG9wdGlvbnMuZXZlbnQoZSkgOiBlKTtcbn1cbiIsICJpbXBvcnQgeyBFTVBUWV9PQkogfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBnZXREb21TaWJsaW5nIH0gZnJvbSAnLi4vY29tcG9uZW50JztcbmltcG9ydCB7IEZyYWdtZW50IH0gZnJvbSAnLi4vY3JlYXRlLWVsZW1lbnQnO1xuaW1wb3J0IHsgZGlmZkNoaWxkcmVuIH0gZnJvbSAnLi9jaGlsZHJlbic7XG5pbXBvcnQgeyBkaWZmUHJvcHMsIHNldFByb3BlcnR5IH0gZnJvbSAnLi9wcm9wcyc7XG5pbXBvcnQgeyBhc3NpZ24sIHJlbW92ZU5vZGUsIHNsaWNlIH0gZnJvbSAnLi4vdXRpbCc7XG5pbXBvcnQgb3B0aW9ucyBmcm9tICcuLi9vcHRpb25zJztcblxuLyoqXG4gKiBEaWZmIHR3byB2aXJ0dWFsIG5vZGVzIGFuZCBhcHBseSBwcm9wZXIgY2hhbmdlcyB0byB0aGUgRE9NXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi4vaW50ZXJuYWwnKS5QcmVhY3RFbGVtZW50fSBwYXJlbnREb20gVGhlIHBhcmVudCBvZiB0aGUgRE9NIGVsZW1lbnRcbiAqIEBwYXJhbSB7aW1wb3J0KCcuLi9pbnRlcm5hbCcpLlZOb2RlfSBuZXdWTm9kZSBUaGUgbmV3IHZpcnR1YWwgbm9kZVxuICogQHBhcmFtIHtpbXBvcnQoJy4uL2ludGVybmFsJykuVk5vZGV9IG9sZFZOb2RlIFRoZSBvbGQgdmlydHVhbCBub2RlXG4gKiBAcGFyYW0ge29iamVjdH0gZ2xvYmFsQ29udGV4dCBUaGUgY3VycmVudCBjb250ZXh0IG9iamVjdC4gTW9kaWZpZWQgYnkgZ2V0Q2hpbGRDb250ZXh0XG4gKiBAcGFyYW0ge2Jvb2xlYW59IGlzU3ZnIFdoZXRoZXIgb3Igbm90IHRoaXMgZWxlbWVudCBpcyBhbiBTVkcgbm9kZVxuICogQHBhcmFtIHtBcnJheTxpbXBvcnQoJy4uL2ludGVybmFsJykuUHJlYWN0RWxlbWVudD59IGV4Y2Vzc0RvbUNoaWxkcmVuXG4gKiBAcGFyYW0ge0FycmF5PGltcG9ydCgnLi4vaW50ZXJuYWwnKS5Db21wb25lbnQ+fSBjb21taXRRdWV1ZSBMaXN0IG9mIGNvbXBvbmVudHNcbiAqIHdoaWNoIGhhdmUgY2FsbGJhY2tzIHRvIGludm9rZSBpbiBjb21taXRSb290XG4gKiBAcGFyYW0ge2ltcG9ydCgnLi4vaW50ZXJuYWwnKS5QcmVhY3RFbGVtZW50fSBvbGREb20gVGhlIGN1cnJlbnQgYXR0YWNoZWQgRE9NXG4gKiBlbGVtZW50IGFueSBuZXcgZG9tIGVsZW1lbnRzIHNob3VsZCBiZSBwbGFjZWQgYXJvdW5kLiBMaWtlbHkgYG51bGxgIG9uIGZpcnN0XG4gKiByZW5kZXIgKGV4Y2VwdCB3aGVuIGh5ZHJhdGluZykuIENhbiBiZSBhIHNpYmxpbmcgRE9NIGVsZW1lbnQgd2hlbiBkaWZmaW5nXG4gKiBGcmFnbWVudHMgdGhhdCBoYXZlIHNpYmxpbmdzLiBJbiBtb3N0IGNhc2VzLCBpdCBzdGFydHMgb3V0IGFzIGBvbGRDaGlsZHJlblswXS5fZG9tYC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzSHlkcmF0aW5nXSBXaGV0aGVyIG9yIG5vdCB3ZSBhcmUgaW4gaHlkcmF0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWZmKFxuXHRwYXJlbnREb20sXG5cdG5ld1ZOb2RlLFxuXHRvbGRWTm9kZSxcblx0Z2xvYmFsQ29udGV4dCxcblx0aXNTdmcsXG5cdGV4Y2Vzc0RvbUNoaWxkcmVuLFxuXHRjb21taXRRdWV1ZSxcblx0b2xkRG9tLFxuXHRpc0h5ZHJhdGluZ1xuKSB7XG5cdGxldCB0bXAsXG5cdFx0bmV3VHlwZSA9IG5ld1ZOb2RlLnR5cGU7XG5cblx0Ly8gV2hlbiBwYXNzaW5nIHRocm91Z2ggY3JlYXRlRWxlbWVudCBpdCBhc3NpZ25zIHRoZSBvYmplY3Rcblx0Ly8gY29uc3RydWN0b3IgYXMgdW5kZWZpbmVkLiBUaGlzIHRvIHByZXZlbnQgSlNPTi1pbmplY3Rpb24uXG5cdGlmIChuZXdWTm9kZS5jb25zdHJ1Y3RvciAhPT0gdW5kZWZpbmVkKSByZXR1cm4gbnVsbDtcblxuXHQvLyBJZiB0aGUgcHJldmlvdXMgZGlmZiBiYWlsZWQgb3V0LCByZXN1bWUgY3JlYXRpbmcvaHlkcmF0aW5nLlxuXHRpZiAob2xkVk5vZGUuX2h5ZHJhdGluZyAhPSBudWxsKSB7XG5cdFx0aXNIeWRyYXRpbmcgPSBvbGRWTm9kZS5faHlkcmF0aW5nO1xuXHRcdG9sZERvbSA9IG5ld1ZOb2RlLl9kb20gPSBvbGRWTm9kZS5fZG9tO1xuXHRcdC8vIGlmIHdlIHJlc3VtZSwgd2Ugd2FudCB0aGUgdHJlZSB0byBiZSBcInVubG9ja2VkXCJcblx0XHRuZXdWTm9kZS5faHlkcmF0aW5nID0gbnVsbDtcblx0XHRleGNlc3NEb21DaGlsZHJlbiA9IFtvbGREb21dO1xuXHR9XG5cblx0aWYgKCh0bXAgPSBvcHRpb25zLl9kaWZmKSkgdG1wKG5ld1ZOb2RlKTtcblxuXHR0cnkge1xuXHRcdG91dGVyOiBpZiAodHlwZW9mIG5ld1R5cGUgPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0bGV0IGMsIGlzTmV3LCBvbGRQcm9wcywgb2xkU3RhdGUsIHNuYXBzaG90LCBjbGVhclByb2Nlc3NpbmdFeGNlcHRpb247XG5cdFx0XHRsZXQgbmV3UHJvcHMgPSBuZXdWTm9kZS5wcm9wcztcblxuXHRcdFx0Ly8gTmVjZXNzYXJ5IGZvciBjcmVhdGVDb250ZXh0IGFwaS4gU2V0dGluZyB0aGlzIHByb3BlcnR5IHdpbGwgcGFzc1xuXHRcdFx0Ly8gdGhlIGNvbnRleHQgdmFsdWUgYXMgYHRoaXMuY29udGV4dGAganVzdCBmb3IgdGhpcyBjb21wb25lbnQuXG5cdFx0XHR0bXAgPSBuZXdUeXBlLmNvbnRleHRUeXBlO1xuXHRcdFx0bGV0IHByb3ZpZGVyID0gdG1wICYmIGdsb2JhbENvbnRleHRbdG1wLl9pZF07XG5cdFx0XHRsZXQgY29tcG9uZW50Q29udGV4dCA9IHRtcFxuXHRcdFx0XHQ/IHByb3ZpZGVyXG5cdFx0XHRcdFx0PyBwcm92aWRlci5wcm9wcy52YWx1ZVxuXHRcdFx0XHRcdDogdG1wLl9kZWZhdWx0VmFsdWVcblx0XHRcdFx0OiBnbG9iYWxDb250ZXh0O1xuXG5cdFx0XHQvLyBHZXQgY29tcG9uZW50IGFuZCBzZXQgaXQgdG8gYGNgXG5cdFx0XHRpZiAob2xkVk5vZGUuX2NvbXBvbmVudCkge1xuXHRcdFx0XHRjID0gbmV3Vk5vZGUuX2NvbXBvbmVudCA9IG9sZFZOb2RlLl9jb21wb25lbnQ7XG5cdFx0XHRcdGNsZWFyUHJvY2Vzc2luZ0V4Y2VwdGlvbiA9IGMuX3Byb2Nlc3NpbmdFeGNlcHRpb24gPSBjLl9wZW5kaW5nRXJyb3I7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBJbnN0YW50aWF0ZSB0aGUgbmV3IGNvbXBvbmVudFxuXHRcdFx0XHRpZiAoJ3Byb3RvdHlwZScgaW4gbmV3VHlwZSAmJiBuZXdUeXBlLnByb3RvdHlwZS5yZW5kZXIpIHtcblx0XHRcdFx0XHQvLyBAdHMtaWdub3JlIFRoZSBjaGVjayBhYm92ZSB2ZXJpZmllcyB0aGF0IG5ld1R5cGUgaXMgc3VwcG9zZSB0byBiZSBjb25zdHJ1Y3RlZFxuXHRcdFx0XHRcdG5ld1ZOb2RlLl9jb21wb25lbnQgPSBjID0gbmV3IG5ld1R5cGUobmV3UHJvcHMsIGNvbXBvbmVudENvbnRleHQpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5ldy1jYXBcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBAdHMtaWdub3JlIFRydXN0IG1lLCBDb21wb25lbnQgaW1wbGVtZW50cyB0aGUgaW50ZXJmYWNlIHdlIHdhbnRcblx0XHRcdFx0XHRuZXdWTm9kZS5fY29tcG9uZW50ID0gYyA9IG5ldyBDb21wb25lbnQobmV3UHJvcHMsIGNvbXBvbmVudENvbnRleHQpO1xuXHRcdFx0XHRcdGMuY29uc3RydWN0b3IgPSBuZXdUeXBlO1xuXHRcdFx0XHRcdGMucmVuZGVyID0gZG9SZW5kZXI7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHByb3ZpZGVyKSBwcm92aWRlci5zdWIoYyk7XG5cblx0XHRcdFx0Yy5wcm9wcyA9IG5ld1Byb3BzO1xuXHRcdFx0XHRpZiAoIWMuc3RhdGUpIGMuc3RhdGUgPSB7fTtcblx0XHRcdFx0Yy5jb250ZXh0ID0gY29tcG9uZW50Q29udGV4dDtcblx0XHRcdFx0Yy5fZ2xvYmFsQ29udGV4dCA9IGdsb2JhbENvbnRleHQ7XG5cdFx0XHRcdGlzTmV3ID0gYy5fZGlydHkgPSB0cnVlO1xuXHRcdFx0XHRjLl9yZW5kZXJDYWxsYmFja3MgPSBbXTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSW52b2tlIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc1xuXHRcdFx0aWYgKGMuX25leHRTdGF0ZSA9PSBudWxsKSB7XG5cdFx0XHRcdGMuX25leHRTdGF0ZSA9IGMuc3RhdGU7XG5cdFx0XHR9XG5cdFx0XHRpZiAobmV3VHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMgIT0gbnVsbCkge1xuXHRcdFx0XHRpZiAoYy5fbmV4dFN0YXRlID09IGMuc3RhdGUpIHtcblx0XHRcdFx0XHRjLl9uZXh0U3RhdGUgPSBhc3NpZ24oe30sIGMuX25leHRTdGF0ZSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRhc3NpZ24oXG5cdFx0XHRcdFx0Yy5fbmV4dFN0YXRlLFxuXHRcdFx0XHRcdG5ld1R5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKG5ld1Byb3BzLCBjLl9uZXh0U3RhdGUpXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cblx0XHRcdG9sZFByb3BzID0gYy5wcm9wcztcblx0XHRcdG9sZFN0YXRlID0gYy5zdGF0ZTtcblxuXHRcdFx0Ly8gSW52b2tlIHByZS1yZW5kZXIgbGlmZWN5Y2xlIG1ldGhvZHNcblx0XHRcdGlmIChpc05ldykge1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0bmV3VHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMgPT0gbnVsbCAmJlxuXHRcdFx0XHRcdGMuY29tcG9uZW50V2lsbE1vdW50ICE9IG51bGxcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0Yy5jb21wb25lbnRXaWxsTW91bnQoKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChjLmNvbXBvbmVudERpZE1vdW50ICE9IG51bGwpIHtcblx0XHRcdFx0XHRjLl9yZW5kZXJDYWxsYmFja3MucHVzaChjLmNvbXBvbmVudERpZE1vdW50KTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdG5ld1R5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzID09IG51bGwgJiZcblx0XHRcdFx0XHRuZXdQcm9wcyAhPT0gb2xkUHJvcHMgJiZcblx0XHRcdFx0XHRjLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgIT0gbnVsbFxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRjLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV3UHJvcHMsIGNvbXBvbmVudENvbnRleHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdCghYy5fZm9yY2UgJiZcblx0XHRcdFx0XHRcdGMuc2hvdWxkQ29tcG9uZW50VXBkYXRlICE9IG51bGwgJiZcblx0XHRcdFx0XHRcdGMuc2hvdWxkQ29tcG9uZW50VXBkYXRlKFxuXHRcdFx0XHRcdFx0XHRuZXdQcm9wcyxcblx0XHRcdFx0XHRcdFx0Yy5fbmV4dFN0YXRlLFxuXHRcdFx0XHRcdFx0XHRjb21wb25lbnRDb250ZXh0XG5cdFx0XHRcdFx0XHQpID09PSBmYWxzZSkgfHxcblx0XHRcdFx0XHRuZXdWTm9kZS5fb3JpZ2luYWwgPT09IG9sZFZOb2RlLl9vcmlnaW5hbFxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRjLnByb3BzID0gbmV3UHJvcHM7XG5cdFx0XHRcdFx0Yy5zdGF0ZSA9IGMuX25leHRTdGF0ZTtcblx0XHRcdFx0XHQvLyBNb3JlIGluZm8gYWJvdXQgdGhpcyBoZXJlOiBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9Kb3ZpRGVDcm9vY2svYmVjNWYyY2U5MzU0NGQyZTYwNzBlZjhlMDAzNmU0ZThcblx0XHRcdFx0XHRpZiAobmV3Vk5vZGUuX29yaWdpbmFsICE9PSBvbGRWTm9kZS5fb3JpZ2luYWwpIGMuX2RpcnR5ID0gZmFsc2U7XG5cdFx0XHRcdFx0Yy5fdm5vZGUgPSBuZXdWTm9kZTtcblx0XHRcdFx0XHRuZXdWTm9kZS5fZG9tID0gb2xkVk5vZGUuX2RvbTtcblx0XHRcdFx0XHRuZXdWTm9kZS5fY2hpbGRyZW4gPSBvbGRWTm9kZS5fY2hpbGRyZW47XG5cdFx0XHRcdFx0bmV3Vk5vZGUuX2NoaWxkcmVuLmZvckVhY2godm5vZGUgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKHZub2RlKSB2bm9kZS5fcGFyZW50ID0gbmV3Vk5vZGU7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0aWYgKGMuX3JlbmRlckNhbGxiYWNrcy5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdGNvbW1pdFF1ZXVlLnB1c2goYyk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0YnJlYWsgb3V0ZXI7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoYy5jb21wb25lbnRXaWxsVXBkYXRlICE9IG51bGwpIHtcblx0XHRcdFx0XHRjLmNvbXBvbmVudFdpbGxVcGRhdGUobmV3UHJvcHMsIGMuX25leHRTdGF0ZSwgY29tcG9uZW50Q29udGV4dCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoYy5jb21wb25lbnREaWRVcGRhdGUgIT0gbnVsbCkge1xuXHRcdFx0XHRcdGMuX3JlbmRlckNhbGxiYWNrcy5wdXNoKCgpID0+IHtcblx0XHRcdFx0XHRcdGMuY29tcG9uZW50RGlkVXBkYXRlKG9sZFByb3BzLCBvbGRTdGF0ZSwgc25hcHNob3QpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGMuY29udGV4dCA9IGNvbXBvbmVudENvbnRleHQ7XG5cdFx0XHRjLnByb3BzID0gbmV3UHJvcHM7XG5cdFx0XHRjLl92bm9kZSA9IG5ld1ZOb2RlO1xuXHRcdFx0Yy5fcGFyZW50RG9tID0gcGFyZW50RG9tO1xuXG5cdFx0XHRsZXQgcmVuZGVySG9vayA9IG9wdGlvbnMuX3JlbmRlcixcblx0XHRcdFx0Y291bnQgPSAwO1xuXHRcdFx0aWYgKCdwcm90b3R5cGUnIGluIG5ld1R5cGUgJiYgbmV3VHlwZS5wcm90b3R5cGUucmVuZGVyKSB7XG5cdFx0XHRcdGMuc3RhdGUgPSBjLl9uZXh0U3RhdGU7XG5cdFx0XHRcdGMuX2RpcnR5ID0gZmFsc2U7XG5cblx0XHRcdFx0aWYgKHJlbmRlckhvb2spIHJlbmRlckhvb2sobmV3Vk5vZGUpO1xuXG5cdFx0XHRcdHRtcCA9IGMucmVuZGVyKGMucHJvcHMsIGMuc3RhdGUsIGMuY29udGV4dCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRkbyB7XG5cdFx0XHRcdFx0Yy5fZGlydHkgPSBmYWxzZTtcblx0XHRcdFx0XHRpZiAocmVuZGVySG9vaykgcmVuZGVySG9vayhuZXdWTm9kZSk7XG5cblx0XHRcdFx0XHR0bXAgPSBjLnJlbmRlcihjLnByb3BzLCBjLnN0YXRlLCBjLmNvbnRleHQpO1xuXG5cdFx0XHRcdFx0Ly8gSGFuZGxlIHNldFN0YXRlIGNhbGxlZCBpbiByZW5kZXIsIHNlZSAjMjU1M1xuXHRcdFx0XHRcdGMuc3RhdGUgPSBjLl9uZXh0U3RhdGU7XG5cdFx0XHRcdH0gd2hpbGUgKGMuX2RpcnR5ICYmICsrY291bnQgPCAyNSk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEhhbmRsZSBzZXRTdGF0ZSBjYWxsZWQgaW4gcmVuZGVyLCBzZWUgIzI1NTNcblx0XHRcdGMuc3RhdGUgPSBjLl9uZXh0U3RhdGU7XG5cblx0XHRcdGlmIChjLmdldENoaWxkQ29udGV4dCAhPSBudWxsKSB7XG5cdFx0XHRcdGdsb2JhbENvbnRleHQgPSBhc3NpZ24oYXNzaWduKHt9LCBnbG9iYWxDb250ZXh0KSwgYy5nZXRDaGlsZENvbnRleHQoKSk7XG5cdFx0XHR9XG5cblx0XHRcdGlmICghaXNOZXcgJiYgYy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSAhPSBudWxsKSB7XG5cdFx0XHRcdHNuYXBzaG90ID0gYy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZShvbGRQcm9wcywgb2xkU3RhdGUpO1xuXHRcdFx0fVxuXG5cdFx0XHRsZXQgaXNUb3BMZXZlbEZyYWdtZW50ID1cblx0XHRcdFx0dG1wICE9IG51bGwgJiYgdG1wLnR5cGUgPT09IEZyYWdtZW50ICYmIHRtcC5rZXkgPT0gbnVsbDtcblx0XHRcdGxldCByZW5kZXJSZXN1bHQgPSBpc1RvcExldmVsRnJhZ21lbnQgPyB0bXAucHJvcHMuY2hpbGRyZW4gOiB0bXA7XG5cblx0XHRcdGRpZmZDaGlsZHJlbihcblx0XHRcdFx0cGFyZW50RG9tLFxuXHRcdFx0XHRBcnJheS5pc0FycmF5KHJlbmRlclJlc3VsdCkgPyByZW5kZXJSZXN1bHQgOiBbcmVuZGVyUmVzdWx0XSxcblx0XHRcdFx0bmV3Vk5vZGUsXG5cdFx0XHRcdG9sZFZOb2RlLFxuXHRcdFx0XHRnbG9iYWxDb250ZXh0LFxuXHRcdFx0XHRpc1N2Zyxcblx0XHRcdFx0ZXhjZXNzRG9tQ2hpbGRyZW4sXG5cdFx0XHRcdGNvbW1pdFF1ZXVlLFxuXHRcdFx0XHRvbGREb20sXG5cdFx0XHRcdGlzSHlkcmF0aW5nXG5cdFx0XHQpO1xuXG5cdFx0XHRjLmJhc2UgPSBuZXdWTm9kZS5fZG9tO1xuXG5cdFx0XHQvLyBXZSBzdWNjZXNzZnVsbHkgcmVuZGVyZWQgdGhpcyBWTm9kZSwgdW5zZXQgYW55IHN0b3JlZCBoeWRyYXRpb24vYmFpbG91dCBzdGF0ZTpcblx0XHRcdG5ld1ZOb2RlLl9oeWRyYXRpbmcgPSBudWxsO1xuXG5cdFx0XHRpZiAoYy5fcmVuZGVyQ2FsbGJhY2tzLmxlbmd0aCkge1xuXHRcdFx0XHRjb21taXRRdWV1ZS5wdXNoKGMpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoY2xlYXJQcm9jZXNzaW5nRXhjZXB0aW9uKSB7XG5cdFx0XHRcdGMuX3BlbmRpbmdFcnJvciA9IGMuX3Byb2Nlc3NpbmdFeGNlcHRpb24gPSBudWxsO1xuXHRcdFx0fVxuXG5cdFx0XHRjLl9mb3JjZSA9IGZhbHNlO1xuXHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRleGNlc3NEb21DaGlsZHJlbiA9PSBudWxsICYmXG5cdFx0XHRuZXdWTm9kZS5fb3JpZ2luYWwgPT09IG9sZFZOb2RlLl9vcmlnaW5hbFxuXHRcdCkge1xuXHRcdFx0bmV3Vk5vZGUuX2NoaWxkcmVuID0gb2xkVk5vZGUuX2NoaWxkcmVuO1xuXHRcdFx0bmV3Vk5vZGUuX2RvbSA9IG9sZFZOb2RlLl9kb207XG5cdFx0fSBlbHNlIHtcblx0XHRcdG5ld1ZOb2RlLl9kb20gPSBkaWZmRWxlbWVudE5vZGVzKFxuXHRcdFx0XHRvbGRWTm9kZS5fZG9tLFxuXHRcdFx0XHRuZXdWTm9kZSxcblx0XHRcdFx0b2xkVk5vZGUsXG5cdFx0XHRcdGdsb2JhbENvbnRleHQsXG5cdFx0XHRcdGlzU3ZnLFxuXHRcdFx0XHRleGNlc3NEb21DaGlsZHJlbixcblx0XHRcdFx0Y29tbWl0UXVldWUsXG5cdFx0XHRcdGlzSHlkcmF0aW5nXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdGlmICgodG1wID0gb3B0aW9ucy5kaWZmZWQpKSB0bXAobmV3Vk5vZGUpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0bmV3Vk5vZGUuX29yaWdpbmFsID0gbnVsbDtcblx0XHQvLyBpZiBoeWRyYXRpbmcgb3IgY3JlYXRpbmcgaW5pdGlhbCB0cmVlLCBiYWlsb3V0IHByZXNlcnZlcyBET006XG5cdFx0aWYgKGlzSHlkcmF0aW5nIHx8IGV4Y2Vzc0RvbUNoaWxkcmVuICE9IG51bGwpIHtcblx0XHRcdG5ld1ZOb2RlLl9kb20gPSBvbGREb207XG5cdFx0XHRuZXdWTm9kZS5faHlkcmF0aW5nID0gISFpc0h5ZHJhdGluZztcblx0XHRcdGV4Y2Vzc0RvbUNoaWxkcmVuW2V4Y2Vzc0RvbUNoaWxkcmVuLmluZGV4T2Yob2xkRG9tKV0gPSBudWxsO1xuXHRcdFx0Ly8gXiBjb3VsZCBwb3NzaWJseSBiZSBzaW1wbGlmaWVkIHRvOlxuXHRcdFx0Ly8gZXhjZXNzRG9tQ2hpbGRyZW4ubGVuZ3RoID0gMDtcblx0XHR9XG5cdFx0b3B0aW9ucy5fY2F0Y2hFcnJvcihlLCBuZXdWTm9kZSwgb2xkVk5vZGUpO1xuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtBcnJheTxpbXBvcnQoJy4uL2ludGVybmFsJykuQ29tcG9uZW50Pn0gY29tbWl0UXVldWUgTGlzdCBvZiBjb21wb25lbnRzXG4gKiB3aGljaCBoYXZlIGNhbGxiYWNrcyB0byBpbnZva2UgaW4gY29tbWl0Um9vdFxuICogQHBhcmFtIHtpbXBvcnQoJy4uL2ludGVybmFsJykuVk5vZGV9IHJvb3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbW1pdFJvb3QoY29tbWl0UXVldWUsIHJvb3QpIHtcblx0aWYgKG9wdGlvbnMuX2NvbW1pdCkgb3B0aW9ucy5fY29tbWl0KHJvb3QsIGNvbW1pdFF1ZXVlKTtcblxuXHRjb21taXRRdWV1ZS5zb21lKGMgPT4ge1xuXHRcdHRyeSB7XG5cdFx0XHQvLyBAdHMtaWdub3JlIFJldXNlIHRoZSBjb21taXRRdWV1ZSB2YXJpYWJsZSBoZXJlIHNvIHRoZSB0eXBlIGNoYW5nZXNcblx0XHRcdGNvbW1pdFF1ZXVlID0gYy5fcmVuZGVyQ2FsbGJhY2tzO1xuXHRcdFx0Yy5fcmVuZGVyQ2FsbGJhY2tzID0gW107XG5cdFx0XHRjb21taXRRdWV1ZS5zb21lKGNiID0+IHtcblx0XHRcdFx0Ly8gQHRzLWlnbm9yZSBTZWUgYWJvdmUgdHMtaWdub3JlIG9uIGNvbW1pdFF1ZXVlXG5cdFx0XHRcdGNiLmNhbGwoYyk7XG5cdFx0XHR9KTtcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRvcHRpb25zLl9jYXRjaEVycm9yKGUsIGMuX3Zub2RlKTtcblx0XHR9XG5cdH0pO1xufVxuXG4vKipcbiAqIERpZmYgdHdvIHZpcnR1YWwgbm9kZXMgcmVwcmVzZW50aW5nIERPTSBlbGVtZW50XG4gKiBAcGFyYW0ge2ltcG9ydCgnLi4vaW50ZXJuYWwnKS5QcmVhY3RFbGVtZW50fSBkb20gVGhlIERPTSBlbGVtZW50IHJlcHJlc2VudGluZ1xuICogdGhlIHZpcnR1YWwgbm9kZXMgYmVpbmcgZGlmZmVkXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi4vaW50ZXJuYWwnKS5WTm9kZX0gbmV3Vk5vZGUgVGhlIG5ldyB2aXJ0dWFsIG5vZGVcbiAqIEBwYXJhbSB7aW1wb3J0KCcuLi9pbnRlcm5hbCcpLlZOb2RlfSBvbGRWTm9kZSBUaGUgb2xkIHZpcnR1YWwgbm9kZVxuICogQHBhcmFtIHtvYmplY3R9IGdsb2JhbENvbnRleHQgVGhlIGN1cnJlbnQgY29udGV4dCBvYmplY3RcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNTdmcgV2hldGhlciBvciBub3QgdGhpcyBET00gbm9kZSBpcyBhbiBTVkcgbm9kZVxuICogQHBhcmFtIHsqfSBleGNlc3NEb21DaGlsZHJlblxuICogQHBhcmFtIHtBcnJheTxpbXBvcnQoJy4uL2ludGVybmFsJykuQ29tcG9uZW50Pn0gY29tbWl0UXVldWUgTGlzdCBvZiBjb21wb25lbnRzXG4gKiB3aGljaCBoYXZlIGNhbGxiYWNrcyB0byBpbnZva2UgaW4gY29tbWl0Um9vdFxuICogQHBhcmFtIHtib29sZWFufSBpc0h5ZHJhdGluZyBXaGV0aGVyIG9yIG5vdCB3ZSBhcmUgaW4gaHlkcmF0aW9uXG4gKiBAcmV0dXJucyB7aW1wb3J0KCcuLi9pbnRlcm5hbCcpLlByZWFjdEVsZW1lbnR9XG4gKi9cbmZ1bmN0aW9uIGRpZmZFbGVtZW50Tm9kZXMoXG5cdGRvbSxcblx0bmV3Vk5vZGUsXG5cdG9sZFZOb2RlLFxuXHRnbG9iYWxDb250ZXh0LFxuXHRpc1N2Zyxcblx0ZXhjZXNzRG9tQ2hpbGRyZW4sXG5cdGNvbW1pdFF1ZXVlLFxuXHRpc0h5ZHJhdGluZ1xuKSB7XG5cdGxldCBvbGRQcm9wcyA9IG9sZFZOb2RlLnByb3BzO1xuXHRsZXQgbmV3UHJvcHMgPSBuZXdWTm9kZS5wcm9wcztcblx0bGV0IG5vZGVUeXBlID0gbmV3Vk5vZGUudHlwZTtcblx0bGV0IGkgPSAwO1xuXG5cdC8vIFRyYWNrcyBlbnRlcmluZyBhbmQgZXhpdGluZyBTVkcgbmFtZXNwYWNlIHdoZW4gZGVzY2VuZGluZyB0aHJvdWdoIHRoZSB0cmVlLlxuXHRpZiAobm9kZVR5cGUgPT09ICdzdmcnKSBpc1N2ZyA9IHRydWU7XG5cblx0aWYgKGV4Y2Vzc0RvbUNoaWxkcmVuICE9IG51bGwpIHtcblx0XHRmb3IgKDsgaSA8IGV4Y2Vzc0RvbUNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRjb25zdCBjaGlsZCA9IGV4Y2Vzc0RvbUNoaWxkcmVuW2ldO1xuXG5cdFx0XHQvLyBpZiBuZXdWTm9kZSBtYXRjaGVzIGFuIGVsZW1lbnQgaW4gZXhjZXNzRG9tQ2hpbGRyZW4gb3IgdGhlIGBkb21gXG5cdFx0XHQvLyBhcmd1bWVudCBtYXRjaGVzIGFuIGVsZW1lbnQgaW4gZXhjZXNzRG9tQ2hpbGRyZW4sIHJlbW92ZSBpdCBmcm9tXG5cdFx0XHQvLyBleGNlc3NEb21DaGlsZHJlbiBzbyBpdCBpc24ndCBsYXRlciByZW1vdmVkIGluIGRpZmZDaGlsZHJlblxuXHRcdFx0aWYgKFxuXHRcdFx0XHRjaGlsZCAmJlxuXHRcdFx0XHQnc2V0QXR0cmlidXRlJyBpbiBjaGlsZCA9PT0gISFub2RlVHlwZSAmJlxuXHRcdFx0XHQobm9kZVR5cGUgPyBjaGlsZC5sb2NhbE5hbWUgPT09IG5vZGVUeXBlIDogY2hpbGQubm9kZVR5cGUgPT09IDMpXG5cdFx0XHQpIHtcblx0XHRcdFx0ZG9tID0gY2hpbGQ7XG5cdFx0XHRcdGV4Y2Vzc0RvbUNoaWxkcmVuW2ldID0gbnVsbDtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0aWYgKGRvbSA9PSBudWxsKSB7XG5cdFx0aWYgKG5vZGVUeXBlID09PSBudWxsKSB7XG5cdFx0XHQvLyBAdHMtaWdub3JlIGNyZWF0ZVRleHROb2RlIHJldHVybnMgVGV4dCwgd2UgZXhwZWN0IFByZWFjdEVsZW1lbnRcblx0XHRcdHJldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShuZXdQcm9wcyk7XG5cdFx0fVxuXG5cdFx0aWYgKGlzU3ZnKSB7XG5cdFx0XHRkb20gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoXG5cdFx0XHRcdCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsXG5cdFx0XHRcdC8vIEB0cy1pZ25vcmUgV2Uga25vdyBgbmV3Vk5vZGUudHlwZWAgaXMgYSBzdHJpbmdcblx0XHRcdFx0bm9kZVR5cGVcblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGRvbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdC8vIEB0cy1pZ25vcmUgV2Uga25vdyBgbmV3Vk5vZGUudHlwZWAgaXMgYSBzdHJpbmdcblx0XHRcdFx0bm9kZVR5cGUsXG5cdFx0XHRcdG5ld1Byb3BzLmlzICYmIG5ld1Byb3BzXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdC8vIHdlIGNyZWF0ZWQgYSBuZXcgcGFyZW50LCBzbyBub25lIG9mIHRoZSBwcmV2aW91c2x5IGF0dGFjaGVkIGNoaWxkcmVuIGNhbiBiZSByZXVzZWQ6XG5cdFx0ZXhjZXNzRG9tQ2hpbGRyZW4gPSBudWxsO1xuXHRcdC8vIHdlIGFyZSBjcmVhdGluZyBhIG5ldyBub2RlLCBzbyB3ZSBjYW4gYXNzdW1lIHRoaXMgaXMgYSBuZXcgc3VidHJlZSAoaW4gY2FzZSB3ZSBhcmUgaHlkcmF0aW5nKSwgdGhpcyBkZW9wdHMgdGhlIGh5ZHJhdGVcblx0XHRpc0h5ZHJhdGluZyA9IGZhbHNlO1xuXHR9XG5cblx0aWYgKG5vZGVUeXBlID09PSBudWxsKSB7XG5cdFx0Ly8gRHVyaW5nIGh5ZHJhdGlvbiwgd2Ugc3RpbGwgaGF2ZSB0byBzcGxpdCBtZXJnZWQgdGV4dCBmcm9tIFNTUidkIEhUTUwuXG5cdFx0aWYgKG9sZFByb3BzICE9PSBuZXdQcm9wcyAmJiAoIWlzSHlkcmF0aW5nIHx8IGRvbS5kYXRhICE9PSBuZXdQcm9wcykpIHtcblx0XHRcdGRvbS5kYXRhID0gbmV3UHJvcHM7XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdC8vIElmIGV4Y2Vzc0RvbUNoaWxkcmVuIHdhcyBub3QgbnVsbCwgcmVwb3B1bGF0ZSBpdCB3aXRoIHRoZSBjdXJyZW50IGVsZW1lbnQncyBjaGlsZHJlbjpcblx0XHRleGNlc3NEb21DaGlsZHJlbiA9IGV4Y2Vzc0RvbUNoaWxkcmVuICYmIHNsaWNlLmNhbGwoZG9tLmNoaWxkTm9kZXMpO1xuXG5cdFx0b2xkUHJvcHMgPSBvbGRWTm9kZS5wcm9wcyB8fCBFTVBUWV9PQko7XG5cblx0XHRsZXQgb2xkSHRtbCA9IG9sZFByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MO1xuXHRcdGxldCBuZXdIdG1sID0gbmV3UHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw7XG5cblx0XHQvLyBEdXJpbmcgaHlkcmF0aW9uLCBwcm9wcyBhcmUgbm90IGRpZmZlZCBhdCBhbGwgKGluY2x1ZGluZyBkYW5nZXJvdXNseVNldElubmVySFRNTClcblx0XHQvLyBAVE9ETyB3ZSBzaG91bGQgd2FybiBpbiBkZWJ1ZyBtb2RlIHdoZW4gcHJvcHMgZG9uJ3QgbWF0Y2ggaGVyZS5cblx0XHRpZiAoIWlzSHlkcmF0aW5nKSB7XG5cdFx0XHQvLyBCdXQsIGlmIHdlIGFyZSBpbiBhIHNpdHVhdGlvbiB3aGVyZSB3ZSBhcmUgdXNpbmcgZXhpc3RpbmcgRE9NIChlLmcuIHJlcGxhY2VOb2RlKVxuXHRcdFx0Ly8gd2Ugc2hvdWxkIHJlYWQgdGhlIGV4aXN0aW5nIERPTSBhdHRyaWJ1dGVzIHRvIGRpZmYgdGhlbVxuXHRcdFx0aWYgKGV4Y2Vzc0RvbUNoaWxkcmVuICE9IG51bGwpIHtcblx0XHRcdFx0b2xkUHJvcHMgPSB7fTtcblx0XHRcdFx0Zm9yIChpID0gMDsgaSA8IGRvbS5hdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0b2xkUHJvcHNbZG9tLmF0dHJpYnV0ZXNbaV0ubmFtZV0gPSBkb20uYXR0cmlidXRlc1tpXS52YWx1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAobmV3SHRtbCB8fCBvbGRIdG1sKSB7XG5cdFx0XHRcdC8vIEF2b2lkIHJlLWFwcGx5aW5nIHRoZSBzYW1lICdfX2h0bWwnIGlmIGl0IGRpZCBub3QgY2hhbmdlZCBiZXR3ZWVuIHJlLXJlbmRlclxuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0IW5ld0h0bWwgfHxcblx0XHRcdFx0XHQoKCFvbGRIdG1sIHx8IG5ld0h0bWwuX19odG1sICE9IG9sZEh0bWwuX19odG1sKSAmJlxuXHRcdFx0XHRcdFx0bmV3SHRtbC5fX2h0bWwgIT09IGRvbS5pbm5lckhUTUwpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGRvbS5pbm5lckhUTUwgPSAobmV3SHRtbCAmJiBuZXdIdG1sLl9faHRtbCkgfHwgJyc7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRkaWZmUHJvcHMoZG9tLCBuZXdQcm9wcywgb2xkUHJvcHMsIGlzU3ZnLCBpc0h5ZHJhdGluZyk7XG5cblx0XHQvLyBJZiB0aGUgbmV3IHZub2RlIGRpZG4ndCBoYXZlIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLCBkaWZmIGl0cyBjaGlsZHJlblxuXHRcdGlmIChuZXdIdG1sKSB7XG5cdFx0XHRuZXdWTm9kZS5fY2hpbGRyZW4gPSBbXTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aSA9IG5ld1ZOb2RlLnByb3BzLmNoaWxkcmVuO1xuXHRcdFx0ZGlmZkNoaWxkcmVuKFxuXHRcdFx0XHRkb20sXG5cdFx0XHRcdEFycmF5LmlzQXJyYXkoaSkgPyBpIDogW2ldLFxuXHRcdFx0XHRuZXdWTm9kZSxcblx0XHRcdFx0b2xkVk5vZGUsXG5cdFx0XHRcdGdsb2JhbENvbnRleHQsXG5cdFx0XHRcdGlzU3ZnICYmIG5vZGVUeXBlICE9PSAnZm9yZWlnbk9iamVjdCcsXG5cdFx0XHRcdGV4Y2Vzc0RvbUNoaWxkcmVuLFxuXHRcdFx0XHRjb21taXRRdWV1ZSxcblx0XHRcdFx0ZXhjZXNzRG9tQ2hpbGRyZW5cblx0XHRcdFx0XHQ/IGV4Y2Vzc0RvbUNoaWxkcmVuWzBdXG5cdFx0XHRcdFx0OiBvbGRWTm9kZS5fY2hpbGRyZW4gJiYgZ2V0RG9tU2libGluZyhvbGRWTm9kZSwgMCksXG5cdFx0XHRcdGlzSHlkcmF0aW5nXG5cdFx0XHQpO1xuXG5cdFx0XHQvLyBSZW1vdmUgY2hpbGRyZW4gdGhhdCBhcmUgbm90IHBhcnQgb2YgYW55IHZub2RlLlxuXHRcdFx0aWYgKGV4Y2Vzc0RvbUNoaWxkcmVuICE9IG51bGwpIHtcblx0XHRcdFx0Zm9yIChpID0gZXhjZXNzRG9tQ2hpbGRyZW4ubGVuZ3RoOyBpLS07ICkge1xuXHRcdFx0XHRcdGlmIChleGNlc3NEb21DaGlsZHJlbltpXSAhPSBudWxsKSByZW1vdmVOb2RlKGV4Y2Vzc0RvbUNoaWxkcmVuW2ldKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIChhcyBhYm92ZSwgZG9uJ3QgZGlmZiBwcm9wcyBkdXJpbmcgaHlkcmF0aW9uKVxuXHRcdGlmICghaXNIeWRyYXRpbmcpIHtcblx0XHRcdGlmIChcblx0XHRcdFx0J3ZhbHVlJyBpbiBuZXdQcm9wcyAmJlxuXHRcdFx0XHQoaSA9IG5ld1Byb3BzLnZhbHVlKSAhPT0gdW5kZWZpbmVkICYmXG5cdFx0XHRcdC8vICMyNzU2IEZvciB0aGUgPHByb2dyZXNzPi1lbGVtZW50IHRoZSBpbml0aWFsIHZhbHVlIGlzIDAsXG5cdFx0XHRcdC8vIGRlc3BpdGUgdGhlIGF0dHJpYnV0ZSBub3QgYmVpbmcgcHJlc2VudC4gV2hlbiB0aGUgYXR0cmlidXRlXG5cdFx0XHRcdC8vIGlzIG1pc3NpbmcgdGhlIHByb2dyZXNzIGJhciBpcyB0cmVhdGVkIGFzIGluZGV0ZXJtaW5hdGUuXG5cdFx0XHRcdC8vIFRvIGZpeCB0aGF0IHdlJ2xsIGFsd2F5cyB1cGRhdGUgaXQgd2hlbiBpdCBpcyAwIGZvciBwcm9ncmVzcyBlbGVtZW50c1xuXHRcdFx0XHQoaSAhPT0gZG9tLnZhbHVlIHx8XG5cdFx0XHRcdFx0KG5vZGVUeXBlID09PSAncHJvZ3Jlc3MnICYmICFpKSB8fFxuXHRcdFx0XHRcdC8vIFRoaXMgaXMgb25seSBmb3IgSUUgMTEgdG8gZml4IDxzZWxlY3Q+IHZhbHVlIG5vdCBiZWluZyB1cGRhdGVkLlxuXHRcdFx0XHRcdC8vIFRvIGF2b2lkIGEgc3RhbGUgc2VsZWN0IHZhbHVlIHdlIG5lZWQgdG8gc2V0IHRoZSBvcHRpb24udmFsdWVcblx0XHRcdFx0XHQvLyBhZ2Fpbiwgd2hpY2ggdHJpZ2dlcnMgSUUxMSB0byByZS1ldmFsdWF0ZSB0aGUgc2VsZWN0IHZhbHVlXG5cdFx0XHRcdFx0KG5vZGVUeXBlID09PSAnb3B0aW9uJyAmJiBpICE9PSBvbGRQcm9wcy52YWx1ZSkpXG5cdFx0XHQpIHtcblx0XHRcdFx0c2V0UHJvcGVydHkoZG9tLCAndmFsdWUnLCBpLCBvbGRQcm9wcy52YWx1ZSwgZmFsc2UpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKFxuXHRcdFx0XHQnY2hlY2tlZCcgaW4gbmV3UHJvcHMgJiZcblx0XHRcdFx0KGkgPSBuZXdQcm9wcy5jaGVja2VkKSAhPT0gdW5kZWZpbmVkICYmXG5cdFx0XHRcdGkgIT09IGRvbS5jaGVja2VkXG5cdFx0XHQpIHtcblx0XHRcdFx0c2V0UHJvcGVydHkoZG9tLCAnY2hlY2tlZCcsIGksIG9sZFByb3BzLmNoZWNrZWQsIGZhbHNlKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZG9tO1xufVxuXG4vKipcbiAqIEludm9rZSBvciB1cGRhdGUgYSByZWYsIGRlcGVuZGluZyBvbiB3aGV0aGVyIGl0IGlzIGEgZnVuY3Rpb24gb3Igb2JqZWN0IHJlZi5cbiAqIEBwYXJhbSB7b2JqZWN0fGZ1bmN0aW9ufSByZWZcbiAqIEBwYXJhbSB7YW55fSB2YWx1ZVxuICogQHBhcmFtIHtpbXBvcnQoJy4uL2ludGVybmFsJykuVk5vZGV9IHZub2RlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVJlZihyZWYsIHZhbHVlLCB2bm9kZSkge1xuXHR0cnkge1xuXHRcdGlmICh0eXBlb2YgcmVmID09ICdmdW5jdGlvbicpIHJlZih2YWx1ZSk7XG5cdFx0ZWxzZSByZWYuY3VycmVudCA9IHZhbHVlO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0b3B0aW9ucy5fY2F0Y2hFcnJvcihlLCB2bm9kZSk7XG5cdH1cbn1cblxuLyoqXG4gKiBVbm1vdW50IGEgdmlydHVhbCBub2RlIGZyb20gdGhlIHRyZWUgYW5kIGFwcGx5IERPTSBjaGFuZ2VzXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi4vaW50ZXJuYWwnKS5WTm9kZX0gdm5vZGUgVGhlIHZpcnR1YWwgbm9kZSB0byB1bm1vdW50XG4gKiBAcGFyYW0ge2ltcG9ydCgnLi4vaW50ZXJuYWwnKS5WTm9kZX0gcGFyZW50Vk5vZGUgVGhlIHBhcmVudCBvZiB0aGUgVk5vZGUgdGhhdFxuICogaW5pdGlhdGVkIHRoZSB1bm1vdW50XG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtza2lwUmVtb3ZlXSBGbGFnIHRoYXQgaW5kaWNhdGVzIHRoYXQgYSBwYXJlbnQgbm9kZSBvZiB0aGVcbiAqIGN1cnJlbnQgZWxlbWVudCBpcyBhbHJlYWR5IGRldGFjaGVkIGZyb20gdGhlIERPTS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVubW91bnQodm5vZGUsIHBhcmVudFZOb2RlLCBza2lwUmVtb3ZlKSB7XG5cdGxldCByO1xuXHRpZiAob3B0aW9ucy51bm1vdW50KSBvcHRpb25zLnVubW91bnQodm5vZGUpO1xuXG5cdGlmICgociA9IHZub2RlLnJlZikpIHtcblx0XHRpZiAoIXIuY3VycmVudCB8fCByLmN1cnJlbnQgPT09IHZub2RlLl9kb20pIGFwcGx5UmVmKHIsIG51bGwsIHBhcmVudFZOb2RlKTtcblx0fVxuXG5cdGlmICgociA9IHZub2RlLl9jb21wb25lbnQpICE9IG51bGwpIHtcblx0XHRpZiAoci5jb21wb25lbnRXaWxsVW5tb3VudCkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0ci5jb21wb25lbnRXaWxsVW5tb3VudCgpO1xuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRvcHRpb25zLl9jYXRjaEVycm9yKGUsIHBhcmVudFZOb2RlKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyLmJhc2UgPSByLl9wYXJlbnREb20gPSBudWxsO1xuXHR9XG5cblx0aWYgKChyID0gdm5vZGUuX2NoaWxkcmVuKSkge1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgci5sZW5ndGg7IGkrKykge1xuXHRcdFx0aWYgKHJbaV0pIHtcblx0XHRcdFx0dW5tb3VudChyW2ldLCBwYXJlbnRWTm9kZSwgdHlwZW9mIHZub2RlLnR5cGUgIT0gJ2Z1bmN0aW9uJyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0aWYgKCFza2lwUmVtb3ZlICYmIHZub2RlLl9kb20gIT0gbnVsbCkgcmVtb3ZlTm9kZSh2bm9kZS5fZG9tKTtcblxuXHQvLyBNdXN0IGJlIHNldCB0byBgdW5kZWZpbmVkYCB0byBwcm9wZXJseSBjbGVhbiB1cCBgX25leHREb21gXG5cdC8vIGZvciB3aGljaCBgbnVsbGAgaXMgYSB2YWxpZCB2YWx1ZS4gU2VlIGNvbW1lbnQgaW4gYGNyZWF0ZS1lbGVtZW50LmpzYFxuXHR2bm9kZS5fZG9tID0gdm5vZGUuX25leHREb20gPSB1bmRlZmluZWQ7XG59XG5cbi8qKiBUaGUgYC5yZW5kZXIoKWAgbWV0aG9kIGZvciBhIFBGQyBiYWNraW5nIGluc3RhbmNlLiAqL1xuZnVuY3Rpb24gZG9SZW5kZXIocHJvcHMsIHN0YXRlLCBjb250ZXh0KSB7XG5cdHJldHVybiB0aGlzLmNvbnN0cnVjdG9yKHByb3BzLCBjb250ZXh0KTtcbn1cbiIsICJpbXBvcnQgeyBFTVBUWV9PQkogfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBjb21taXRSb290LCBkaWZmIH0gZnJvbSAnLi9kaWZmL2luZGV4JztcbmltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIEZyYWdtZW50IH0gZnJvbSAnLi9jcmVhdGUtZWxlbWVudCc7XG5pbXBvcnQgb3B0aW9ucyBmcm9tICcuL29wdGlvbnMnO1xuaW1wb3J0IHsgc2xpY2UgfSBmcm9tICcuL3V0aWwnO1xuXG4vKipcbiAqIFJlbmRlciBhIFByZWFjdCB2aXJ0dWFsIG5vZGUgaW50byBhIERPTSBlbGVtZW50XG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkNvbXBvbmVudENoaWxkfSB2bm9kZSBUaGUgdmlydHVhbCBub2RlIHRvIHJlbmRlclxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5QcmVhY3RFbGVtZW50fSBwYXJlbnREb20gVGhlIERPTSBlbGVtZW50IHRvXG4gKiByZW5kZXIgaW50b1xuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5QcmVhY3RFbGVtZW50IHwgb2JqZWN0fSBbcmVwbGFjZU5vZGVdIE9wdGlvbmFsOiBBdHRlbXB0IHRvIHJlLXVzZSBhblxuICogZXhpc3RpbmcgRE9NIHRyZWUgcm9vdGVkIGF0IGByZXBsYWNlTm9kZWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlcih2bm9kZSwgcGFyZW50RG9tLCByZXBsYWNlTm9kZSkge1xuXHRpZiAob3B0aW9ucy5fcm9vdCkgb3B0aW9ucy5fcm9vdCh2bm9kZSwgcGFyZW50RG9tKTtcblxuXHQvLyBXZSBhYnVzZSB0aGUgYHJlcGxhY2VOb2RlYCBwYXJhbWV0ZXIgaW4gYGh5ZHJhdGUoKWAgdG8gc2lnbmFsIGlmIHdlIGFyZSBpblxuXHQvLyBoeWRyYXRpb24gbW9kZSBvciBub3QgYnkgcGFzc2luZyB0aGUgYGh5ZHJhdGVgIGZ1bmN0aW9uIGluc3RlYWQgb2YgYSBET01cblx0Ly8gZWxlbWVudC4uXG5cdGxldCBpc0h5ZHJhdGluZyA9IHR5cGVvZiByZXBsYWNlTm9kZSA9PT0gJ2Z1bmN0aW9uJztcblxuXHQvLyBUbyBiZSBhYmxlIHRvIHN1cHBvcnQgY2FsbGluZyBgcmVuZGVyKClgIG11bHRpcGxlIHRpbWVzIG9uIHRoZSBzYW1lXG5cdC8vIERPTSBub2RlLCB3ZSBuZWVkIHRvIG9idGFpbiBhIHJlZmVyZW5jZSB0byB0aGUgcHJldmlvdXMgdHJlZS4gV2UgZG9cblx0Ly8gdGhpcyBieSBhc3NpZ25pbmcgYSBuZXcgYF9jaGlsZHJlbmAgcHJvcGVydHkgdG8gRE9NIG5vZGVzIHdoaWNoIHBvaW50c1xuXHQvLyB0byB0aGUgbGFzdCByZW5kZXJlZCB0cmVlLiBCeSBkZWZhdWx0IHRoaXMgcHJvcGVydHkgaXMgbm90IHByZXNlbnQsIHdoaWNoXG5cdC8vIG1lYW5zIHRoYXQgd2UgYXJlIG1vdW50aW5nIGEgbmV3IHRyZWUgZm9yIHRoZSBmaXJzdCB0aW1lLlxuXHRsZXQgb2xkVk5vZGUgPSBpc0h5ZHJhdGluZ1xuXHRcdD8gbnVsbFxuXHRcdDogKHJlcGxhY2VOb2RlICYmIHJlcGxhY2VOb2RlLl9jaGlsZHJlbikgfHwgcGFyZW50RG9tLl9jaGlsZHJlbjtcblxuXHR2bm9kZSA9IChcblx0XHQoIWlzSHlkcmF0aW5nICYmIHJlcGxhY2VOb2RlKSB8fFxuXHRcdHBhcmVudERvbVxuXHQpLl9jaGlsZHJlbiA9IGNyZWF0ZUVsZW1lbnQoRnJhZ21lbnQsIG51bGwsIFt2bm9kZV0pO1xuXG5cdC8vIExpc3Qgb2YgZWZmZWN0cyB0aGF0IG5lZWQgdG8gYmUgY2FsbGVkIGFmdGVyIGRpZmZpbmcuXG5cdGxldCBjb21taXRRdWV1ZSA9IFtdO1xuXHRkaWZmKFxuXHRcdHBhcmVudERvbSxcblx0XHQvLyBEZXRlcm1pbmUgdGhlIG5ldyB2bm9kZSB0cmVlIGFuZCBzdG9yZSBpdCBvbiB0aGUgRE9NIGVsZW1lbnQgb25cblx0XHQvLyBvdXIgY3VzdG9tIGBfY2hpbGRyZW5gIHByb3BlcnR5LlxuXHRcdHZub2RlLFxuXHRcdG9sZFZOb2RlIHx8IEVNUFRZX09CSixcblx0XHRFTVBUWV9PQkosXG5cdFx0cGFyZW50RG9tLm93bmVyU1ZHRWxlbWVudCAhPT0gdW5kZWZpbmVkLFxuXHRcdCFpc0h5ZHJhdGluZyAmJiByZXBsYWNlTm9kZVxuXHRcdFx0PyBbcmVwbGFjZU5vZGVdXG5cdFx0XHQ6IG9sZFZOb2RlXG5cdFx0XHQ/IG51bGxcblx0XHRcdDogcGFyZW50RG9tLmZpcnN0Q2hpbGRcblx0XHRcdD8gc2xpY2UuY2FsbChwYXJlbnREb20uY2hpbGROb2Rlcylcblx0XHRcdDogbnVsbCxcblx0XHRjb21taXRRdWV1ZSxcblx0XHQhaXNIeWRyYXRpbmcgJiYgcmVwbGFjZU5vZGVcblx0XHRcdD8gcmVwbGFjZU5vZGVcblx0XHRcdDogb2xkVk5vZGVcblx0XHRcdD8gb2xkVk5vZGUuX2RvbVxuXHRcdFx0OiBwYXJlbnREb20uZmlyc3RDaGlsZCxcblx0XHRpc0h5ZHJhdGluZ1xuXHQpO1xuXG5cdC8vIEZsdXNoIGFsbCBxdWV1ZWQgZWZmZWN0c1xuXHRjb21taXRSb290KGNvbW1pdFF1ZXVlLCB2bm9kZSk7XG59XG5cbi8qKlxuICogVXBkYXRlIGFuIGV4aXN0aW5nIERPTSBlbGVtZW50IHdpdGggZGF0YSBmcm9tIGEgUHJlYWN0IHZpcnR1YWwgbm9kZVxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5Db21wb25lbnRDaGlsZH0gdm5vZGUgVGhlIHZpcnR1YWwgbm9kZSB0byByZW5kZXJcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL2ludGVybmFsJykuUHJlYWN0RWxlbWVudH0gcGFyZW50RG9tIFRoZSBET00gZWxlbWVudCB0b1xuICogdXBkYXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoeWRyYXRlKHZub2RlLCBwYXJlbnREb20pIHtcblx0cmVuZGVyKHZub2RlLCBwYXJlbnREb20sIGh5ZHJhdGUpO1xufVxuIiwgImltcG9ydCB7IGFzc2lnbiwgc2xpY2UgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgY3JlYXRlVk5vZGUgfSBmcm9tICcuL2NyZWF0ZS1lbGVtZW50JztcblxuLyoqXG4gKiBDbG9uZXMgdGhlIGdpdmVuIFZOb2RlLCBvcHRpb25hbGx5IGFkZGluZyBhdHRyaWJ1dGVzL3Byb3BzIGFuZCByZXBsYWNpbmcgaXRzIGNoaWxkcmVuLlxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5WTm9kZX0gdm5vZGUgVGhlIHZpcnR1YWwgRE9NIGVsZW1lbnQgdG8gY2xvbmVcbiAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wcyBBdHRyaWJ1dGVzL3Byb3BzIHRvIGFkZCB3aGVuIGNsb25pbmdcbiAqIEBwYXJhbSB7QXJyYXk8aW1wb3J0KCcuL2ludGVybmFsJykuQ29tcG9uZW50Q2hpbGRyZW4+fSByZXN0IEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyB3aWxsIGJlIHVzZWQgYXMgcmVwbGFjZW1lbnQgY2hpbGRyZW4uXG4gKiBAcmV0dXJucyB7aW1wb3J0KCcuL2ludGVybmFsJykuVk5vZGV9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbG9uZUVsZW1lbnQodm5vZGUsIHByb3BzLCBjaGlsZHJlbikge1xuXHRsZXQgbm9ybWFsaXplZFByb3BzID0gYXNzaWduKHt9LCB2bm9kZS5wcm9wcyksXG5cdFx0a2V5LFxuXHRcdHJlZixcblx0XHRpO1xuXHRmb3IgKGkgaW4gcHJvcHMpIHtcblx0XHRpZiAoaSA9PSAna2V5Jykga2V5ID0gcHJvcHNbaV07XG5cdFx0ZWxzZSBpZiAoaSA9PSAncmVmJykgcmVmID0gcHJvcHNbaV07XG5cdFx0ZWxzZSBub3JtYWxpemVkUHJvcHNbaV0gPSBwcm9wc1tpXTtcblx0fVxuXG5cdGlmIChhcmd1bWVudHMubGVuZ3RoID4gMikge1xuXHRcdG5vcm1hbGl6ZWRQcm9wcy5jaGlsZHJlbiA9XG5cdFx0XHRhcmd1bWVudHMubGVuZ3RoID4gMyA/IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAyKSA6IGNoaWxkcmVuO1xuXHR9XG5cblx0cmV0dXJuIGNyZWF0ZVZOb2RlKFxuXHRcdHZub2RlLnR5cGUsXG5cdFx0bm9ybWFsaXplZFByb3BzLFxuXHRcdGtleSB8fCB2bm9kZS5rZXksXG5cdFx0cmVmIHx8IHZub2RlLnJlZixcblx0XHRudWxsXG5cdCk7XG59XG4iLCAiLyoqXG4gKiBGaW5kIHRoZSBjbG9zZXN0IGVycm9yIGJvdW5kYXJ5IHRvIGEgdGhyb3duIGVycm9yIGFuZCBjYWxsIGl0XG4gKiBAcGFyYW0ge29iamVjdH0gZXJyb3IgVGhlIHRocm93biB2YWx1ZVxuICogQHBhcmFtIHtpbXBvcnQoJy4uL2ludGVybmFsJykuVk5vZGV9IHZub2RlIFRoZSB2bm9kZSB0aGF0IHRocmV3XG4gKiB0aGUgZXJyb3IgdGhhdCB3YXMgY2F1Z2h0IChleGNlcHQgZm9yIHVubW91bnRpbmcgd2hlbiB0aGlzIHBhcmFtZXRlclxuICogaXMgdGhlIGhpZ2hlc3QgcGFyZW50IHRoYXQgd2FzIGJlaW5nIHVubW91bnRlZClcbiAqIEBwYXJhbSB7aW1wb3J0KCcuLi9pbnRlcm5hbCcpLlZOb2RlfSBbb2xkVk5vZGVdXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi4vaW50ZXJuYWwnKS5FcnJvckluZm99IFtlcnJvckluZm9dXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBfY2F0Y2hFcnJvcihlcnJvciwgdm5vZGUsIG9sZFZOb2RlLCBlcnJvckluZm8pIHtcblx0LyoqIEB0eXBlIHtpbXBvcnQoJy4uL2ludGVybmFsJykuQ29tcG9uZW50fSAqL1xuXHRsZXQgY29tcG9uZW50LCBjdG9yLCBoYW5kbGVkO1xuXG5cdGZvciAoOyAodm5vZGUgPSB2bm9kZS5fcGFyZW50KTsgKSB7XG5cdFx0aWYgKChjb21wb25lbnQgPSB2bm9kZS5fY29tcG9uZW50KSAmJiAhY29tcG9uZW50Ll9wcm9jZXNzaW5nRXhjZXB0aW9uKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjdG9yID0gY29tcG9uZW50LmNvbnN0cnVjdG9yO1xuXG5cdFx0XHRcdGlmIChjdG9yICYmIGN0b3IuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yICE9IG51bGwpIHtcblx0XHRcdFx0XHRjb21wb25lbnQuc2V0U3RhdGUoY3Rvci5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IoZXJyb3IpKTtcblx0XHRcdFx0XHRoYW5kbGVkID0gY29tcG9uZW50Ll9kaXJ0eTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChjb21wb25lbnQuY29tcG9uZW50RGlkQ2F0Y2ggIT0gbnVsbCkge1xuXHRcdFx0XHRcdGNvbXBvbmVudC5jb21wb25lbnREaWRDYXRjaChlcnJvciwgZXJyb3JJbmZvIHx8IHt9KTtcblx0XHRcdFx0XHRoYW5kbGVkID0gY29tcG9uZW50Ll9kaXJ0eTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFRoaXMgaXMgYW4gZXJyb3IgYm91bmRhcnkuIE1hcmsgaXQgYXMgaGF2aW5nIGJhaWxlZCBvdXQsIGFuZCB3aGV0aGVyIGl0IHdhcyBtaWQtaHlkcmF0aW9uLlxuXHRcdFx0XHRpZiAoaGFuZGxlZCkge1xuXHRcdFx0XHRcdHJldHVybiAoY29tcG9uZW50Ll9wZW5kaW5nRXJyb3IgPSBjb21wb25lbnQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdGVycm9yID0gZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHR0aHJvdyBlcnJvcjtcbn1cbiIsICJpbXBvcnQgeyBvcHRpb25zIH0gZnJvbSAncHJlYWN0JztcblxuLyoqIEB0eXBlIHtudW1iZXJ9ICovXG5sZXQgY3VycmVudEluZGV4O1xuXG4vKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkNvbXBvbmVudH0gKi9cbmxldCBjdXJyZW50Q29tcG9uZW50O1xuXG4vKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkNvbXBvbmVudH0gKi9cbmxldCBwcmV2aW91c0NvbXBvbmVudDtcblxuLyoqIEB0eXBlIHtudW1iZXJ9ICovXG5sZXQgY3VycmVudEhvb2sgPSAwO1xuXG4vKiogQHR5cGUge0FycmF5PGltcG9ydCgnLi9pbnRlcm5hbCcpLkNvbXBvbmVudD59ICovXG5sZXQgYWZ0ZXJQYWludEVmZmVjdHMgPSBbXTtcblxubGV0IG9sZEJlZm9yZURpZmYgPSBvcHRpb25zLl9kaWZmO1xubGV0IG9sZEJlZm9yZVJlbmRlciA9IG9wdGlvbnMuX3JlbmRlcjtcbmxldCBvbGRBZnRlckRpZmYgPSBvcHRpb25zLmRpZmZlZDtcbmxldCBvbGRDb21taXQgPSBvcHRpb25zLl9jb21taXQ7XG5sZXQgb2xkQmVmb3JlVW5tb3VudCA9IG9wdGlvbnMudW5tb3VudDtcblxuY29uc3QgUkFGX1RJTUVPVVQgPSAxMDA7XG5sZXQgcHJldlJhZjtcblxub3B0aW9ucy5fZGlmZiA9IHZub2RlID0+IHtcblx0Y3VycmVudENvbXBvbmVudCA9IG51bGw7XG5cdGlmIChvbGRCZWZvcmVEaWZmKSBvbGRCZWZvcmVEaWZmKHZub2RlKTtcbn07XG5cbm9wdGlvbnMuX3JlbmRlciA9IHZub2RlID0+IHtcblx0aWYgKG9sZEJlZm9yZVJlbmRlcikgb2xkQmVmb3JlUmVuZGVyKHZub2RlKTtcblxuXHRjdXJyZW50Q29tcG9uZW50ID0gdm5vZGUuX2NvbXBvbmVudDtcblx0Y3VycmVudEluZGV4ID0gMDtcblxuXHRjb25zdCBob29rcyA9IGN1cnJlbnRDb21wb25lbnQuX19ob29rcztcblx0aWYgKGhvb2tzKSB7XG5cdFx0aWYgKHByZXZpb3VzQ29tcG9uZW50ID09PSBjdXJyZW50Q29tcG9uZW50KSB7XG5cdFx0XHRob29rcy5fcGVuZGluZ0VmZmVjdHMgPSBbXTtcblx0XHRcdGN1cnJlbnRDb21wb25lbnQuX3JlbmRlckNhbGxiYWNrcyA9IFtdO1xuXHRcdFx0aG9va3MuX2xpc3QuZm9yRWFjaChob29rSXRlbSA9PiB7XG5cdFx0XHRcdGlmIChob29rSXRlbS5fYXJncykgaG9va0l0ZW0uX2FyZ3MgPSB1bmRlZmluZWQ7XG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aG9va3MuX3BlbmRpbmdFZmZlY3RzLmZvckVhY2goaW52b2tlQ2xlYW51cCk7XG5cdFx0XHRob29rcy5fcGVuZGluZ0VmZmVjdHMuZm9yRWFjaChpbnZva2VFZmZlY3QpO1xuXHRcdFx0aG9va3MuX3BlbmRpbmdFZmZlY3RzID0gW107XG5cdFx0fVxuXHR9XG5cdHByZXZpb3VzQ29tcG9uZW50ID0gY3VycmVudENvbXBvbmVudDtcbn07XG5cbm9wdGlvbnMuZGlmZmVkID0gdm5vZGUgPT4ge1xuXHRpZiAob2xkQWZ0ZXJEaWZmKSBvbGRBZnRlckRpZmYodm5vZGUpO1xuXG5cdGNvbnN0IGMgPSB2bm9kZS5fY29tcG9uZW50O1xuXHRpZiAoYyAmJiBjLl9faG9va3MgJiYgYy5fX2hvb2tzLl9wZW5kaW5nRWZmZWN0cy5sZW5ndGgpIHtcblx0XHRhZnRlclBhaW50KGFmdGVyUGFpbnRFZmZlY3RzLnB1c2goYykpO1xuXHR9XG5cdGN1cnJlbnRDb21wb25lbnQgPSBudWxsO1xuXHRwcmV2aW91c0NvbXBvbmVudCA9IG51bGw7XG59O1xuXG5vcHRpb25zLl9jb21taXQgPSAodm5vZGUsIGNvbW1pdFF1ZXVlKSA9PiB7XG5cdGNvbW1pdFF1ZXVlLnNvbWUoY29tcG9uZW50ID0+IHtcblx0XHR0cnkge1xuXHRcdFx0Y29tcG9uZW50Ll9yZW5kZXJDYWxsYmFja3MuZm9yRWFjaChpbnZva2VDbGVhbnVwKTtcblx0XHRcdGNvbXBvbmVudC5fcmVuZGVyQ2FsbGJhY2tzID0gY29tcG9uZW50Ll9yZW5kZXJDYWxsYmFja3MuZmlsdGVyKGNiID0+XG5cdFx0XHRcdGNiLl92YWx1ZSA/IGludm9rZUVmZmVjdChjYikgOiB0cnVlXG5cdFx0XHQpO1xuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdGNvbW1pdFF1ZXVlLnNvbWUoYyA9PiB7XG5cdFx0XHRcdGlmIChjLl9yZW5kZXJDYWxsYmFja3MpIGMuX3JlbmRlckNhbGxiYWNrcyA9IFtdO1xuXHRcdFx0fSk7XG5cdFx0XHRjb21taXRRdWV1ZSA9IFtdO1xuXHRcdFx0b3B0aW9ucy5fY2F0Y2hFcnJvcihlLCBjb21wb25lbnQuX3Zub2RlKTtcblx0XHR9XG5cdH0pO1xuXG5cdGlmIChvbGRDb21taXQpIG9sZENvbW1pdCh2bm9kZSwgY29tbWl0UXVldWUpO1xufTtcblxub3B0aW9ucy51bm1vdW50ID0gdm5vZGUgPT4ge1xuXHRpZiAob2xkQmVmb3JlVW5tb3VudCkgb2xkQmVmb3JlVW5tb3VudCh2bm9kZSk7XG5cblx0Y29uc3QgYyA9IHZub2RlLl9jb21wb25lbnQ7XG5cdGlmIChjICYmIGMuX19ob29rcykge1xuXHRcdGxldCBoYXNFcnJvcmVkO1xuXHRcdGMuX19ob29rcy5fbGlzdC5mb3JFYWNoKHMgPT4ge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0aW52b2tlQ2xlYW51cChzKTtcblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0aGFzRXJyb3JlZCA9IGU7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0aWYgKGhhc0Vycm9yZWQpIG9wdGlvbnMuX2NhdGNoRXJyb3IoaGFzRXJyb3JlZCwgYy5fdm5vZGUpO1xuXHR9XG59O1xuXG4vKipcbiAqIEdldCBhIGhvb2sncyBzdGF0ZSBmcm9tIHRoZSBjdXJyZW50Q29tcG9uZW50XG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXggVGhlIGluZGV4IG9mIHRoZSBob29rIHRvIGdldFxuICogQHBhcmFtIHtudW1iZXJ9IHR5cGUgVGhlIGluZGV4IG9mIHRoZSBob29rIHRvIGdldFxuICogQHJldHVybnMge2FueX1cbiAqL1xuZnVuY3Rpb24gZ2V0SG9va1N0YXRlKGluZGV4LCB0eXBlKSB7XG5cdGlmIChvcHRpb25zLl9ob29rKSB7XG5cdFx0b3B0aW9ucy5faG9vayhjdXJyZW50Q29tcG9uZW50LCBpbmRleCwgY3VycmVudEhvb2sgfHwgdHlwZSk7XG5cdH1cblx0Y3VycmVudEhvb2sgPSAwO1xuXG5cdC8vIExhcmdlbHkgaW5zcGlyZWQgYnk6XG5cdC8vICogaHR0cHM6Ly9naXRodWIuY29tL21pY2hhZWwta2xlaW4vZnVuY3kuanMvYmxvYi9mNmJlNzM0NjhlNmVjNDZiMGZmNWFhM2NjNGM5YmFmNzJhMjkwMjVhL3NyYy9ob29rcy9jb3JlX2hvb2tzLm1qc1xuXHQvLyAqIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNoYWVsLWtsZWluL2Z1bmN5LmpzL2Jsb2IvNjUwYmVhYTU4YzQzYzMzYTc0ODIwYTNjOThiM2M3MDc5Y2YyZTMzMy9zcmMvcmVuZGVyZXIubWpzXG5cdC8vIE90aGVyIGltcGxlbWVudGF0aW9ucyB0byBsb29rIGF0OlxuXHQvLyAqIGh0dHBzOi8vY29kZXNhbmRib3guaW8vcy9tbm94MDVxcDhcblx0Y29uc3QgaG9va3MgPVxuXHRcdGN1cnJlbnRDb21wb25lbnQuX19ob29rcyB8fFxuXHRcdChjdXJyZW50Q29tcG9uZW50Ll9faG9va3MgPSB7XG5cdFx0XHRfbGlzdDogW10sXG5cdFx0XHRfcGVuZGluZ0VmZmVjdHM6IFtdXG5cdFx0fSk7XG5cblx0aWYgKGluZGV4ID49IGhvb2tzLl9saXN0Lmxlbmd0aCkge1xuXHRcdGhvb2tzLl9saXN0LnB1c2goe30pO1xuXHR9XG5cdHJldHVybiBob29rcy5fbGlzdFtpbmRleF07XG59XG5cbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW5kZXgnKS5TdGF0ZVVwZGF0ZXI8YW55Pn0gW2luaXRpYWxTdGF0ZV1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVN0YXRlKGluaXRpYWxTdGF0ZSkge1xuXHRjdXJyZW50SG9vayA9IDE7XG5cdHJldHVybiB1c2VSZWR1Y2VyKGludm9rZU9yUmV0dXJuLCBpbml0aWFsU3RhdGUpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL2luZGV4JykuUmVkdWNlcjxhbnksIGFueT59IHJlZHVjZXJcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL2luZGV4JykuU3RhdGVVcGRhdGVyPGFueT59IGluaXRpYWxTdGF0ZVxuICogQHBhcmFtIHsoaW5pdGlhbFN0YXRlOiBhbnkpID0+IHZvaWR9IFtpbml0XVxuICogQHJldHVybnMge1sgYW55LCAoc3RhdGU6IGFueSkgPT4gdm9pZCBdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlUmVkdWNlcihyZWR1Y2VyLCBpbml0aWFsU3RhdGUsIGluaXQpIHtcblx0LyoqIEB0eXBlIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5SZWR1Y2VySG9va1N0YXRlfSAqL1xuXHRjb25zdCBob29rU3RhdGUgPSBnZXRIb29rU3RhdGUoY3VycmVudEluZGV4KyssIDIpO1xuXHRob29rU3RhdGUuX3JlZHVjZXIgPSByZWR1Y2VyO1xuXHRpZiAoIWhvb2tTdGF0ZS5fY29tcG9uZW50KSB7XG5cdFx0aG9va1N0YXRlLl92YWx1ZSA9IFtcblx0XHRcdCFpbml0ID8gaW52b2tlT3JSZXR1cm4odW5kZWZpbmVkLCBpbml0aWFsU3RhdGUpIDogaW5pdChpbml0aWFsU3RhdGUpLFxuXG5cdFx0XHRhY3Rpb24gPT4ge1xuXHRcdFx0XHRjb25zdCBuZXh0VmFsdWUgPSBob29rU3RhdGUuX3JlZHVjZXIoaG9va1N0YXRlLl92YWx1ZVswXSwgYWN0aW9uKTtcblx0XHRcdFx0aWYgKGhvb2tTdGF0ZS5fdmFsdWVbMF0gIT09IG5leHRWYWx1ZSkge1xuXHRcdFx0XHRcdGhvb2tTdGF0ZS5fdmFsdWUgPSBbbmV4dFZhbHVlLCBob29rU3RhdGUuX3ZhbHVlWzFdXTtcblx0XHRcdFx0XHRob29rU3RhdGUuX2NvbXBvbmVudC5zZXRTdGF0ZSh7fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRdO1xuXG5cdFx0aG9va1N0YXRlLl9jb21wb25lbnQgPSBjdXJyZW50Q29tcG9uZW50O1xuXHR9XG5cblx0cmV0dXJuIGhvb2tTdGF0ZS5fdmFsdWU7XG59XG5cbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5FZmZlY3R9IGNhbGxiYWNrXG4gKiBAcGFyYW0ge2FueVtdfSBhcmdzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VFZmZlY3QoY2FsbGJhY2ssIGFyZ3MpIHtcblx0LyoqIEB0eXBlIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5FZmZlY3RIb29rU3RhdGV9ICovXG5cdGNvbnN0IHN0YXRlID0gZ2V0SG9va1N0YXRlKGN1cnJlbnRJbmRleCsrLCAzKTtcblx0aWYgKCFvcHRpb25zLl9za2lwRWZmZWN0cyAmJiBhcmdzQ2hhbmdlZChzdGF0ZS5fYXJncywgYXJncykpIHtcblx0XHRzdGF0ZS5fdmFsdWUgPSBjYWxsYmFjaztcblx0XHRzdGF0ZS5fYXJncyA9IGFyZ3M7XG5cblx0XHRjdXJyZW50Q29tcG9uZW50Ll9faG9va3MuX3BlbmRpbmdFZmZlY3RzLnB1c2goc3RhdGUpO1xuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5FZmZlY3R9IGNhbGxiYWNrXG4gKiBAcGFyYW0ge2FueVtdfSBhcmdzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VMYXlvdXRFZmZlY3QoY2FsbGJhY2ssIGFyZ3MpIHtcblx0LyoqIEB0eXBlIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5FZmZlY3RIb29rU3RhdGV9ICovXG5cdGNvbnN0IHN0YXRlID0gZ2V0SG9va1N0YXRlKGN1cnJlbnRJbmRleCsrLCA0KTtcblx0aWYgKCFvcHRpb25zLl9za2lwRWZmZWN0cyAmJiBhcmdzQ2hhbmdlZChzdGF0ZS5fYXJncywgYXJncykpIHtcblx0XHRzdGF0ZS5fdmFsdWUgPSBjYWxsYmFjaztcblx0XHRzdGF0ZS5fYXJncyA9IGFyZ3M7XG5cblx0XHRjdXJyZW50Q29tcG9uZW50Ll9yZW5kZXJDYWxsYmFja3MucHVzaChzdGF0ZSk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVJlZihpbml0aWFsVmFsdWUpIHtcblx0Y3VycmVudEhvb2sgPSA1O1xuXHRyZXR1cm4gdXNlTWVtbygoKSA9PiAoeyBjdXJyZW50OiBpbml0aWFsVmFsdWUgfSksIFtdKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gcmVmXG4gKiBAcGFyYW0geygpID0+IG9iamVjdH0gY3JlYXRlSGFuZGxlXG4gKiBAcGFyYW0ge2FueVtdfSBhcmdzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgY3JlYXRlSGFuZGxlLCBhcmdzKSB7XG5cdGN1cnJlbnRIb29rID0gNjtcblx0dXNlTGF5b3V0RWZmZWN0KFxuXHRcdCgpID0+IHtcblx0XHRcdGlmICh0eXBlb2YgcmVmID09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0cmVmKGNyZWF0ZUhhbmRsZSgpKTtcblx0XHRcdFx0cmV0dXJuICgpID0+IHJlZihudWxsKTtcblx0XHRcdH0gZWxzZSBpZiAocmVmKSB7XG5cdFx0XHRcdHJlZi5jdXJyZW50ID0gY3JlYXRlSGFuZGxlKCk7XG5cdFx0XHRcdHJldHVybiAoKSA9PiAocmVmLmN1cnJlbnQgPSBudWxsKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdGFyZ3MgPT0gbnVsbCA/IGFyZ3MgOiBhcmdzLmNvbmNhdChyZWYpXG5cdCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHsoKSA9PiBhbnl9IGZhY3RvcnlcbiAqIEBwYXJhbSB7YW55W119IGFyZ3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZU1lbW8oZmFjdG9yeSwgYXJncykge1xuXHQvKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLk1lbW9Ib29rU3RhdGV9ICovXG5cdGNvbnN0IHN0YXRlID0gZ2V0SG9va1N0YXRlKGN1cnJlbnRJbmRleCsrLCA3KTtcblx0aWYgKGFyZ3NDaGFuZ2VkKHN0YXRlLl9hcmdzLCBhcmdzKSkge1xuXHRcdHN0YXRlLl92YWx1ZSA9IGZhY3RvcnkoKTtcblx0XHRzdGF0ZS5fYXJncyA9IGFyZ3M7XG5cdFx0c3RhdGUuX2ZhY3RvcnkgPSBmYWN0b3J5O1xuXHR9XG5cblx0cmV0dXJuIHN0YXRlLl92YWx1ZTtcbn1cblxuLyoqXG4gKiBAcGFyYW0geygpID0+IHZvaWR9IGNhbGxiYWNrXG4gKiBAcGFyYW0ge2FueVtdfSBhcmdzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VDYWxsYmFjayhjYWxsYmFjaywgYXJncykge1xuXHRjdXJyZW50SG9vayA9IDg7XG5cdHJldHVybiB1c2VNZW1vKCgpID0+IGNhbGxiYWNrLCBhcmdzKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlByZWFjdENvbnRleHR9IGNvbnRleHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUNvbnRleHQoY29udGV4dCkge1xuXHRjb25zdCBwcm92aWRlciA9IGN1cnJlbnRDb21wb25lbnQuY29udGV4dFtjb250ZXh0Ll9pZF07XG5cdC8vIFdlIGNvdWxkIHNraXAgdGhpcyBjYWxsIGhlcmUsIGJ1dCB0aGFuIHdlJ2Qgbm90IGNhbGxcblx0Ly8gYG9wdGlvbnMuX2hvb2tgLiBXZSBuZWVkIHRvIGRvIHRoYXQgaW4gb3JkZXIgdG8gbWFrZVxuXHQvLyB0aGUgZGV2dG9vbHMgYXdhcmUgb2YgdGhpcyBob29rLlxuXHQvKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkNvbnRleHRIb29rU3RhdGV9ICovXG5cdGNvbnN0IHN0YXRlID0gZ2V0SG9va1N0YXRlKGN1cnJlbnRJbmRleCsrLCA5KTtcblx0Ly8gVGhlIGRldnRvb2xzIG5lZWRzIGFjY2VzcyB0byB0aGUgY29udGV4dCBvYmplY3QgdG9cblx0Ly8gYmUgYWJsZSB0byBwdWxsIG9mIHRoZSBkZWZhdWx0IHZhbHVlIHdoZW4gbm8gcHJvdmlkZXJcblx0Ly8gaXMgcHJlc2VudCBpbiB0aGUgdHJlZS5cblx0c3RhdGUuX2NvbnRleHQgPSBjb250ZXh0O1xuXHRpZiAoIXByb3ZpZGVyKSByZXR1cm4gY29udGV4dC5fZGVmYXVsdFZhbHVlO1xuXHQvLyBUaGlzIGlzIHByb2JhYmx5IG5vdCBzYWZlIHRvIGNvbnZlcnQgdG8gXCIhXCJcblx0aWYgKHN0YXRlLl92YWx1ZSA9PSBudWxsKSB7XG5cdFx0c3RhdGUuX3ZhbHVlID0gdHJ1ZTtcblx0XHRwcm92aWRlci5zdWIoY3VycmVudENvbXBvbmVudCk7XG5cdH1cblx0cmV0dXJuIHByb3ZpZGVyLnByb3BzLnZhbHVlO1xufVxuXG4vKipcbiAqIERpc3BsYXkgYSBjdXN0b20gbGFiZWwgZm9yIGEgY3VzdG9tIGhvb2sgZm9yIHRoZSBkZXZ0b29scyBwYW5lbFxuICogQHR5cGUgezxUPih2YWx1ZTogVCwgY2I/OiAodmFsdWU6IFQpID0+IHN0cmluZyB8IG51bWJlcikgPT4gdm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZURlYnVnVmFsdWUodmFsdWUsIGZvcm1hdHRlcikge1xuXHRpZiAob3B0aW9ucy51c2VEZWJ1Z1ZhbHVlKSB7XG5cdFx0b3B0aW9ucy51c2VEZWJ1Z1ZhbHVlKGZvcm1hdHRlciA/IGZvcm1hdHRlcih2YWx1ZSkgOiB2YWx1ZSk7XG5cdH1cbn1cblxuLyoqXG4gKiBAcGFyYW0geyhlcnJvcjogYW55KSA9PiB2b2lkfSBjYlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlRXJyb3JCb3VuZGFyeShjYikge1xuXHQvKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkVycm9yQm91bmRhcnlIb29rU3RhdGV9ICovXG5cdGNvbnN0IHN0YXRlID0gZ2V0SG9va1N0YXRlKGN1cnJlbnRJbmRleCsrLCAxMCk7XG5cdGNvbnN0IGVyclN0YXRlID0gdXNlU3RhdGUoKTtcblx0c3RhdGUuX3ZhbHVlID0gY2I7XG5cdGlmICghY3VycmVudENvbXBvbmVudC5jb21wb25lbnREaWRDYXRjaCkge1xuXHRcdGN1cnJlbnRDb21wb25lbnQuY29tcG9uZW50RGlkQ2F0Y2ggPSBlcnIgPT4ge1xuXHRcdFx0aWYgKHN0YXRlLl92YWx1ZSkgc3RhdGUuX3ZhbHVlKGVycik7XG5cdFx0XHRlcnJTdGF0ZVsxXShlcnIpO1xuXHRcdH07XG5cdH1cblx0cmV0dXJuIFtcblx0XHRlcnJTdGF0ZVswXSxcblx0XHQoKSA9PiB7XG5cdFx0XHRlcnJTdGF0ZVsxXSh1bmRlZmluZWQpO1xuXHRcdH1cblx0XTtcbn1cblxuLyoqXG4gKiBBZnRlciBwYWludCBlZmZlY3RzIGNvbnN1bWVyLlxuICovXG5mdW5jdGlvbiBmbHVzaEFmdGVyUGFpbnRFZmZlY3RzKCkge1xuXHRsZXQgY29tcG9uZW50O1xuXHR3aGlsZSAoKGNvbXBvbmVudCA9IGFmdGVyUGFpbnRFZmZlY3RzLnNoaWZ0KCkpKSB7XG5cdFx0aWYgKCFjb21wb25lbnQuX3BhcmVudERvbSkgY29udGludWU7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbXBvbmVudC5fX2hvb2tzLl9wZW5kaW5nRWZmZWN0cy5mb3JFYWNoKGludm9rZUNsZWFudXApO1xuXHRcdFx0Y29tcG9uZW50Ll9faG9va3MuX3BlbmRpbmdFZmZlY3RzLmZvckVhY2goaW52b2tlRWZmZWN0KTtcblx0XHRcdGNvbXBvbmVudC5fX2hvb2tzLl9wZW5kaW5nRWZmZWN0cyA9IFtdO1xuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdGNvbXBvbmVudC5fX2hvb2tzLl9wZW5kaW5nRWZmZWN0cyA9IFtdO1xuXHRcdFx0b3B0aW9ucy5fY2F0Y2hFcnJvcihlLCBjb21wb25lbnQuX3Zub2RlKTtcblx0XHR9XG5cdH1cbn1cblxubGV0IEhBU19SQUYgPSB0eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lID09ICdmdW5jdGlvbic7XG5cbi8qKlxuICogU2NoZWR1bGUgYSBjYWxsYmFjayB0byBiZSBpbnZva2VkIGFmdGVyIHRoZSBicm93c2VyIGhhcyBhIGNoYW5jZSB0byBwYWludCBhIG5ldyBmcmFtZS5cbiAqIERvIHRoaXMgYnkgY29tYmluaW5nIHJlcXVlc3RBbmltYXRpb25GcmFtZSAockFGKSArIHNldFRpbWVvdXQgdG8gaW52b2tlIGEgY2FsbGJhY2sgYWZ0ZXJcbiAqIHRoZSBuZXh0IGJyb3dzZXIgZnJhbWUuXG4gKlxuICogQWxzbywgc2NoZWR1bGUgYSB0aW1lb3V0IGluIHBhcmFsbGVsIHRvIHRoZSB0aGUgckFGIHRvIGVuc3VyZSB0aGUgY2FsbGJhY2sgaXMgaW52b2tlZFxuICogZXZlbiBpZiBSQUYgZG9lc24ndCBmaXJlIChmb3IgZXhhbXBsZSBpZiB0aGUgYnJvd3NlciB0YWIgaXMgbm90IHZpc2libGUpXG4gKlxuICogQHBhcmFtIHsoKSA9PiB2b2lkfSBjYWxsYmFja1xuICovXG5mdW5jdGlvbiBhZnRlck5leHRGcmFtZShjYWxsYmFjaykge1xuXHRjb25zdCBkb25lID0gKCkgPT4ge1xuXHRcdGNsZWFyVGltZW91dCh0aW1lb3V0KTtcblx0XHRpZiAoSEFTX1JBRikgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmKTtcblx0XHRzZXRUaW1lb3V0KGNhbGxiYWNrKTtcblx0fTtcblx0Y29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoZG9uZSwgUkFGX1RJTUVPVVQpO1xuXG5cdGxldCByYWY7XG5cdGlmIChIQVNfUkFGKSB7XG5cdFx0cmFmID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGRvbmUpO1xuXHR9XG59XG5cbi8vIE5vdGU6IGlmIHNvbWVvbmUgdXNlZCBvcHRpb25zLmRlYm91bmNlUmVuZGVyaW5nID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lLFxuLy8gdGhlbiBlZmZlY3RzIHdpbGwgQUxXQVlTIHJ1biBvbiB0aGUgTkVYVCBmcmFtZSBpbnN0ZWFkIG9mIHRoZSBjdXJyZW50IG9uZSwgaW5jdXJyaW5nIGEgfjE2bXMgZGVsYXkuXG4vLyBQZXJoYXBzIHRoaXMgaXMgbm90IHN1Y2ggYSBiaWcgZGVhbC5cbi8qKlxuICogU2NoZWR1bGUgYWZ0ZXJQYWludEVmZmVjdHMgZmx1c2ggYWZ0ZXIgdGhlIGJyb3dzZXIgcGFpbnRzXG4gKiBAcGFyYW0ge251bWJlcn0gbmV3UXVldWVMZW5ndGhcbiAqL1xuZnVuY3Rpb24gYWZ0ZXJQYWludChuZXdRdWV1ZUxlbmd0aCkge1xuXHRpZiAobmV3UXVldWVMZW5ndGggPT09IDEgfHwgcHJldlJhZiAhPT0gb3B0aW9ucy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUpIHtcblx0XHRwcmV2UmFmID0gb3B0aW9ucy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU7XG5cdFx0KHByZXZSYWYgfHwgYWZ0ZXJOZXh0RnJhbWUpKGZsdXNoQWZ0ZXJQYWludEVmZmVjdHMpO1xuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5FZmZlY3RIb29rU3RhdGV9IGhvb2tcbiAqL1xuZnVuY3Rpb24gaW52b2tlQ2xlYW51cChob29rKSB7XG5cdC8vIEEgaG9vayBjbGVhbnVwIGNhbiBpbnRyb2R1Y2UgYSBjYWxsIHRvIHJlbmRlciB3aGljaCBjcmVhdGVzIGEgbmV3IHJvb3QsIHRoaXMgd2lsbCBjYWxsIG9wdGlvbnMudm5vZGVcblx0Ly8gYW5kIG1vdmUgdGhlIGN1cnJlbnRDb21wb25lbnQgYXdheS5cblx0Y29uc3QgY29tcCA9IGN1cnJlbnRDb21wb25lbnQ7XG5cdGxldCBjbGVhbnVwID0gaG9vay5fY2xlYW51cDtcblx0aWYgKHR5cGVvZiBjbGVhbnVwID09ICdmdW5jdGlvbicpIHtcblx0XHRob29rLl9jbGVhbnVwID0gdW5kZWZpbmVkO1xuXHRcdGNsZWFudXAoKTtcblx0fVxuXHRjdXJyZW50Q29tcG9uZW50ID0gY29tcDtcbn1cblxuLyoqXG4gKiBJbnZva2UgYSBIb29rJ3MgZWZmZWN0XG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkVmZmVjdEhvb2tTdGF0ZX0gaG9va1xuICovXG5mdW5jdGlvbiBpbnZva2VFZmZlY3QoaG9vaykge1xuXHQvLyBBIGhvb2sgY2FsbCBjYW4gaW50cm9kdWNlIGEgY2FsbCB0byByZW5kZXIgd2hpY2ggY3JlYXRlcyBhIG5ldyByb290LCB0aGlzIHdpbGwgY2FsbCBvcHRpb25zLnZub2RlXG5cdC8vIGFuZCBtb3ZlIHRoZSBjdXJyZW50Q29tcG9uZW50IGF3YXkuXG5cdGNvbnN0IGNvbXAgPSBjdXJyZW50Q29tcG9uZW50O1xuXHRob29rLl9jbGVhbnVwID0gaG9vay5fdmFsdWUoKTtcblx0Y3VycmVudENvbXBvbmVudCA9IGNvbXA7XG59XG5cbi8qKlxuICogQHBhcmFtIHthbnlbXX0gb2xkQXJnc1xuICogQHBhcmFtIHthbnlbXX0gbmV3QXJnc1xuICovXG5mdW5jdGlvbiBhcmdzQ2hhbmdlZChvbGRBcmdzLCBuZXdBcmdzKSB7XG5cdHJldHVybiAoXG5cdFx0IW9sZEFyZ3MgfHxcblx0XHRvbGRBcmdzLmxlbmd0aCAhPT0gbmV3QXJncy5sZW5ndGggfHxcblx0XHRuZXdBcmdzLnNvbWUoKGFyZywgaW5kZXgpID0+IGFyZyAhPT0gb2xkQXJnc1tpbmRleF0pXG5cdCk7XG59XG5cbmZ1bmN0aW9uIGludm9rZU9yUmV0dXJuKGFyZywgZikge1xuXHRyZXR1cm4gdHlwZW9mIGYgPT0gJ2Z1bmN0aW9uJyA/IGYoYXJnKSA6IGY7XG59XG4iLCAiLyoqXG4gKiBBc3NpZ24gcHJvcGVydGllcyBmcm9tIGBwcm9wc2AgdG8gYG9iamBcbiAqIEB0ZW1wbGF0ZSBPLCBQIFRoZSBvYmogYW5kIHByb3BzIHR5cGVzXG4gKiBAcGFyYW0ge099IG9iaiBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyB0b1xuICogQHBhcmFtIHtQfSBwcm9wcyBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tXG4gKiBAcmV0dXJucyB7TyAmIFB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ24ob2JqLCBwcm9wcykge1xuXHRmb3IgKGxldCBpIGluIHByb3BzKSBvYmpbaV0gPSBwcm9wc1tpXTtcblx0cmV0dXJuIC8qKiBAdHlwZSB7TyAmIFB9ICovIChvYmopO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHR3byBvYmplY3RzIGhhdmUgYSBkaWZmZXJlbnQgc2hhcGVcbiAqIEBwYXJhbSB7b2JqZWN0fSBhXG4gKiBAcGFyYW0ge29iamVjdH0gYlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaGFsbG93RGlmZmVycyhhLCBiKSB7XG5cdGZvciAobGV0IGkgaW4gYSkgaWYgKGkgIT09ICdfX3NvdXJjZScgJiYgIShpIGluIGIpKSByZXR1cm4gdHJ1ZTtcblx0Zm9yIChsZXQgaSBpbiBiKSBpZiAoaSAhPT0gJ19fc291cmNlJyAmJiBhW2ldICE9PSBiW2ldKSByZXR1cm4gdHJ1ZTtcblx0cmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlTm9kZShub2RlKSB7XG5cdGxldCBwYXJlbnROb2RlID0gbm9kZS5wYXJlbnROb2RlO1xuXHRpZiAocGFyZW50Tm9kZSkgcGFyZW50Tm9kZS5yZW1vdmVDaGlsZChub2RlKTtcbn1cbiIsICJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdwcmVhY3QnO1xuaW1wb3J0IHsgc2hhbGxvd0RpZmZlcnMgfSBmcm9tICcuL3V0aWwnO1xuXG4vKipcbiAqIENvbXBvbmVudCBjbGFzcyB3aXRoIGEgcHJlZGVmaW5lZCBgc2hvdWxkQ29tcG9uZW50VXBkYXRlYCBpbXBsZW1lbnRhdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gUHVyZUNvbXBvbmVudChwKSB7XG5cdHRoaXMucHJvcHMgPSBwO1xufVxuUHVyZUNvbXBvbmVudC5wcm90b3R5cGUgPSBuZXcgQ29tcG9uZW50KCk7XG4vLyBTb21lIHRoaXJkLXBhcnR5IGxpYnJhcmllcyBjaGVjayBpZiB0aGlzIHByb3BlcnR5IGlzIHByZXNlbnRcblB1cmVDb21wb25lbnQucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50ID0gdHJ1ZTtcblB1cmVDb21wb25lbnQucHJvdG90eXBlLnNob3VsZENvbXBvbmVudFVwZGF0ZSA9IGZ1bmN0aW9uKHByb3BzLCBzdGF0ZSkge1xuXHRyZXR1cm4gc2hhbGxvd0RpZmZlcnModGhpcy5wcm9wcywgcHJvcHMpIHx8IHNoYWxsb3dEaWZmZXJzKHRoaXMuc3RhdGUsIHN0YXRlKTtcbn07XG4iLCAiaW1wb3J0IHsgY3JlYXRlRWxlbWVudCB9IGZyb20gJ3ByZWFjdCc7XG5pbXBvcnQgeyBzaGFsbG93RGlmZmVycyB9IGZyb20gJy4vdXRpbCc7XG5cbi8qKlxuICogTWVtb2l6ZSBhIGNvbXBvbmVudCwgc28gdGhhdCBpdCBvbmx5IHVwZGF0ZXMgd2hlbiB0aGUgcHJvcHMgYWN0dWFsbHkgaGF2ZVxuICogY2hhbmdlZC4gVGhpcyB3YXMgcHJldmlvdXNseSBrbm93biBhcyBgUmVhY3QucHVyZWAuXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkZ1bmN0aW9uQ29tcG9uZW50fSBjIGZ1bmN0aW9uYWwgY29tcG9uZW50XG4gKiBAcGFyYW0geyhwcmV2OiBvYmplY3QsIG5leHQ6IG9iamVjdCkgPT4gYm9vbGVhbn0gW2NvbXBhcmVyXSBDdXN0b20gZXF1YWxpdHkgZnVuY3Rpb25cbiAqIEByZXR1cm5zIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5GdW5jdGlvbkNvbXBvbmVudH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lbW8oYywgY29tcGFyZXIpIHtcblx0ZnVuY3Rpb24gc2hvdWxkVXBkYXRlKG5leHRQcm9wcykge1xuXHRcdGxldCByZWYgPSB0aGlzLnByb3BzLnJlZjtcblx0XHRsZXQgdXBkYXRlUmVmID0gcmVmID09IG5leHRQcm9wcy5yZWY7XG5cdFx0aWYgKCF1cGRhdGVSZWYgJiYgcmVmKSB7XG5cdFx0XHRyZWYuY2FsbCA/IHJlZihudWxsKSA6IChyZWYuY3VycmVudCA9IG51bGwpO1xuXHRcdH1cblxuXHRcdGlmICghY29tcGFyZXIpIHtcblx0XHRcdHJldHVybiBzaGFsbG93RGlmZmVycyh0aGlzLnByb3BzLCBuZXh0UHJvcHMpO1xuXHRcdH1cblxuXHRcdHJldHVybiAhY29tcGFyZXIodGhpcy5wcm9wcywgbmV4dFByb3BzKSB8fCAhdXBkYXRlUmVmO1xuXHR9XG5cblx0ZnVuY3Rpb24gTWVtb2VkKHByb3BzKSB7XG5cdFx0dGhpcy5zaG91bGRDb21wb25lbnRVcGRhdGUgPSBzaG91bGRVcGRhdGU7XG5cdFx0cmV0dXJuIGNyZWF0ZUVsZW1lbnQoYywgcHJvcHMpO1xuXHR9XG5cdE1lbW9lZC5kaXNwbGF5TmFtZSA9ICdNZW1vKCcgKyAoYy5kaXNwbGF5TmFtZSB8fCBjLm5hbWUpICsgJyknO1xuXHRNZW1vZWQucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQgPSB0cnVlO1xuXHRNZW1vZWQuX2ZvcndhcmRlZCA9IHRydWU7XG5cdHJldHVybiBNZW1vZWQ7XG59XG4iLCAiaW1wb3J0IHsgb3B0aW9ucyB9IGZyb20gJ3ByZWFjdCc7XG5pbXBvcnQgeyBhc3NpZ24gfSBmcm9tICcuL3V0aWwnO1xuXG5sZXQgb2xkRGlmZkhvb2sgPSBvcHRpb25zLl9kaWZmO1xub3B0aW9ucy5fZGlmZiA9IHZub2RlID0+IHtcblx0aWYgKHZub2RlLnR5cGUgJiYgdm5vZGUudHlwZS5fZm9yd2FyZGVkICYmIHZub2RlLnJlZikge1xuXHRcdHZub2RlLnByb3BzLnJlZiA9IHZub2RlLnJlZjtcblx0XHR2bm9kZS5yZWYgPSBudWxsO1xuXHR9XG5cdGlmIChvbGREaWZmSG9vaykgb2xkRGlmZkhvb2sodm5vZGUpO1xufTtcblxuZXhwb3J0IGNvbnN0IFJFQUNUX0ZPUldBUkRfU1lNQk9MID1cblx0KHR5cGVvZiBTeW1ib2wgIT0gJ3VuZGVmaW5lZCcgJiZcblx0XHRTeW1ib2wuZm9yICYmXG5cdFx0U3ltYm9sLmZvcigncmVhY3QuZm9yd2FyZF9yZWYnKSkgfHxcblx0MHhmNDc7XG5cbi8qKlxuICogUGFzcyByZWYgZG93biB0byBhIGNoaWxkLiBUaGlzIGlzIG1haW5seSB1c2VkIGluIGxpYnJhcmllcyB3aXRoIEhPQ3MgdGhhdFxuICogd3JhcCBjb21wb25lbnRzLiBVc2luZyBgZm9yd2FyZFJlZmAgdGhlcmUgaXMgYW4gZWFzeSB3YXkgdG8gZ2V0IGEgcmVmZXJlbmNlXG4gKiBvZiB0aGUgd3JhcHBlZCBjb21wb25lbnQgaW5zdGVhZCBvZiBvbmUgb2YgdGhlIHdyYXBwZXIgaXRzZWxmLlxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW5kZXgnKS5Gb3J3YXJkRm59IGZuXG4gKiBAcmV0dXJucyB7aW1wb3J0KCcuL2ludGVybmFsJykuRnVuY3Rpb25Db21wb25lbnR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3J3YXJkUmVmKGZuKSB7XG5cdGZ1bmN0aW9uIEZvcndhcmRlZChwcm9wcykge1xuXHRcdGxldCBjbG9uZSA9IGFzc2lnbih7fSwgcHJvcHMpO1xuXHRcdGRlbGV0ZSBjbG9uZS5yZWY7XG5cdFx0cmV0dXJuIGZuKGNsb25lLCBwcm9wcy5yZWYgfHwgbnVsbCk7XG5cdH1cblxuXHQvLyBtb2J4LXJlYWN0IGNoZWNrcyBmb3IgdGhpcyBiZWluZyBwcmVzZW50XG5cdEZvcndhcmRlZC4kJHR5cGVvZiA9IFJFQUNUX0ZPUldBUkRfU1lNQk9MO1xuXHQvLyBtb2J4LXJlYWN0IGhlYXZpbHkgcmVsaWVzIG9uIGltcGxlbWVudGF0aW9uIGRldGFpbHMuXG5cdC8vIEl0IGV4cGVjdHMgYW4gb2JqZWN0IGhlcmUgd2l0aCBhIGByZW5kZXJgIHByb3BlcnR5LFxuXHQvLyBhbmQgcHJvdG90eXBlLnJlbmRlciB3aWxsIGZhaWwuIFdpdGhvdXQgdGhpc1xuXHQvLyBtb2J4LXJlYWN0IHRocm93cy5cblx0Rm9yd2FyZGVkLnJlbmRlciA9IEZvcndhcmRlZDtcblxuXHRGb3J3YXJkZWQucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQgPSBGb3J3YXJkZWQuX2ZvcndhcmRlZCA9IHRydWU7XG5cdEZvcndhcmRlZC5kaXNwbGF5TmFtZSA9ICdGb3J3YXJkUmVmKCcgKyAoZm4uZGlzcGxheU5hbWUgfHwgZm4ubmFtZSkgKyAnKSc7XG5cdHJldHVybiBGb3J3YXJkZWQ7XG59XG4iLCAiaW1wb3J0IHsgdG9DaGlsZEFycmF5IH0gZnJvbSAncHJlYWN0JztcblxuY29uc3QgbWFwRm4gPSAoY2hpbGRyZW4sIGZuKSA9PiB7XG5cdGlmIChjaGlsZHJlbiA9PSBudWxsKSByZXR1cm4gbnVsbDtcblx0cmV0dXJuIHRvQ2hpbGRBcnJheSh0b0NoaWxkQXJyYXkoY2hpbGRyZW4pLm1hcChmbikpO1xufTtcblxuLy8gVGhpcyBBUEkgaXMgY29tcGxldGVseSB1bm5lY2Vzc2FyeSBmb3IgUHJlYWN0LCBzbyBpdCdzIGJhc2ljYWxseSBwYXNzdGhyb3VnaC5cbmV4cG9ydCBjb25zdCBDaGlsZHJlbiA9IHtcblx0bWFwOiBtYXBGbixcblx0Zm9yRWFjaDogbWFwRm4sXG5cdGNvdW50KGNoaWxkcmVuKSB7XG5cdFx0cmV0dXJuIGNoaWxkcmVuID8gdG9DaGlsZEFycmF5KGNoaWxkcmVuKS5sZW5ndGggOiAwO1xuXHR9LFxuXHRvbmx5KGNoaWxkcmVuKSB7XG5cdFx0Y29uc3Qgbm9ybWFsaXplZCA9IHRvQ2hpbGRBcnJheShjaGlsZHJlbik7XG5cdFx0aWYgKG5vcm1hbGl6ZWQubGVuZ3RoICE9PSAxKSB0aHJvdyAnQ2hpbGRyZW4ub25seSc7XG5cdFx0cmV0dXJuIG5vcm1hbGl6ZWRbMF07XG5cdH0sXG5cdHRvQXJyYXk6IHRvQ2hpbGRBcnJheVxufTtcbiIsICJpbXBvcnQgeyBDb21wb25lbnQsIGNyZWF0ZUVsZW1lbnQsIG9wdGlvbnMsIEZyYWdtZW50IH0gZnJvbSAncHJlYWN0JztcbmltcG9ydCB7IGFzc2lnbiB9IGZyb20gJy4vdXRpbCc7XG5cbmNvbnN0IG9sZENhdGNoRXJyb3IgPSBvcHRpb25zLl9jYXRjaEVycm9yO1xub3B0aW9ucy5fY2F0Y2hFcnJvciA9IGZ1bmN0aW9uKGVycm9yLCBuZXdWTm9kZSwgb2xkVk5vZGUsIGVycm9ySW5mbykge1xuXHRpZiAoZXJyb3IudGhlbikge1xuXHRcdC8qKiBAdHlwZSB7aW1wb3J0KCcuL2ludGVybmFsJykuQ29tcG9uZW50fSAqL1xuXHRcdGxldCBjb21wb25lbnQ7XG5cdFx0bGV0IHZub2RlID0gbmV3Vk5vZGU7XG5cblx0XHRmb3IgKDsgKHZub2RlID0gdm5vZGUuX3BhcmVudCk7ICkge1xuXHRcdFx0aWYgKChjb21wb25lbnQgPSB2bm9kZS5fY29tcG9uZW50KSAmJiBjb21wb25lbnQuX2NoaWxkRGlkU3VzcGVuZCkge1xuXHRcdFx0XHRpZiAobmV3Vk5vZGUuX2RvbSA9PSBudWxsKSB7XG5cdFx0XHRcdFx0bmV3Vk5vZGUuX2RvbSA9IG9sZFZOb2RlLl9kb207XG5cdFx0XHRcdFx0bmV3Vk5vZGUuX2NoaWxkcmVuID0gb2xkVk5vZGUuX2NoaWxkcmVuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIERvbid0IGNhbGwgb2xkQ2F0Y2hFcnJvciBpZiB3ZSBmb3VuZCBhIFN1c3BlbnNlXG5cdFx0XHRcdHJldHVybiBjb21wb25lbnQuX2NoaWxkRGlkU3VzcGVuZChlcnJvciwgbmV3Vk5vZGUpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRvbGRDYXRjaEVycm9yKGVycm9yLCBuZXdWTm9kZSwgb2xkVk5vZGUsIGVycm9ySW5mbyk7XG59O1xuXG5jb25zdCBvbGRVbm1vdW50ID0gb3B0aW9ucy51bm1vdW50O1xub3B0aW9ucy51bm1vdW50ID0gZnVuY3Rpb24odm5vZGUpIHtcblx0LyoqIEB0eXBlIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5Db21wb25lbnR9ICovXG5cdGNvbnN0IGNvbXBvbmVudCA9IHZub2RlLl9jb21wb25lbnQ7XG5cdGlmIChjb21wb25lbnQgJiYgY29tcG9uZW50Ll9vblJlc29sdmUpIHtcblx0XHRjb21wb25lbnQuX29uUmVzb2x2ZSgpO1xuXHR9XG5cblx0Ly8gaWYgdGhlIGNvbXBvbmVudCBpcyBzdGlsbCBoeWRyYXRpbmdcblx0Ly8gbW9zdCBsaWtlbHkgaXQgaXMgYmVjYXVzZSB0aGUgY29tcG9uZW50IGlzIHN1c3BlbmRlZFxuXHQvLyB3ZSBzZXQgdGhlIHZub2RlLnR5cGUgYXMgYG51bGxgIHNvIHRoYXQgaXQgaXMgbm90IGEgdHlwZW9mIGZ1bmN0aW9uXG5cdC8vIHNvIHRoZSB1bm1vdW50IHdpbGwgcmVtb3ZlIHRoZSB2bm9kZS5fZG9tXG5cdGlmIChjb21wb25lbnQgJiYgdm5vZGUuX2h5ZHJhdGluZyA9PT0gdHJ1ZSkge1xuXHRcdHZub2RlLnR5cGUgPSBudWxsO1xuXHR9XG5cblx0aWYgKG9sZFVubW91bnQpIG9sZFVubW91bnQodm5vZGUpO1xufTtcblxuZnVuY3Rpb24gZGV0YWNoZWRDbG9uZSh2bm9kZSwgZGV0YWNoZWRQYXJlbnQsIHBhcmVudERvbSkge1xuXHRpZiAodm5vZGUpIHtcblx0XHRpZiAodm5vZGUuX2NvbXBvbmVudCAmJiB2bm9kZS5fY29tcG9uZW50Ll9faG9va3MpIHtcblx0XHRcdHZub2RlLl9jb21wb25lbnQuX19ob29rcy5fbGlzdC5mb3JFYWNoKGVmZmVjdCA9PiB7XG5cdFx0XHRcdGlmICh0eXBlb2YgZWZmZWN0Ll9jbGVhbnVwID09ICdmdW5jdGlvbicpIGVmZmVjdC5fY2xlYW51cCgpO1xuXHRcdFx0fSk7XG5cblx0XHRcdHZub2RlLl9jb21wb25lbnQuX19ob29rcyA9IG51bGw7XG5cdFx0fVxuXG5cdFx0dm5vZGUgPSBhc3NpZ24oe30sIHZub2RlKTtcblx0XHRpZiAodm5vZGUuX2NvbXBvbmVudCAhPSBudWxsKSB7XG5cdFx0XHRpZiAodm5vZGUuX2NvbXBvbmVudC5fcGFyZW50RG9tID09PSBwYXJlbnREb20pIHtcblx0XHRcdFx0dm5vZGUuX2NvbXBvbmVudC5fcGFyZW50RG9tID0gZGV0YWNoZWRQYXJlbnQ7XG5cdFx0XHR9XG5cdFx0XHR2bm9kZS5fY29tcG9uZW50ID0gbnVsbDtcblx0XHR9XG5cblx0XHR2bm9kZS5fY2hpbGRyZW4gPVxuXHRcdFx0dm5vZGUuX2NoaWxkcmVuICYmXG5cdFx0XHR2bm9kZS5fY2hpbGRyZW4ubWFwKGNoaWxkID0+XG5cdFx0XHRcdGRldGFjaGVkQ2xvbmUoY2hpbGQsIGRldGFjaGVkUGFyZW50LCBwYXJlbnREb20pXG5cdFx0XHQpO1xuXHR9XG5cblx0cmV0dXJuIHZub2RlO1xufVxuXG5mdW5jdGlvbiByZW1vdmVPcmlnaW5hbCh2bm9kZSwgZGV0YWNoZWRQYXJlbnQsIG9yaWdpbmFsUGFyZW50KSB7XG5cdGlmICh2bm9kZSkge1xuXHRcdHZub2RlLl9vcmlnaW5hbCA9IG51bGw7XG5cdFx0dm5vZGUuX2NoaWxkcmVuID1cblx0XHRcdHZub2RlLl9jaGlsZHJlbiAmJlxuXHRcdFx0dm5vZGUuX2NoaWxkcmVuLm1hcChjaGlsZCA9PlxuXHRcdFx0XHRyZW1vdmVPcmlnaW5hbChjaGlsZCwgZGV0YWNoZWRQYXJlbnQsIG9yaWdpbmFsUGFyZW50KVxuXHRcdFx0KTtcblxuXHRcdGlmICh2bm9kZS5fY29tcG9uZW50KSB7XG5cdFx0XHRpZiAodm5vZGUuX2NvbXBvbmVudC5fcGFyZW50RG9tID09PSBkZXRhY2hlZFBhcmVudCkge1xuXHRcdFx0XHRpZiAodm5vZGUuX2RvbSkge1xuXHRcdFx0XHRcdG9yaWdpbmFsUGFyZW50Lmluc2VydEJlZm9yZSh2bm9kZS5fZG9tLCB2bm9kZS5fbmV4dERvbSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dm5vZGUuX2NvbXBvbmVudC5fZm9yY2UgPSB0cnVlO1xuXHRcdFx0XHR2bm9kZS5fY29tcG9uZW50Ll9wYXJlbnREb20gPSBvcmlnaW5hbFBhcmVudDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gdm5vZGU7XG59XG5cbi8vIGhhdmluZyBjdXN0b20gaW5oZXJpdGFuY2UgaW5zdGVhZCBvZiBhIGNsYXNzIGhlcmUgc2F2ZXMgYSBsb3Qgb2YgYnl0ZXNcbmV4cG9ydCBmdW5jdGlvbiBTdXNwZW5zZSgpIHtcblx0Ly8gd2UgZG8gbm90IGNhbGwgc3VwZXIgaGVyZSB0byBnb2xmIHNvbWUgYnl0ZXMuLi5cblx0dGhpcy5fcGVuZGluZ1N1c3BlbnNpb25Db3VudCA9IDA7XG5cdHRoaXMuX3N1c3BlbmRlcnMgPSBudWxsO1xuXHR0aGlzLl9kZXRhY2hPbk5leHRSZW5kZXIgPSBudWxsO1xufVxuXG4vLyBUaGluZ3Mgd2UgZG8gaGVyZSB0byBzYXZlIHNvbWUgYnl0ZXMgYnV0IGFyZSBub3QgcHJvcGVyIEpTIGluaGVyaXRhbmNlOlxuLy8gLSBjYWxsIGBuZXcgQ29tcG9uZW50KClgIGFzIHRoZSBwcm90b3R5cGVcbi8vIC0gZG8gbm90IHNldCBgU3VzcGVuc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yYCB0byBgU3VzcGVuc2VgXG5TdXNwZW5zZS5wcm90b3R5cGUgPSBuZXcgQ29tcG9uZW50KCk7XG5cbi8qKlxuICogQHRoaXMge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlN1c3BlbnNlQ29tcG9uZW50fVxuICogQHBhcmFtIHtQcm9taXNlfSBwcm9taXNlIFRoZSB0aHJvd24gcHJvbWlzZVxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5WTm9kZTxhbnksIGFueT59IHN1c3BlbmRpbmdWTm9kZSBUaGUgc3VzcGVuZGluZyBjb21wb25lbnRcbiAqL1xuU3VzcGVuc2UucHJvdG90eXBlLl9jaGlsZERpZFN1c3BlbmQgPSBmdW5jdGlvbihwcm9taXNlLCBzdXNwZW5kaW5nVk5vZGUpIHtcblx0Y29uc3Qgc3VzcGVuZGluZ0NvbXBvbmVudCA9IHN1c3BlbmRpbmdWTm9kZS5fY29tcG9uZW50O1xuXG5cdC8qKiBAdHlwZSB7aW1wb3J0KCcuL2ludGVybmFsJykuU3VzcGVuc2VDb21wb25lbnR9ICovXG5cdGNvbnN0IGMgPSB0aGlzO1xuXG5cdGlmIChjLl9zdXNwZW5kZXJzID09IG51bGwpIHtcblx0XHRjLl9zdXNwZW5kZXJzID0gW107XG5cdH1cblx0Yy5fc3VzcGVuZGVycy5wdXNoKHN1c3BlbmRpbmdDb21wb25lbnQpO1xuXG5cdGNvbnN0IHJlc29sdmUgPSBzdXNwZW5kZWQoYy5fdm5vZGUpO1xuXG5cdGxldCByZXNvbHZlZCA9IGZhbHNlO1xuXHRjb25zdCBvblJlc29sdmVkID0gKCkgPT4ge1xuXHRcdGlmIChyZXNvbHZlZCkgcmV0dXJuO1xuXG5cdFx0cmVzb2x2ZWQgPSB0cnVlO1xuXHRcdHN1c3BlbmRpbmdDb21wb25lbnQuX29uUmVzb2x2ZSA9IG51bGw7XG5cblx0XHRpZiAocmVzb2x2ZSkge1xuXHRcdFx0cmVzb2x2ZShvblN1c3BlbnNpb25Db21wbGV0ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG9uU3VzcGVuc2lvbkNvbXBsZXRlKCk7XG5cdFx0fVxuXHR9O1xuXG5cdHN1c3BlbmRpbmdDb21wb25lbnQuX29uUmVzb2x2ZSA9IG9uUmVzb2x2ZWQ7XG5cblx0Y29uc3Qgb25TdXNwZW5zaW9uQ29tcGxldGUgPSAoKSA9PiB7XG5cdFx0aWYgKCEtLWMuX3BlbmRpbmdTdXNwZW5zaW9uQ291bnQpIHtcblx0XHRcdC8vIElmIHRoZSBzdXNwZW5zaW9uIHdhcyBkdXJpbmcgaHlkcmF0aW9uIHdlIGRvbid0IG5lZWQgdG8gcmVzdG9yZSB0aGVcblx0XHRcdC8vIHN1c3BlbmRlZCBjaGlsZHJlbiBpbnRvIHRoZSBfY2hpbGRyZW4gYXJyYXlcblx0XHRcdGlmIChjLnN0YXRlLl9zdXNwZW5kZWQpIHtcblx0XHRcdFx0Y29uc3Qgc3VzcGVuZGVkVk5vZGUgPSBjLnN0YXRlLl9zdXNwZW5kZWQ7XG5cdFx0XHRcdGMuX3Zub2RlLl9jaGlsZHJlblswXSA9IHJlbW92ZU9yaWdpbmFsKFxuXHRcdFx0XHRcdHN1c3BlbmRlZFZOb2RlLFxuXHRcdFx0XHRcdHN1c3BlbmRlZFZOb2RlLl9jb21wb25lbnQuX3BhcmVudERvbSxcblx0XHRcdFx0XHRzdXNwZW5kZWRWTm9kZS5fY29tcG9uZW50Ll9vcmlnaW5hbFBhcmVudERvbVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXG5cdFx0XHRjLnNldFN0YXRlKHsgX3N1c3BlbmRlZDogKGMuX2RldGFjaE9uTmV4dFJlbmRlciA9IG51bGwpIH0pO1xuXG5cdFx0XHRsZXQgc3VzcGVuZGVkO1xuXHRcdFx0d2hpbGUgKChzdXNwZW5kZWQgPSBjLl9zdXNwZW5kZXJzLnBvcCgpKSkge1xuXHRcdFx0XHRzdXNwZW5kZWQuZm9yY2VVcGRhdGUoKTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cblx0LyoqXG5cdCAqIFdlIGRvIG5vdCBzZXQgYHN1c3BlbmRlZDogdHJ1ZWAgZHVyaW5nIGh5ZHJhdGlvbiBiZWNhdXNlIHdlIHdhbnQgdGhlIGFjdHVhbCBtYXJrdXBcblx0ICogdG8gcmVtYWluIG9uIHNjcmVlbiBhbmQgaHlkcmF0ZSBpdCB3aGVuIHRoZSBzdXNwZW5zZSBhY3R1YWxseSBnZXRzIHJlc29sdmVkLlxuXHQgKiBXaGlsZSBpbiBub24taHlkcmF0aW9uIGNhc2VzIHRoZSB1c3VhbCBmYWxsYmFjayAtPiBjb21wb25lbnQgZmxvdyB3b3VsZCBvY2NvdXIuXG5cdCAqL1xuXHRjb25zdCB3YXNIeWRyYXRpbmcgPSBzdXNwZW5kaW5nVk5vZGUuX2h5ZHJhdGluZyA9PT0gdHJ1ZTtcblx0aWYgKCFjLl9wZW5kaW5nU3VzcGVuc2lvbkNvdW50KysgJiYgIXdhc0h5ZHJhdGluZykge1xuXHRcdGMuc2V0U3RhdGUoeyBfc3VzcGVuZGVkOiAoYy5fZGV0YWNoT25OZXh0UmVuZGVyID0gYy5fdm5vZGUuX2NoaWxkcmVuWzBdKSB9KTtcblx0fVxuXHRwcm9taXNlLnRoZW4ob25SZXNvbHZlZCwgb25SZXNvbHZlZCk7XG59O1xuXG5TdXNwZW5zZS5wcm90b3R5cGUuY29tcG9uZW50V2lsbFVubW91bnQgPSBmdW5jdGlvbigpIHtcblx0dGhpcy5fc3VzcGVuZGVycyA9IFtdO1xufTtcblxuLyoqXG4gKiBAdGhpcyB7aW1wb3J0KCcuL2ludGVybmFsJykuU3VzcGVuc2VDb21wb25lbnR9XG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlN1c3BlbnNlQ29tcG9uZW50W1wicHJvcHNcIl19IHByb3BzXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlN1c3BlbnNlU3RhdGV9IHN0YXRlXG4gKi9cblN1c3BlbnNlLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbihwcm9wcywgc3RhdGUpIHtcblx0aWYgKHRoaXMuX2RldGFjaE9uTmV4dFJlbmRlcikge1xuXHRcdC8vIFdoZW4gdGhlIFN1c3BlbnNlJ3MgX3Zub2RlIHdhcyBjcmVhdGVkIGJ5IGEgY2FsbCB0byBjcmVhdGVWTm9kZVxuXHRcdC8vIChpLmUuIGR1ZSB0byBhIHNldFN0YXRlIGZ1cnRoZXIgdXAgaW4gdGhlIHRyZWUpXG5cdFx0Ly8gaXQncyBfY2hpbGRyZW4gcHJvcCBpcyBudWxsLCBpbiB0aGlzIGNhc2Ugd2UgXCJmb3JnZXRcIiBhYm91dCB0aGUgcGFya2VkIHZub2RlcyB0byBkZXRhY2hcblx0XHRpZiAodGhpcy5fdm5vZGUuX2NoaWxkcmVuKSB7XG5cdFx0XHRjb25zdCBkZXRhY2hlZFBhcmVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHRcdFx0Y29uc3QgZGV0YWNoZWRDb21wb25lbnQgPSB0aGlzLl92bm9kZS5fY2hpbGRyZW5bMF0uX2NvbXBvbmVudDtcblx0XHRcdHRoaXMuX3Zub2RlLl9jaGlsZHJlblswXSA9IGRldGFjaGVkQ2xvbmUoXG5cdFx0XHRcdHRoaXMuX2RldGFjaE9uTmV4dFJlbmRlcixcblx0XHRcdFx0ZGV0YWNoZWRQYXJlbnQsXG5cdFx0XHRcdChkZXRhY2hlZENvbXBvbmVudC5fb3JpZ2luYWxQYXJlbnREb20gPSBkZXRhY2hlZENvbXBvbmVudC5fcGFyZW50RG9tKVxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHR0aGlzLl9kZXRhY2hPbk5leHRSZW5kZXIgPSBudWxsO1xuXHR9XG5cblx0Ly8gV3JhcCBmYWxsYmFjayB0cmVlIGluIGEgVk5vZGUgdGhhdCBwcmV2ZW50cyBpdHNlbGYgZnJvbSBiZWluZyBtYXJrZWQgYXMgYWJvcnRpbmcgbWlkLWh5ZHJhdGlvbjpcblx0LyoqIEB0eXBlIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5WTm9kZX0gKi9cblx0Y29uc3QgZmFsbGJhY2sgPVxuXHRcdHN0YXRlLl9zdXNwZW5kZWQgJiYgY3JlYXRlRWxlbWVudChGcmFnbWVudCwgbnVsbCwgcHJvcHMuZmFsbGJhY2spO1xuXHRpZiAoZmFsbGJhY2spIGZhbGxiYWNrLl9oeWRyYXRpbmcgPSBudWxsO1xuXG5cdHJldHVybiBbXG5cdFx0Y3JlYXRlRWxlbWVudChGcmFnbWVudCwgbnVsbCwgc3RhdGUuX3N1c3BlbmRlZCA/IG51bGwgOiBwcm9wcy5jaGlsZHJlbiksXG5cdFx0ZmFsbGJhY2tcblx0XTtcbn07XG5cbi8qKlxuICogQ2hlY2tzIGFuZCBjYWxscyB0aGUgcGFyZW50IGNvbXBvbmVudCdzIF9zdXNwZW5kZWQgbWV0aG9kLCBwYXNzaW5nIGluIHRoZVxuICogc3VzcGVuZGVkIHZub2RlLiBUaGlzIGlzIGEgd2F5IGZvciBhIHBhcmVudCAoZS5nLiBTdXNwZW5zZUxpc3QpIHRvIGdldCBub3RpZmllZFxuICogdGhhdCBvbmUgb2YgaXRzIGNoaWxkcmVuL2Rlc2NlbmRhbnRzIHN1c3BlbmRlZC5cbiAqXG4gKiBUaGUgcGFyZW50IE1BWSByZXR1cm4gYSBjYWxsYmFjay4gVGhlIGNhbGxiYWNrIHdpbGwgZ2V0IGNhbGxlZCB3aGVuIHRoZVxuICogc3VzcGVuc2lvbiByZXNvbHZlcywgbm90aWZ5aW5nIHRoZSBwYXJlbnQgb2YgdGhlIGZhY3QuXG4gKiBNb3Jlb3ZlciwgdGhlIGNhbGxiYWNrIGdldHMgZnVuY3Rpb24gYHVuc3VzcGVuZGAgYXMgYSBwYXJhbWV0ZXIuIFRoZSByZXNvbHZlZFxuICogY2hpbGQgZGVzY2VuZGFudCB3aWxsIG5vdCBhY3R1YWxseSBnZXQgdW5zdXNwZW5kZWQgdW50aWwgYHVuc3VzcGVuZGAgZ2V0cyBjYWxsZWQuXG4gKiBUaGlzIGlzIGEgd2F5IGZvciB0aGUgcGFyZW50IHRvIGRlbGF5IHVuc3VzcGVuZGluZy5cbiAqXG4gKiBJZiB0aGUgcGFyZW50IGRvZXMgbm90IHJldHVybiBhIGNhbGxiYWNrIHRoZW4gdGhlIHJlc29sdmVkIHZub2RlXG4gKiBnZXRzIHVuc3VzcGVuZGVkIGltbWVkaWF0ZWx5IHdoZW4gaXQgcmVzb2x2ZXMuXG4gKlxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5WTm9kZX0gdm5vZGVcbiAqIEByZXR1cm5zIHsoKHVuc3VzcGVuZDogKCkgPT4gdm9pZCkgPT4gdm9pZCk/fVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3VzcGVuZGVkKHZub2RlKSB7XG5cdC8qKiBAdHlwZSB7aW1wb3J0KCcuL2ludGVybmFsJykuQ29tcG9uZW50fSAqL1xuXHRsZXQgY29tcG9uZW50ID0gdm5vZGUuX3BhcmVudC5fY29tcG9uZW50O1xuXHRyZXR1cm4gY29tcG9uZW50ICYmIGNvbXBvbmVudC5fc3VzcGVuZGVkICYmIGNvbXBvbmVudC5fc3VzcGVuZGVkKHZub2RlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhenkobG9hZGVyKSB7XG5cdGxldCBwcm9tO1xuXHRsZXQgY29tcG9uZW50O1xuXHRsZXQgZXJyb3I7XG5cblx0ZnVuY3Rpb24gTGF6eShwcm9wcykge1xuXHRcdGlmICghcHJvbSkge1xuXHRcdFx0cHJvbSA9IGxvYWRlcigpO1xuXHRcdFx0cHJvbS50aGVuKFxuXHRcdFx0XHRleHBvcnRzID0+IHtcblx0XHRcdFx0XHRjb21wb25lbnQgPSBleHBvcnRzLmRlZmF1bHQgfHwgZXhwb3J0cztcblx0XHRcdFx0fSxcblx0XHRcdFx0ZSA9PiB7XG5cdFx0XHRcdFx0ZXJyb3IgPSBlO1xuXHRcdFx0XHR9XG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdGlmIChlcnJvcikge1xuXHRcdFx0dGhyb3cgZXJyb3I7XG5cdFx0fVxuXG5cdFx0aWYgKCFjb21wb25lbnQpIHtcblx0XHRcdHRocm93IHByb207XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGNyZWF0ZUVsZW1lbnQoY29tcG9uZW50LCBwcm9wcyk7XG5cdH1cblxuXHRMYXp5LmRpc3BsYXlOYW1lID0gJ0xhenknO1xuXHRMYXp5Ll9mb3J3YXJkZWQgPSB0cnVlO1xuXHRyZXR1cm4gTGF6eTtcbn1cbiIsICJpbXBvcnQgeyBDb21wb25lbnQsIHRvQ2hpbGRBcnJheSB9IGZyb20gJ3ByZWFjdCc7XG5pbXBvcnQgeyBzdXNwZW5kZWQgfSBmcm9tICcuL3N1c3BlbnNlLmpzJztcblxuLy8gSW5kZXhlcyB0byBsaW5rZWQgbGlzdCBub2RlcyAobm9kZXMgYXJlIHN0b3JlZCBhcyBhcnJheXMgdG8gc2F2ZSBieXRlcykuXG5jb25zdCBTVVNQRU5ERURfQ09VTlQgPSAwO1xuY29uc3QgUkVTT0xWRURfQ09VTlQgPSAxO1xuY29uc3QgTkVYVF9OT0RFID0gMjtcblxuLy8gSGF2aW5nIGN1c3RvbSBpbmhlcml0YW5jZSBpbnN0ZWFkIG9mIGEgY2xhc3MgaGVyZSBzYXZlcyBhIGxvdCBvZiBieXRlcy5cbmV4cG9ydCBmdW5jdGlvbiBTdXNwZW5zZUxpc3QoKSB7XG5cdHRoaXMuX25leHQgPSBudWxsO1xuXHR0aGlzLl9tYXAgPSBudWxsO1xufVxuXG4vLyBNYXJrIG9uZSBvZiBjaGlsZCdzIGVhcmxpZXIgc3VzcGVuc2lvbnMgYXMgcmVzb2x2ZWQuXG4vLyBTb21lIHBlbmRpbmcgY2FsbGJhY2tzIG1heSBiZWNvbWUgY2FsbGFibGUgZHVlIHRvIHRoaXNcbi8vIChlLmcuIHRoZSBsYXN0IHN1c3BlbmRlZCBkZXNjZW5kYW50IGdldHMgcmVzb2x2ZWQgd2hlblxuLy8gcmV2ZWFsT3JkZXIgPT09ICd0b2dldGhlcicpLiBQcm9jZXNzIHRob3NlIGNhbGxiYWNrcyBhcyB3ZWxsLlxuY29uc3QgcmVzb2x2ZSA9IChsaXN0LCBjaGlsZCwgbm9kZSkgPT4ge1xuXHRpZiAoKytub2RlW1JFU09MVkVEX0NPVU5UXSA9PT0gbm9kZVtTVVNQRU5ERURfQ09VTlRdKSB7XG5cdFx0Ly8gVGhlIG51bWJlciBhIGNoaWxkIChvciBhbnkgb2YgaXRzIGRlc2NlbmRhbnRzKSBoYXMgYmVlbiBzdXNwZW5kZWRcblx0XHQvLyBtYXRjaGVzIHRoZSBudW1iZXIgb2YgdGltZXMgaXQncyBiZWVuIHJlc29sdmVkLiBUaGVyZWZvcmUgd2Vcblx0XHQvLyBtYXJrIHRoZSBjaGlsZCBhcyBjb21wbGV0ZWx5IHJlc29sdmVkIGJ5IGRlbGV0aW5nIGl0IGZyb20gLl9tYXAuXG5cdFx0Ly8gVGhpcyBpcyB1c2VkIHRvIGZpZ3VyZSBvdXQgd2hlbiAqYWxsKiBjaGlsZHJlbiBoYXZlIGJlZW4gY29tcGxldGVseVxuXHRcdC8vIHJlc29sdmVkIHdoZW4gcmV2ZWFsT3JkZXIgaXMgJ3RvZ2V0aGVyJy5cblx0XHRsaXN0Ll9tYXAuZGVsZXRlKGNoaWxkKTtcblx0fVxuXG5cdC8vIElmIHJldmVhbE9yZGVyIGlzIGZhbHN5IHRoZW4gd2UgY2FuIGRvIGFuIGVhcmx5IGV4aXQsIGFzIHRoZVxuXHQvLyBjYWxsYmFja3Mgd29uJ3QgZ2V0IHF1ZXVlZCBpbiB0aGUgbm9kZSBhbnl3YXkuXG5cdC8vIElmIHJldmVhbE9yZGVyIGlzICd0b2dldGhlcicgdGhlbiBhbHNvIGRvIGFuIGVhcmx5IGV4aXRcblx0Ly8gaWYgYWxsIHN1c3BlbmRlZCBkZXNjZW5kYW50cyBoYXZlIG5vdCB5ZXQgYmVlbiByZXNvbHZlZC5cblx0aWYgKFxuXHRcdCFsaXN0LnByb3BzLnJldmVhbE9yZGVyIHx8XG5cdFx0KGxpc3QucHJvcHMucmV2ZWFsT3JkZXJbMF0gPT09ICd0JyAmJiBsaXN0Ll9tYXAuc2l6ZSlcblx0KSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Ly8gV2FsayB0aGUgY3VycmVudGx5IHN1c3BlbmRlZCBjaGlsZHJlbiBpbiBvcmRlciwgY2FsbGluZyB0aGVpclxuXHQvLyBzdG9yZWQgY2FsbGJhY2tzIG9uIHRoZSB3YXkuIFN0b3AgaWYgd2UgZW5jb3VudGVyIGEgY2hpbGQgdGhhdFxuXHQvLyBoYXMgbm90IGJlZW4gY29tcGxldGVseSByZXNvbHZlZCB5ZXQuXG5cdG5vZGUgPSBsaXN0Ll9uZXh0O1xuXHR3aGlsZSAobm9kZSkge1xuXHRcdHdoaWxlIChub2RlLmxlbmd0aCA+IDMpIHtcblx0XHRcdG5vZGUucG9wKCkoKTtcblx0XHR9XG5cdFx0aWYgKG5vZGVbUkVTT0xWRURfQ09VTlRdIDwgbm9kZVtTVVNQRU5ERURfQ09VTlRdKSB7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdFx0bGlzdC5fbmV4dCA9IG5vZGUgPSBub2RlW05FWFRfTk9ERV07XG5cdH1cbn07XG5cbi8vIFRoaW5ncyB3ZSBkbyBoZXJlIHRvIHNhdmUgc29tZSBieXRlcyBidXQgYXJlIG5vdCBwcm9wZXIgSlMgaW5oZXJpdGFuY2U6XG4vLyAtIGNhbGwgYG5ldyBDb21wb25lbnQoKWAgYXMgdGhlIHByb3RvdHlwZVxuLy8gLSBkbyBub3Qgc2V0IGBTdXNwZW5zZS5wcm90b3R5cGUuY29uc3RydWN0b3JgIHRvIGBTdXNwZW5zZWBcblN1c3BlbnNlTGlzdC5wcm90b3R5cGUgPSBuZXcgQ29tcG9uZW50KCk7XG5cblN1c3BlbnNlTGlzdC5wcm90b3R5cGUuX3N1c3BlbmRlZCA9IGZ1bmN0aW9uKGNoaWxkKSB7XG5cdGNvbnN0IGxpc3QgPSB0aGlzO1xuXHRjb25zdCBkZWxlZ2F0ZWQgPSBzdXNwZW5kZWQobGlzdC5fdm5vZGUpO1xuXG5cdGxldCBub2RlID0gbGlzdC5fbWFwLmdldChjaGlsZCk7XG5cdG5vZGVbU1VTUEVOREVEX0NPVU5UXSsrO1xuXG5cdHJldHVybiB1bnN1c3BlbmQgPT4ge1xuXHRcdGNvbnN0IHdyYXBwZWRVbnN1c3BlbmQgPSAoKSA9PiB7XG5cdFx0XHRpZiAoIWxpc3QucHJvcHMucmV2ZWFsT3JkZXIpIHtcblx0XHRcdFx0Ly8gU3BlY2lhbCBjYXNlIHRoZSB1bmRlZmluZWQgKGZhbHN5KSByZXZlYWxPcmRlciwgYXMgdGhlcmVcblx0XHRcdFx0Ly8gaXMgbm8gbmVlZCB0byBjb29yZGluYXRlIGEgc3BlY2lmaWMgb3JkZXIgb3IgdW5zdXNwZW5kcy5cblx0XHRcdFx0dW5zdXNwZW5kKCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRub2RlLnB1c2godW5zdXNwZW5kKTtcblx0XHRcdFx0cmVzb2x2ZShsaXN0LCBjaGlsZCwgbm9kZSk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHRpZiAoZGVsZWdhdGVkKSB7XG5cdFx0XHRkZWxlZ2F0ZWQod3JhcHBlZFVuc3VzcGVuZCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHdyYXBwZWRVbnN1c3BlbmQoKTtcblx0XHR9XG5cdH07XG59O1xuXG5TdXNwZW5zZUxpc3QucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uKHByb3BzKSB7XG5cdHRoaXMuX25leHQgPSBudWxsO1xuXHR0aGlzLl9tYXAgPSBuZXcgTWFwKCk7XG5cblx0Y29uc3QgY2hpbGRyZW4gPSB0b0NoaWxkQXJyYXkocHJvcHMuY2hpbGRyZW4pO1xuXHRpZiAocHJvcHMucmV2ZWFsT3JkZXIgJiYgcHJvcHMucmV2ZWFsT3JkZXJbMF0gPT09ICdiJykge1xuXHRcdC8vIElmIG9yZGVyID09PSAnYmFja3dhcmRzJyAob3IsIHdlbGwsIGFueXRoaW5nIHN0YXJ0aW5nIHdpdGggYSAnYicpXG5cdFx0Ly8gdGhlbiBmbGlwIHRoZSBjaGlsZCBsaXN0IGFyb3VuZCBzbyB0aGF0IHRoZSBsYXN0IGNoaWxkIHdpbGwgYmVcblx0XHQvLyB0aGUgZmlyc3QgaW4gdGhlIGxpbmtlZCBsaXN0LlxuXHRcdGNoaWxkcmVuLnJldmVyc2UoKTtcblx0fVxuXHQvLyBCdWlsZCB0aGUgbGlua2VkIGxpc3QuIEl0ZXJhdGUgdGhyb3VnaCB0aGUgY2hpbGRyZW4gaW4gcmV2ZXJzZSBvcmRlclxuXHQvLyBzbyB0aGF0IGBfbmV4dGAgcG9pbnRzIHRvIHRoZSBmaXJzdCBsaW5rZWQgbGlzdCBub2RlIHRvIGJlIHJlc29sdmVkLlxuXHRmb3IgKGxldCBpID0gY2hpbGRyZW4ubGVuZ3RoOyBpLS07ICkge1xuXHRcdC8vIENyZWF0ZSBhIG5ldyBsaW5rZWQgbGlzdCBub2RlIGFzIGFuIGFycmF5IG9mIGZvcm06XG5cdFx0Ly8gXHRbc3VzcGVuZGVkX2NvdW50LCByZXNvbHZlZF9jb3VudCwgbmV4dF9ub2RlXVxuXHRcdC8vIHdoZXJlIHN1c3BlbmRlZF9jb3VudCBhbmQgcmVzb2x2ZWRfY291bnQgYXJlIG51bWVyaWMgY291bnRlcnMgZm9yXG5cdFx0Ly8ga2VlcGluZyB0cmFjayBob3cgbWFueSB0aW1lcyBhIG5vZGUgaGFzIGJlZW4gc3VzcGVuZGVkIGFuZCByZXNvbHZlZC5cblx0XHQvL1xuXHRcdC8vIE5vdGUgdGhhdCBzdXNwZW5kZWRfY291bnQgc3RhcnRzIGZyb20gMSBpbnN0ZWFkIG9mIDAsIHNvIHdlIGNhbiBibG9ja1xuXHRcdC8vIHByb2Nlc3NpbmcgY2FsbGJhY2tzIHVudGlsIGNvbXBvbmVudERpZE1vdW50IGhhcyBiZWVuIGNhbGxlZC4gSW4gYSBzZW5zZVxuXHRcdC8vIG5vZGUgaXMgc3VzcGVuZGVkIGF0IGxlYXN0IHVudGlsIGNvbXBvbmVudERpZE1vdW50IGdldHMgY2FsbGVkIVxuXHRcdC8vXG5cdFx0Ly8gUGVuZGluZyBjYWxsYmFja3MgYXJlIGFkZGVkIHRvIHRoZSBlbmQgb2YgdGhlIG5vZGU6XG5cdFx0Ly8gXHRbc3VzcGVuZGVkX2NvdW50LCByZXNvbHZlZF9jb3VudCwgbmV4dF9ub2RlLCBjYWxsYmFja18wLCBjYWxsYmFja18xLCAuLi5dXG5cdFx0dGhpcy5fbWFwLnNldChjaGlsZHJlbltpXSwgKHRoaXMuX25leHQgPSBbMSwgMCwgdGhpcy5fbmV4dF0pKTtcblx0fVxuXHRyZXR1cm4gcHJvcHMuY2hpbGRyZW47XG59O1xuXG5TdXNwZW5zZUxpc3QucHJvdG90eXBlLmNvbXBvbmVudERpZFVwZGF0ZSA9IFN1c3BlbnNlTGlzdC5wcm90b3R5cGUuY29tcG9uZW50RGlkTW91bnQgPSBmdW5jdGlvbigpIHtcblx0Ly8gSXRlcmF0ZSB0aHJvdWdoIGFsbCBjaGlsZHJlbiBhZnRlciBtb3VudGluZyBmb3IgdHdvIHJlYXNvbnM6XG5cdC8vIDEuIEFzIGVhY2ggbm9kZVtTVVNQRU5ERURfQ09VTlRdIHN0YXJ0cyBmcm9tIDEsIHRoaXMgaXRlcmF0aW9uIGluY3JlYXNlc1xuXHQvLyAgICBlYWNoIG5vZGVbUkVMRUFTRURfQ09VTlRdIGJ5IDEsIHRoZXJlZm9yZSBiYWxhbmNpbmcgdGhlIGNvdW50ZXJzLlxuXHQvLyAgICBUaGUgbm9kZXMgY2FuIG5vdyBiZSBjb21wbGV0ZWx5IGNvbnN1bWVkIGZyb20gdGhlIGxpbmtlZCBsaXN0LlxuXHQvLyAyLiBIYW5kbGUgbm9kZXMgdGhhdCBtaWdodCBoYXZlIGdvdHRlbiByZXNvbHZlZCBiZXR3ZWVuIHJlbmRlciBhbmRcblx0Ly8gICAgY29tcG9uZW50RGlkTW91bnQuXG5cdHRoaXMuX21hcC5mb3JFYWNoKChub2RlLCBjaGlsZCkgPT4ge1xuXHRcdHJlc29sdmUodGhpcywgY2hpbGQsIG5vZGUpO1xuXHR9KTtcbn07XG4iLCAiaW1wb3J0IHsgY3JlYXRlRWxlbWVudCwgcmVuZGVyIH0gZnJvbSAncHJlYWN0JztcblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi4vLi4vc3JjL2luZGV4JykuUmVuZGVyYWJsZVByb3BzPHsgY29udGV4dDogYW55IH0+fSBwcm9wc1xuICovXG5mdW5jdGlvbiBDb250ZXh0UHJvdmlkZXIocHJvcHMpIHtcblx0dGhpcy5nZXRDaGlsZENvbnRleHQgPSAoKSA9PiBwcm9wcy5jb250ZXh0O1xuXHRyZXR1cm4gcHJvcHMuY2hpbGRyZW47XG59XG5cbi8qKlxuICogUG9ydGFsIGNvbXBvbmVudFxuICogQHRoaXMge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkNvbXBvbmVudH1cbiAqIEBwYXJhbSB7b2JqZWN0IHwgbnVsbCB8IHVuZGVmaW5lZH0gcHJvcHNcbiAqXG4gKiBUT0RPOiB1c2UgY3JlYXRlUm9vdCgpIGluc3RlYWQgb2YgZmFrZSByb290XG4gKi9cbmZ1bmN0aW9uIFBvcnRhbChwcm9wcykge1xuXHRjb25zdCBfdGhpcyA9IHRoaXM7XG5cdGxldCBjb250YWluZXIgPSBwcm9wcy5fY29udGFpbmVyO1xuXG5cdF90aGlzLmNvbXBvbmVudFdpbGxVbm1vdW50ID0gZnVuY3Rpb24oKSB7XG5cdFx0cmVuZGVyKG51bGwsIF90aGlzLl90ZW1wKTtcblx0XHRfdGhpcy5fdGVtcCA9IG51bGw7XG5cdFx0X3RoaXMuX2NvbnRhaW5lciA9IG51bGw7XG5cdH07XG5cblx0Ly8gV2hlbiB3ZSBjaGFuZ2UgY29udGFpbmVyIHdlIHNob3VsZCBjbGVhciBvdXIgb2xkIGNvbnRhaW5lciBhbmRcblx0Ly8gaW5kaWNhdGUgYSBuZXcgbW91bnQuXG5cdGlmIChfdGhpcy5fY29udGFpbmVyICYmIF90aGlzLl9jb250YWluZXIgIT09IGNvbnRhaW5lcikge1xuXHRcdF90aGlzLmNvbXBvbmVudFdpbGxVbm1vdW50KCk7XG5cdH1cblxuXHQvLyBXaGVuIHByb3BzLnZub2RlIGlzIHVuZGVmaW5lZC9mYWxzZS9udWxsIHdlIGFyZSBkZWFsaW5nIHdpdGggc29tZSBraW5kIG9mXG5cdC8vIGNvbmRpdGlvbmFsIHZub2RlLiBUaGlzIHNob3VsZCBub3QgdHJpZ2dlciBhIHJlbmRlci5cblx0aWYgKHByb3BzLl92bm9kZSkge1xuXHRcdGlmICghX3RoaXMuX3RlbXApIHtcblx0XHRcdF90aGlzLl9jb250YWluZXIgPSBjb250YWluZXI7XG5cblx0XHRcdC8vIENyZWF0ZSBhIGZha2UgRE9NIHBhcmVudCBub2RlIHRoYXQgbWFuYWdlcyBhIHN1YnNldCBvZiBgY29udGFpbmVyYCdzIGNoaWxkcmVuOlxuXHRcdFx0X3RoaXMuX3RlbXAgPSB7XG5cdFx0XHRcdG5vZGVUeXBlOiAxLFxuXHRcdFx0XHRwYXJlbnROb2RlOiBjb250YWluZXIsXG5cdFx0XHRcdGNoaWxkTm9kZXM6IFtdLFxuXHRcdFx0XHRhcHBlbmRDaGlsZChjaGlsZCkge1xuXHRcdFx0XHRcdHRoaXMuY2hpbGROb2Rlcy5wdXNoKGNoaWxkKTtcblx0XHRcdFx0XHRfdGhpcy5fY29udGFpbmVyLmFwcGVuZENoaWxkKGNoaWxkKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0aW5zZXJ0QmVmb3JlKGNoaWxkLCBiZWZvcmUpIHtcblx0XHRcdFx0XHR0aGlzLmNoaWxkTm9kZXMucHVzaChjaGlsZCk7XG5cdFx0XHRcdFx0X3RoaXMuX2NvbnRhaW5lci5hcHBlbmRDaGlsZChjaGlsZCk7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHJlbW92ZUNoaWxkKGNoaWxkKSB7XG5cdFx0XHRcdFx0dGhpcy5jaGlsZE5vZGVzLnNwbGljZSh0aGlzLmNoaWxkTm9kZXMuaW5kZXhPZihjaGlsZCkgPj4+IDEsIDEpO1xuXHRcdFx0XHRcdF90aGlzLl9jb250YWluZXIucmVtb3ZlQ2hpbGQoY2hpbGQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdC8vIFJlbmRlciBvdXIgd3JhcHBpbmcgZWxlbWVudCBpbnRvIHRlbXAuXG5cdFx0cmVuZGVyKFxuXHRcdFx0Y3JlYXRlRWxlbWVudChDb250ZXh0UHJvdmlkZXIsIHsgY29udGV4dDogX3RoaXMuY29udGV4dCB9LCBwcm9wcy5fdm5vZGUpLFxuXHRcdFx0X3RoaXMuX3RlbXBcblx0XHQpO1xuXHR9XG5cdC8vIFdoZW4gd2UgY29tZSBmcm9tIGEgY29uZGl0aW9uYWwgcmVuZGVyLCBvbiBhIG1vdW50ZWRcblx0Ly8gcG9ydGFsIHdlIHNob3VsZCBjbGVhciB0aGUgRE9NLlxuXHRlbHNlIGlmIChfdGhpcy5fdGVtcCkge1xuXHRcdF90aGlzLmNvbXBvbmVudFdpbGxVbm1vdW50KCk7XG5cdH1cbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBgUG9ydGFsYCB0byBjb250aW51ZSByZW5kZXJpbmcgdGhlIHZub2RlIHRyZWUgYXQgYSBkaWZmZXJlbnQgRE9NIG5vZGVcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL2ludGVybmFsJykuVk5vZGV9IHZub2RlIFRoZSB2bm9kZSB0byByZW5kZXJcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL2ludGVybmFsJykuUHJlYWN0RWxlbWVudH0gY29udGFpbmVyIFRoZSBET00gbm9kZSB0byBjb250aW51ZSByZW5kZXJpbmcgaW4gdG8uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQb3J0YWwodm5vZGUsIGNvbnRhaW5lcikge1xuXHRjb25zdCBlbCA9IGNyZWF0ZUVsZW1lbnQoUG9ydGFsLCB7IF92bm9kZTogdm5vZGUsIF9jb250YWluZXI6IGNvbnRhaW5lciB9KTtcblx0ZWwuY29udGFpbmVySW5mbyA9IGNvbnRhaW5lcjtcblx0cmV0dXJuIGVsO1xufVxuIiwgImltcG9ydCB7XG5cdHJlbmRlciBhcyBwcmVhY3RSZW5kZXIsXG5cdGh5ZHJhdGUgYXMgcHJlYWN0SHlkcmF0ZSxcblx0b3B0aW9ucyxcblx0dG9DaGlsZEFycmF5LFxuXHRDb21wb25lbnRcbn0gZnJvbSAncHJlYWN0JztcblxuZXhwb3J0IGNvbnN0IFJFQUNUX0VMRU1FTlRfVFlQRSA9XG5cdCh0eXBlb2YgU3ltYm9sICE9ICd1bmRlZmluZWQnICYmIFN5bWJvbC5mb3IgJiYgU3ltYm9sLmZvcigncmVhY3QuZWxlbWVudCcpKSB8fFxuXHQweGVhYzc7XG5cbmNvbnN0IENBTUVMX1BST1BTID0gL14oPzphY2NlbnR8YWxpZ25tZW50fGFyYWJpY3xiYXNlbGluZXxjYXB8Y2xpcCg/IVBhdGhVKXxjb2xvcnxkb21pbmFudHxmaWxsfGZsb29kfGZvbnR8Z2x5cGgoPyFSKXxob3JpenxtYXJrZXIoPyFIfFd8VSl8b3ZlcmxpbmV8cGFpbnR8c3RvcHxzdHJpa2V0aHJvdWdofHN0cm9rZXx0ZXh0KD8hTCl8dW5kZXJsaW5lfHVuaWNvZGV8dW5pdHN8dnx2ZWN0b3J8dmVydHx3b3JkfHdyaXRpbmd8eCg/IUMpKVtBLVpdLztcblxuY29uc3QgSVNfRE9NID0gdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJztcblxuLy8gSW5wdXQgdHlwZXMgZm9yIHdoaWNoIG9uY2hhbmdlIHNob3VsZCBub3QgYmUgY29udmVydGVkIHRvIG9uaW5wdXQuXG4vLyB0eXBlPVwiZmlsZXxjaGVja2JveHxyYWRpb1wiLCBwbHVzIFwicmFuZ2VcIiBpbiBJRTExLlxuLy8gKElFMTEgZG9lc24ndCBzdXBwb3J0IFN5bWJvbCwgd2hpY2ggd2UgdXNlIGhlcmUgdG8gdHVybiBgcmFkYCBpbnRvIGByYWAgd2hpY2ggbWF0Y2hlcyBcInJhbmdlXCIpXG5jb25zdCBvbkNoYW5nZUlucHV0VHlwZSA9IHR5cGUgPT5cblx0KHR5cGVvZiBTeW1ib2wgIT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIFN5bWJvbCgpID09ICdzeW1ib2wnXG5cdFx0PyAvZmlsfGNoZXxyYWQvaVxuXHRcdDogL2ZpbHxjaGV8cmEvaVxuXHQpLnRlc3QodHlwZSk7XG5cbi8vIFNvbWUgbGlicmFyaWVzIGxpa2UgYHJlYWN0LXZpcnR1YWxpemVkYCBleHBsaWNpdGx5IGNoZWNrIGZvciB0aGlzLlxuQ29tcG9uZW50LnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50ID0ge307XG5cbi8vIGBVTlNBRkVfKmAgbGlmZWN5Y2xlIGhvb2tzXG4vLyBQcmVhY3Qgb25seSBldmVyIGludm9rZXMgdGhlIHVucHJlZml4ZWQgbWV0aG9kcy5cbi8vIEhlcmUgd2UgcHJvdmlkZSBhIGJhc2UgXCJmYWxsYmFja1wiIGltcGxlbWVudGF0aW9uIHRoYXQgY2FsbHMgYW55IGRlZmluZWQgVU5TQUZFXyBwcmVmaXhlZCBtZXRob2QuXG4vLyAtIElmIGEgY29tcG9uZW50IGRlZmluZXMgaXRzIG93biBgY29tcG9uZW50RGlkTW91bnQoKWAgKGluY2x1ZGluZyB2aWEgZGVmaW5lUHJvcGVydHkpLCB1c2UgdGhhdC5cbi8vIC0gSWYgYSBjb21wb25lbnQgZGVmaW5lcyBgVU5TQUZFX2NvbXBvbmVudERpZE1vdW50KClgLCBgY29tcG9uZW50RGlkTW91bnRgIGlzIHRoZSBhbGlhcyBnZXR0ZXIvc2V0dGVyLlxuLy8gLSBJZiBhbnl0aGluZyBhc3NpZ25zIHRvIGFuIGBVTlNBRkVfKmAgcHJvcGVydHksIHRoZSBhc3NpZ25tZW50IGlzIGZvcndhcmRlZCB0byB0aGUgdW5wcmVmaXhlZCBwcm9wZXJ0eS5cbi8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vcHJlYWN0anMvcHJlYWN0L2lzc3Vlcy8xOTQxXG5bXG5cdCdjb21wb25lbnRXaWxsTW91bnQnLFxuXHQnY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcycsXG5cdCdjb21wb25lbnRXaWxsVXBkYXRlJ1xuXS5mb3JFYWNoKGtleSA9PiB7XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb21wb25lbnQucHJvdG90eXBlLCBrZXksIHtcblx0XHRjb25maWd1cmFibGU6IHRydWUsXG5cdFx0Z2V0KCkge1xuXHRcdFx0cmV0dXJuIHRoaXNbJ1VOU0FGRV8nICsga2V5XTtcblx0XHR9LFxuXHRcdHNldCh2KSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywga2V5LCB7XG5cdFx0XHRcdGNvbmZpZ3VyYWJsZTogdHJ1ZSxcblx0XHRcdFx0d3JpdGFibGU6IHRydWUsXG5cdFx0XHRcdHZhbHVlOiB2XG5cdFx0XHR9KTtcblx0XHR9XG5cdH0pO1xufSk7XG5cbi8qKlxuICogUHJveHkgcmVuZGVyKCkgc2luY2UgUmVhY3QgcmV0dXJucyBhIENvbXBvbmVudCByZWZlcmVuY2UuXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlZOb2RlfSB2bm9kZSBWTm9kZSB0cmVlIHRvIHJlbmRlclxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5QcmVhY3RFbGVtZW50fSBwYXJlbnQgRE9NIG5vZGUgdG8gcmVuZGVyIHZub2RlIHRyZWUgaW50b1xuICogQHBhcmFtIHsoKSA9PiB2b2lkfSBbY2FsbGJhY2tdIE9wdGlvbmFsIGNhbGxiYWNrIHRoYXQgd2lsbCBiZSBjYWxsZWQgYWZ0ZXIgcmVuZGVyaW5nXG4gKiBAcmV0dXJucyB7aW1wb3J0KCcuL2ludGVybmFsJykuQ29tcG9uZW50IHwgbnVsbH0gVGhlIHJvb3QgY29tcG9uZW50IHJlZmVyZW5jZSBvciBudWxsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXIodm5vZGUsIHBhcmVudCwgY2FsbGJhY2spIHtcblx0Ly8gUmVhY3QgZGVzdHJveXMgYW55IGV4aXN0aW5nIERPTSBub2Rlcywgc2VlICMxNzI3XG5cdC8vIC4uLmJ1dCBvbmx5IG9uIHRoZSBmaXJzdCByZW5kZXIsIHNlZSAjMTgyOFxuXHRpZiAocGFyZW50Ll9jaGlsZHJlbiA9PSBudWxsKSB7XG5cdFx0cGFyZW50LnRleHRDb250ZW50ID0gJyc7XG5cdH1cblxuXHRwcmVhY3RSZW5kZXIodm5vZGUsIHBhcmVudCk7XG5cdGlmICh0eXBlb2YgY2FsbGJhY2sgPT0gJ2Z1bmN0aW9uJykgY2FsbGJhY2soKTtcblxuXHRyZXR1cm4gdm5vZGUgPyB2bm9kZS5fY29tcG9uZW50IDogbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh5ZHJhdGUodm5vZGUsIHBhcmVudCwgY2FsbGJhY2spIHtcblx0cHJlYWN0SHlkcmF0ZSh2bm9kZSwgcGFyZW50KTtcblx0aWYgKHR5cGVvZiBjYWxsYmFjayA9PSAnZnVuY3Rpb24nKSBjYWxsYmFjaygpO1xuXG5cdHJldHVybiB2bm9kZSA/IHZub2RlLl9jb21wb25lbnQgOiBudWxsO1xufVxuXG5sZXQgb2xkRXZlbnRIb29rID0gb3B0aW9ucy5ldmVudDtcbm9wdGlvbnMuZXZlbnQgPSBlID0+IHtcblx0aWYgKG9sZEV2ZW50SG9vaykgZSA9IG9sZEV2ZW50SG9vayhlKTtcblx0ZS5wZXJzaXN0ID0gZW1wdHk7XG5cdGUuaXNQcm9wYWdhdGlvblN0b3BwZWQgPSBpc1Byb3BhZ2F0aW9uU3RvcHBlZDtcblx0ZS5pc0RlZmF1bHRQcmV2ZW50ZWQgPSBpc0RlZmF1bHRQcmV2ZW50ZWQ7XG5cdHJldHVybiAoZS5uYXRpdmVFdmVudCA9IGUpO1xufTtcblxuZnVuY3Rpb24gZW1wdHkoKSB7fVxuXG5mdW5jdGlvbiBpc1Byb3BhZ2F0aW9uU3RvcHBlZCgpIHtcblx0cmV0dXJuIHRoaXMuY2FuY2VsQnViYmxlO1xufVxuXG5mdW5jdGlvbiBpc0RlZmF1bHRQcmV2ZW50ZWQoKSB7XG5cdHJldHVybiB0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ7XG59XG5cbmxldCBjbGFzc05hbWVEZXNjcmlwdG9yID0ge1xuXHRjb25maWd1cmFibGU6IHRydWUsXG5cdGdldCgpIHtcblx0XHRyZXR1cm4gdGhpcy5jbGFzcztcblx0fVxufTtcblxubGV0IG9sZFZOb2RlSG9vayA9IG9wdGlvbnMudm5vZGU7XG5vcHRpb25zLnZub2RlID0gdm5vZGUgPT4ge1xuXHRsZXQgdHlwZSA9IHZub2RlLnR5cGU7XG5cdGxldCBwcm9wcyA9IHZub2RlLnByb3BzO1xuXHRsZXQgbm9ybWFsaXplZFByb3BzID0gcHJvcHM7XG5cblx0Ly8gb25seSBub3JtYWxpemUgcHJvcHMgb24gRWxlbWVudCBub2Rlc1xuXHRpZiAodHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnKSB7XG5cdFx0Y29uc3Qgbm9uQ3VzdG9tRWxlbWVudCA9IHR5cGUuaW5kZXhPZignLScpID09PSAtMTtcblx0XHRub3JtYWxpemVkUHJvcHMgPSB7fTtcblxuXHRcdGZvciAobGV0IGkgaW4gcHJvcHMpIHtcblx0XHRcdGxldCB2YWx1ZSA9IHByb3BzW2ldO1xuXG5cdFx0XHRpZiAoSVNfRE9NICYmIGkgPT09ICdjaGlsZHJlbicgJiYgdHlwZSA9PT0gJ25vc2NyaXB0Jykge1xuXHRcdFx0XHQvLyBFbXVsYXRlIFJlYWN0J3MgYmVoYXZpb3Igb2Ygbm90IHJlbmRlcmluZyB0aGUgY29udGVudHMgb2Ygbm9zY3JpcHQgdGFncyBvbiB0aGUgY2xpZW50LlxuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH0gZWxzZSBpZiAoaSA9PT0gJ3ZhbHVlJyAmJiAnZGVmYXVsdFZhbHVlJyBpbiBwcm9wcyAmJiB2YWx1ZSA9PSBudWxsKSB7XG5cdFx0XHRcdC8vIFNraXAgYXBwbHlpbmcgdmFsdWUgaWYgaXQgaXMgbnVsbC91bmRlZmluZWQgYW5kIHdlIGFscmVhZHkgc2V0XG5cdFx0XHRcdC8vIGEgZGVmYXVsdCB2YWx1ZVxuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdGkgPT09ICdkZWZhdWx0VmFsdWUnICYmXG5cdFx0XHRcdCd2YWx1ZScgaW4gcHJvcHMgJiZcblx0XHRcdFx0cHJvcHMudmFsdWUgPT0gbnVsbFxuXHRcdFx0KSB7XG5cdFx0XHRcdC8vIGBkZWZhdWx0VmFsdWVgIGlzIHRyZWF0ZWQgYXMgYSBmYWxsYmFjayBgdmFsdWVgIHdoZW4gYSB2YWx1ZSBwcm9wIGlzIHByZXNlbnQgYnV0IG51bGwvdW5kZWZpbmVkLlxuXHRcdFx0XHQvLyBgZGVmYXVsdFZhbHVlYCBmb3IgRWxlbWVudHMgd2l0aCBubyB2YWx1ZSBwcm9wIGlzIHRoZSBzYW1lIGFzIHRoZSBET00gZGVmYXVsdFZhbHVlIHByb3BlcnR5LlxuXHRcdFx0XHRpID0gJ3ZhbHVlJztcblx0XHRcdH0gZWxzZSBpZiAoaSA9PT0gJ2Rvd25sb2FkJyAmJiB2YWx1ZSA9PT0gdHJ1ZSkge1xuXHRcdFx0XHQvLyBDYWxsaW5nIGBzZXRBdHRyaWJ1dGVgIHdpdGggYSB0cnV0aHkgdmFsdWUgd2lsbCBsZWFkIHRvIGl0IGJlaW5nXG5cdFx0XHRcdC8vIHBhc3NlZCBhcyBhIHN0cmluZ2lmaWVkIHZhbHVlLCBlLmcuIGBkb3dubG9hZD1cInRydWVcImAuIFJlYWN0XG5cdFx0XHRcdC8vIGNvbnZlcnRzIGl0IHRvIGFuIGVtcHR5IHN0cmluZyBpbnN0ZWFkLCBvdGhlcndpc2UgdGhlIGF0dHJpYnV0ZVxuXHRcdFx0XHQvLyB2YWx1ZSB3aWxsIGJlIHVzZWQgYXMgdGhlIGZpbGUgbmFtZSBhbmQgdGhlIGZpbGUgd2lsbCBiZSBjYWxsZWRcblx0XHRcdFx0Ly8gXCJ0cnVlXCIgdXBvbiBkb3dubG9hZGluZyBpdC5cblx0XHRcdFx0dmFsdWUgPSAnJztcblx0XHRcdH0gZWxzZSBpZiAoL29uZG91YmxlY2xpY2svaS50ZXN0KGkpKSB7XG5cdFx0XHRcdGkgPSAnb25kYmxjbGljayc7XG5cdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHQvXm9uY2hhbmdlKHRleHRhcmVhfGlucHV0KS9pLnRlc3QoaSArIHR5cGUpICYmXG5cdFx0XHRcdCFvbkNoYW5nZUlucHV0VHlwZShwcm9wcy50eXBlKVxuXHRcdFx0KSB7XG5cdFx0XHRcdGkgPSAnb25pbnB1dCc7XG5cdFx0XHR9IGVsc2UgaWYgKC9eb25mb2N1cyQvaS50ZXN0KGkpKSB7XG5cdFx0XHRcdGkgPSAnb25mb2N1c2luJztcblx0XHRcdH0gZWxzZSBpZiAoL15vbmJsdXIkL2kudGVzdChpKSkge1xuXHRcdFx0XHRpID0gJ29uZm9jdXNvdXQnO1xuXHRcdFx0fSBlbHNlIGlmICgvXm9uKEFuaXxUcmF8VG91fEJlZm9yZUlucHxDb21wbykvLnRlc3QoaSkpIHtcblx0XHRcdFx0aSA9IGkudG9Mb3dlckNhc2UoKTtcblx0XHRcdH0gZWxzZSBpZiAobm9uQ3VzdG9tRWxlbWVudCAmJiBDQU1FTF9QUk9QUy50ZXN0KGkpKSB7XG5cdFx0XHRcdGkgPSBpLnJlcGxhY2UoL1tBLVowLTldLywgJy0kJicpLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHR9IGVsc2UgaWYgKHZhbHVlID09PSBudWxsKSB7XG5cdFx0XHRcdHZhbHVlID0gdW5kZWZpbmVkO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBBZGQgc3VwcG9ydCBmb3Igb25JbnB1dCBhbmQgb25DaGFuZ2UsIHNlZSAjMzU2MVxuXHRcdFx0Ly8gaWYgd2UgaGF2ZSBhbiBvbmlucHV0IHByb3AgYWxyZWFkeSBjaGFuZ2UgaXQgdG8gb25pbnB1dENhcHR1cmVcblx0XHRcdGlmICgvXm9uaW5wdXQvaS50ZXN0KGkpKSB7XG5cdFx0XHRcdGkgPSBpLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRcdGlmIChub3JtYWxpemVkUHJvcHNbaV0pIHtcblx0XHRcdFx0XHRpID0gJ29uaW5wdXRDYXB0dXJlJztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRub3JtYWxpemVkUHJvcHNbaV0gPSB2YWx1ZTtcblx0XHR9XG5cblx0XHQvLyBBZGQgc3VwcG9ydCBmb3IgYXJyYXkgc2VsZWN0IHZhbHVlczogPHNlbGVjdCBtdWx0aXBsZSB2YWx1ZT17W119IC8+XG5cdFx0aWYgKFxuXHRcdFx0dHlwZSA9PSAnc2VsZWN0JyAmJlxuXHRcdFx0bm9ybWFsaXplZFByb3BzLm11bHRpcGxlICYmXG5cdFx0XHRBcnJheS5pc0FycmF5KG5vcm1hbGl6ZWRQcm9wcy52YWx1ZSlcblx0XHQpIHtcblx0XHRcdC8vIGZvckVhY2goKSBhbHdheXMgcmV0dXJucyB1bmRlZmluZWQsIHdoaWNoIHdlIGFidXNlIGhlcmUgdG8gdW5zZXQgdGhlIHZhbHVlIHByb3AuXG5cdFx0XHRub3JtYWxpemVkUHJvcHMudmFsdWUgPSB0b0NoaWxkQXJyYXkocHJvcHMuY2hpbGRyZW4pLmZvckVhY2goY2hpbGQgPT4ge1xuXHRcdFx0XHRjaGlsZC5wcm9wcy5zZWxlY3RlZCA9XG5cdFx0XHRcdFx0bm9ybWFsaXplZFByb3BzLnZhbHVlLmluZGV4T2YoY2hpbGQucHJvcHMudmFsdWUpICE9IC0xO1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0Ly8gQWRkaW5nIHN1cHBvcnQgZm9yIGRlZmF1bHRWYWx1ZSBpbiBzZWxlY3QgdGFnXG5cdFx0aWYgKHR5cGUgPT0gJ3NlbGVjdCcgJiYgbm9ybWFsaXplZFByb3BzLmRlZmF1bHRWYWx1ZSAhPSBudWxsKSB7XG5cdFx0XHRub3JtYWxpemVkUHJvcHMudmFsdWUgPSB0b0NoaWxkQXJyYXkocHJvcHMuY2hpbGRyZW4pLmZvckVhY2goY2hpbGQgPT4ge1xuXHRcdFx0XHRpZiAobm9ybWFsaXplZFByb3BzLm11bHRpcGxlKSB7XG5cdFx0XHRcdFx0Y2hpbGQucHJvcHMuc2VsZWN0ZWQgPVxuXHRcdFx0XHRcdFx0bm9ybWFsaXplZFByb3BzLmRlZmF1bHRWYWx1ZS5pbmRleE9mKGNoaWxkLnByb3BzLnZhbHVlKSAhPSAtMTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjaGlsZC5wcm9wcy5zZWxlY3RlZCA9XG5cdFx0XHRcdFx0XHRub3JtYWxpemVkUHJvcHMuZGVmYXVsdFZhbHVlID09IGNoaWxkLnByb3BzLnZhbHVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHR2bm9kZS5wcm9wcyA9IG5vcm1hbGl6ZWRQcm9wcztcblxuXHRcdGlmIChwcm9wcy5jbGFzcyAhPSBwcm9wcy5jbGFzc05hbWUpIHtcblx0XHRcdGNsYXNzTmFtZURlc2NyaXB0b3IuZW51bWVyYWJsZSA9ICdjbGFzc05hbWUnIGluIHByb3BzO1xuXHRcdFx0aWYgKHByb3BzLmNsYXNzTmFtZSAhPSBudWxsKSBub3JtYWxpemVkUHJvcHMuY2xhc3MgPSBwcm9wcy5jbGFzc05hbWU7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobm9ybWFsaXplZFByb3BzLCAnY2xhc3NOYW1lJywgY2xhc3NOYW1lRGVzY3JpcHRvcik7XG5cdFx0fVxuXHR9XG5cblx0dm5vZGUuJCR0eXBlb2YgPSBSRUFDVF9FTEVNRU5UX1RZUEU7XG5cblx0aWYgKG9sZFZOb2RlSG9vaykgb2xkVk5vZGVIb29rKHZub2RlKTtcbn07XG5cbi8vIE9ubHkgbmVlZGVkIGZvciByZWFjdC1yZWxheVxubGV0IGN1cnJlbnRDb21wb25lbnQ7XG5jb25zdCBvbGRCZWZvcmVSZW5kZXIgPSBvcHRpb25zLl9yZW5kZXI7XG5vcHRpb25zLl9yZW5kZXIgPSBmdW5jdGlvbih2bm9kZSkge1xuXHRpZiAob2xkQmVmb3JlUmVuZGVyKSB7XG5cdFx0b2xkQmVmb3JlUmVuZGVyKHZub2RlKTtcblx0fVxuXHRjdXJyZW50Q29tcG9uZW50ID0gdm5vZGUuX2NvbXBvbmVudDtcbn07XG5cbi8vIFRoaXMgaXMgYSB2ZXJ5IHZlcnkgcHJpdmF0ZSBpbnRlcm5hbCBmdW5jdGlvbiBmb3IgUmVhY3QgaXRcbi8vIGlzIHVzZWQgdG8gc29ydC1vZiBkbyBydW50aW1lIGRlcGVuZGVuY3kgaW5qZWN0aW9uLiBTbyBmYXJcbi8vIG9ubHkgYHJlYWN0LXJlbGF5YCBtYWtlcyB1c2Ugb2YgaXQuIEl0IHVzZXMgaXQgdG8gcmVhZCB0aGVcbi8vIGNvbnRleHQgdmFsdWUuXG5leHBvcnQgY29uc3QgX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQgPSB7XG5cdFJlYWN0Q3VycmVudERpc3BhdGNoZXI6IHtcblx0XHRjdXJyZW50OiB7XG5cdFx0XHRyZWFkQ29udGV4dChjb250ZXh0KSB7XG5cdFx0XHRcdHJldHVybiBjdXJyZW50Q29tcG9uZW50Ll9nbG9iYWxDb250ZXh0W2NvbnRleHQuX2lkXS5wcm9wcy52YWx1ZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn07XG4iLCAiaW1wb3J0IHtcblx0Y3JlYXRlRWxlbWVudCxcblx0cmVuZGVyIGFzIHByZWFjdFJlbmRlcixcblx0Y2xvbmVFbGVtZW50IGFzIHByZWFjdENsb25lRWxlbWVudCxcblx0Y3JlYXRlUmVmLFxuXHRDb21wb25lbnQsXG5cdGNyZWF0ZUNvbnRleHQsXG5cdEZyYWdtZW50XG59IGZyb20gJ3ByZWFjdCc7XG5pbXBvcnQge1xuXHR1c2VTdGF0ZSxcblx0dXNlUmVkdWNlcixcblx0dXNlRWZmZWN0LFxuXHR1c2VMYXlvdXRFZmZlY3QsXG5cdHVzZVJlZixcblx0dXNlSW1wZXJhdGl2ZUhhbmRsZSxcblx0dXNlTWVtbyxcblx0dXNlQ2FsbGJhY2ssXG5cdHVzZUNvbnRleHQsXG5cdHVzZURlYnVnVmFsdWVcbn0gZnJvbSAncHJlYWN0L2hvb2tzJztcbmltcG9ydCB7IFB1cmVDb21wb25lbnQgfSBmcm9tICcuL1B1cmVDb21wb25lbnQnO1xuaW1wb3J0IHsgbWVtbyB9IGZyb20gJy4vbWVtbyc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAnLi9mb3J3YXJkUmVmJztcbmltcG9ydCB7IENoaWxkcmVuIH0gZnJvbSAnLi9DaGlsZHJlbic7XG5pbXBvcnQgeyBTdXNwZW5zZSwgbGF6eSB9IGZyb20gJy4vc3VzcGVuc2UnO1xuaW1wb3J0IHsgU3VzcGVuc2VMaXN0IH0gZnJvbSAnLi9zdXNwZW5zZS1saXN0JztcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJy4vcG9ydGFscyc7XG5pbXBvcnQge1xuXHRoeWRyYXRlLFxuXHRyZW5kZXIsXG5cdFJFQUNUX0VMRU1FTlRfVFlQRSxcblx0X19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRURcbn0gZnJvbSAnLi9yZW5kZXInO1xuXG5jb25zdCB2ZXJzaW9uID0gJzE3LjAuMic7IC8vIHRyaWNrIGxpYnJhcmllcyB0byB0aGluayB3ZSBhcmUgcmVhY3RcblxuLyoqXG4gKiBMZWdhY3kgdmVyc2lvbiBvZiBjcmVhdGVFbGVtZW50LlxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5WTm9kZVtcInR5cGVcIl19IHR5cGUgVGhlIG5vZGUgbmFtZSBvciBDb21wb25lbnQgY29uc3RydWN0b3JcbiAqL1xuZnVuY3Rpb24gY3JlYXRlRmFjdG9yeSh0eXBlKSB7XG5cdHJldHVybiBjcmVhdGVFbGVtZW50LmJpbmQobnVsbCwgdHlwZSk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIHBhc3NlZCBlbGVtZW50IGlzIGEgdmFsaWQgKHApcmVhY3Qgbm9kZS5cbiAqIEBwYXJhbSB7Kn0gZWxlbWVudCBUaGUgZWxlbWVudCB0byBjaGVja1xuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzVmFsaWRFbGVtZW50KGVsZW1lbnQpIHtcblx0cmV0dXJuICEhZWxlbWVudCAmJiBlbGVtZW50LiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEU7XG59XG5cbi8qKlxuICogV3JhcCBgY2xvbmVFbGVtZW50YCB0byBhYm9ydCBpZiB0aGUgcGFzc2VkIGVsZW1lbnQgaXMgbm90IGEgdmFsaWQgZWxlbWVudCBhbmQgYXBwbHlcbiAqIGFsbCB2bm9kZSBub3JtYWxpemF0aW9ucy5cbiAqIEBwYXJhbSB7aW1wb3J0KCcuL2ludGVybmFsJykuVk5vZGV9IGVsZW1lbnQgVGhlIHZub2RlIHRvIGNsb25lXG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHMgUHJvcHMgdG8gYWRkIHdoZW4gY2xvbmluZ1xuICogQHBhcmFtIHtBcnJheTxpbXBvcnQoJy4vaW50ZXJuYWwnKS5Db21wb25lbnRDaGlsZHJlbj59IHJlc3QgT3B0aW9uYWwgY29tcG9uZW50IGNoaWxkcmVuXG4gKi9cbmZ1bmN0aW9uIGNsb25lRWxlbWVudChlbGVtZW50KSB7XG5cdGlmICghaXNWYWxpZEVsZW1lbnQoZWxlbWVudCkpIHJldHVybiBlbGVtZW50O1xuXHRyZXR1cm4gcHJlYWN0Q2xvbmVFbGVtZW50LmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG59XG5cbi8qKlxuICogUmVtb3ZlIGEgY29tcG9uZW50IHRyZWUgZnJvbSB0aGUgRE9NLCBpbmNsdWRpbmcgc3RhdGUgYW5kIGV2ZW50IGhhbmRsZXJzLlxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5QcmVhY3RFbGVtZW50fSBjb250YWluZXJcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiB1bm1vdW50Q29tcG9uZW50QXROb2RlKGNvbnRhaW5lcikge1xuXHRpZiAoY29udGFpbmVyLl9jaGlsZHJlbikge1xuXHRcdHByZWFjdFJlbmRlcihudWxsLCBjb250YWluZXIpO1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cdHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIG1hdGNoaW5nIERPTSBub2RlIGZvciBhIGNvbXBvbmVudFxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5Db21wb25lbnR9IGNvbXBvbmVudFxuICogQHJldHVybnMge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlByZWFjdEVsZW1lbnQgfCBudWxsfVxuICovXG5mdW5jdGlvbiBmaW5kRE9NTm9kZShjb21wb25lbnQpIHtcblx0cmV0dXJuIChcblx0XHQoY29tcG9uZW50ICYmXG5cdFx0XHQoY29tcG9uZW50LmJhc2UgfHwgKGNvbXBvbmVudC5ub2RlVHlwZSA9PT0gMSAmJiBjb21wb25lbnQpKSkgfHxcblx0XHRudWxsXG5cdCk7XG59XG5cbi8qKlxuICogRGVwcmVjYXRlZCB3YXkgdG8gY29udHJvbCBiYXRjaGVkIHJlbmRlcmluZyBpbnNpZGUgdGhlIHJlY29uY2lsZXIsIGJ1dCB3ZVxuICogYWxyZWFkeSBzY2hlZHVsZSBpbiBiYXRjaGVzIGluc2lkZSBvdXIgcmVuZGVyaW5nIGNvZGVcbiAqIEB0ZW1wbGF0ZSBBcmdcbiAqIEBwYXJhbSB7KGFyZzogQXJnKSA9PiB2b2lkfSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IHRyaWdnZXJzIHRoZSB1cGRhdGVkXG4gKiBAcGFyYW0ge0FyZ30gW2FyZ10gT3B0aW9uYWwgYXJndW1lbnQgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIHRoZSBjYWxsYmFja1xuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2FtZWxjYXNlXG5jb25zdCB1bnN0YWJsZV9iYXRjaGVkVXBkYXRlcyA9IChjYWxsYmFjaywgYXJnKSA9PiBjYWxsYmFjayhhcmcpO1xuXG4vKipcbiAqIEluIFJlYWN0LCBgZmx1c2hTeW5jYCBmbHVzaGVzIHRoZSBlbnRpcmUgdHJlZSBhbmQgZm9yY2VzIGEgcmVyZW5kZXIuIEl0J3NcbiAqIGltcGxtZW50ZWQgaGVyZSBhcyBhIG5vLW9wLlxuICogQHRlbXBsYXRlIEFyZ1xuICogQHRlbXBsYXRlIFJlc3VsdFxuICogQHBhcmFtIHsoYXJnOiBBcmcpID0+IFJlc3VsdH0gY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBydW5zIGJlZm9yZSB0aGUgZmx1c2hcbiAqIEBwYXJhbSB7QXJnfSBbYXJnXSBPcHRpb25hbCBhcnVnbWVudCB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gdGhlIGNhbGxiYWNrXG4gKiBAcmV0dXJuc1xuICovXG5jb25zdCBmbHVzaFN5bmMgPSAoY2FsbGJhY2ssIGFyZykgPT4gY2FsbGJhY2soYXJnKTtcblxuLyoqXG4gKiBTdHJpY3QgTW9kZSBpcyBub3QgaW1wbGVtZW50ZWQgaW4gUHJlYWN0LCBzbyB3ZSBwcm92aWRlIGEgc3RhbmQtaW4gZm9yIGl0XG4gKiB0aGF0IGp1c3QgcmVuZGVycyBpdHMgY2hpbGRyZW4gd2l0aG91dCBpbXBvc2luZyBhbnkgcmVzdHJpY3Rpb25zLlxuICovXG5jb25zdCBTdHJpY3RNb2RlID0gRnJhZ21lbnQ7XG5cbmV4cG9ydCAqIGZyb20gJ3ByZWFjdC9ob29rcyc7XG5leHBvcnQge1xuXHR2ZXJzaW9uLFxuXHRDaGlsZHJlbixcblx0cmVuZGVyLFxuXHRoeWRyYXRlLFxuXHR1bm1vdW50Q29tcG9uZW50QXROb2RlLFxuXHRjcmVhdGVQb3J0YWwsXG5cdGNyZWF0ZUVsZW1lbnQsXG5cdGNyZWF0ZUNvbnRleHQsXG5cdGNyZWF0ZUZhY3RvcnksXG5cdGNsb25lRWxlbWVudCxcblx0Y3JlYXRlUmVmLFxuXHRGcmFnbWVudCxcblx0aXNWYWxpZEVsZW1lbnQsXG5cdGZpbmRET01Ob2RlLFxuXHRDb21wb25lbnQsXG5cdFB1cmVDb21wb25lbnQsXG5cdG1lbW8sXG5cdGZvcndhcmRSZWYsXG5cdGZsdXNoU3luYyxcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNhbWVsY2FzZVxuXHR1bnN0YWJsZV9iYXRjaGVkVXBkYXRlcyxcblx0U3RyaWN0TW9kZSxcblx0U3VzcGVuc2UsXG5cdFN1c3BlbnNlTGlzdCxcblx0bGF6eSxcblx0X19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRURcbn07XG5cbi8vIFJlYWN0IGNvcGllcyB0aGUgbmFtZWQgZXhwb3J0cyB0byB0aGUgZGVmYXVsdCBvbmUuXG5leHBvcnQgZGVmYXVsdCB7XG5cdHVzZVN0YXRlLFxuXHR1c2VSZWR1Y2VyLFxuXHR1c2VFZmZlY3QsXG5cdHVzZUxheW91dEVmZmVjdCxcblx0dXNlUmVmLFxuXHR1c2VJbXBlcmF0aXZlSGFuZGxlLFxuXHR1c2VNZW1vLFxuXHR1c2VDYWxsYmFjayxcblx0dXNlQ29udGV4dCxcblx0dXNlRGVidWdWYWx1ZSxcblx0dmVyc2lvbixcblx0Q2hpbGRyZW4sXG5cdHJlbmRlcixcblx0aHlkcmF0ZSxcblx0dW5tb3VudENvbXBvbmVudEF0Tm9kZSxcblx0Y3JlYXRlUG9ydGFsLFxuXHRjcmVhdGVFbGVtZW50LFxuXHRjcmVhdGVDb250ZXh0LFxuXHRjcmVhdGVGYWN0b3J5LFxuXHRjbG9uZUVsZW1lbnQsXG5cdGNyZWF0ZVJlZixcblx0RnJhZ21lbnQsXG5cdGlzVmFsaWRFbGVtZW50LFxuXHRmaW5kRE9NTm9kZSxcblx0Q29tcG9uZW50LFxuXHRQdXJlQ29tcG9uZW50LFxuXHRtZW1vLFxuXHRmb3J3YXJkUmVmLFxuXHRmbHVzaFN5bmMsXG5cdHVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzLFxuXHRTdHJpY3RNb2RlLFxuXHRTdXNwZW5zZSxcblx0U3VzcGVuc2VMaXN0LFxuXHRsYXp5LFxuXHRfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRFxufTtcbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuZXhwb3J0IHZhciBEZWZhdWx0Q29udGV4dCA9IHtcbiAgY29sb3I6IHVuZGVmaW5lZCxcbiAgc2l6ZTogdW5kZWZpbmVkLFxuICBjbGFzc05hbWU6IHVuZGVmaW5lZCxcbiAgc3R5bGU6IHVuZGVmaW5lZCxcbiAgYXR0cjogdW5kZWZpbmVkXG59O1xuZXhwb3J0IHZhciBJY29uQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQgJiYgUmVhY3QuY3JlYXRlQ29udGV4dChEZWZhdWx0Q29udGV4dCk7IiwgInZhciBfX2Fzc2lnbiA9IHRoaXMgJiYgdGhpcy5fX2Fzc2lnbiB8fCBmdW5jdGlvbiAoKSB7XG4gIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodCkge1xuICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcblxuICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdDtcbiAgfTtcblxuICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5cbnZhciBfX3Jlc3QgPSB0aGlzICYmIHRoaXMuX19yZXN0IHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gIHZhciB0ID0ge307XG5cbiAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApIHRbcF0gPSBzW3BdO1xuXG4gIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIikgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSkgdFtwW2ldXSA9IHNbcFtpXV07XG4gIH1cbiAgcmV0dXJuIHQ7XG59O1xuXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgSWNvbkNvbnRleHQsIERlZmF1bHRDb250ZXh0IH0gZnJvbSAnLi9pY29uQ29udGV4dCc7XG5cbmZ1bmN0aW9uIFRyZWUyRWxlbWVudCh0cmVlKSB7XG4gIHJldHVybiB0cmVlICYmIHRyZWUubWFwKGZ1bmN0aW9uIChub2RlLCBpKSB7XG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQobm9kZS50YWcsIF9fYXNzaWduKHtcbiAgICAgIGtleTogaVxuICAgIH0sIG5vZGUuYXR0ciksIFRyZWUyRWxlbWVudChub2RlLmNoaWxkKSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gR2VuSWNvbihkYXRhKSB7XG4gIHJldHVybiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChJY29uQmFzZSwgX19hc3NpZ24oe1xuICAgICAgYXR0cjogX19hc3NpZ24oe30sIGRhdGEuYXR0cilcbiAgICB9LCBwcm9wcyksIFRyZWUyRWxlbWVudChkYXRhLmNoaWxkKSk7XG4gIH07XG59XG5leHBvcnQgZnVuY3Rpb24gSWNvbkJhc2UocHJvcHMpIHtcbiAgdmFyIGVsZW0gPSBmdW5jdGlvbiAoY29uZikge1xuICAgIHZhciBhdHRyID0gcHJvcHMuYXR0cixcbiAgICAgICAgc2l6ZSA9IHByb3BzLnNpemUsXG4gICAgICAgIHRpdGxlID0gcHJvcHMudGl0bGUsXG4gICAgICAgIHN2Z1Byb3BzID0gX19yZXN0KHByb3BzLCBbXCJhdHRyXCIsIFwic2l6ZVwiLCBcInRpdGxlXCJdKTtcblxuICAgIHZhciBjb21wdXRlZFNpemUgPSBzaXplIHx8IGNvbmYuc2l6ZSB8fCBcIjFlbVwiO1xuICAgIHZhciBjbGFzc05hbWU7XG4gICAgaWYgKGNvbmYuY2xhc3NOYW1lKSBjbGFzc05hbWUgPSBjb25mLmNsYXNzTmFtZTtcbiAgICBpZiAocHJvcHMuY2xhc3NOYW1lKSBjbGFzc05hbWUgPSAoY2xhc3NOYW1lID8gY2xhc3NOYW1lICsgJyAnIDogJycpICsgcHJvcHMuY2xhc3NOYW1lO1xuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIF9fYXNzaWduKHtcbiAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgIGZpbGw6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICBzdHJva2VXaWR0aDogXCIwXCJcbiAgICB9LCBjb25mLmF0dHIsIGF0dHIsIHN2Z1Byb3BzLCB7XG4gICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZSxcbiAgICAgIHN0eWxlOiBfX2Fzc2lnbihfX2Fzc2lnbih7XG4gICAgICAgIGNvbG9yOiBwcm9wcy5jb2xvciB8fCBjb25mLmNvbG9yXG4gICAgICB9LCBjb25mLnN0eWxlKSwgcHJvcHMuc3R5bGUpLFxuICAgICAgaGVpZ2h0OiBjb21wdXRlZFNpemUsXG4gICAgICB3aWR0aDogY29tcHV0ZWRTaXplLFxuICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgIH0pLCB0aXRsZSAmJiBSZWFjdC5jcmVhdGVFbGVtZW50KFwidGl0bGVcIiwgbnVsbCwgdGl0bGUpLCBwcm9wcy5jaGlsZHJlbik7XG4gIH07XG5cbiAgcmV0dXJuIEljb25Db250ZXh0ICE9PSB1bmRlZmluZWQgPyBSZWFjdC5jcmVhdGVFbGVtZW50KEljb25Db250ZXh0LkNvbnN1bWVyLCBudWxsLCBmdW5jdGlvbiAoY29uZikge1xuICAgIHJldHVybiBlbGVtKGNvbmYpO1xuICB9KSA6IGVsZW0oRGVmYXVsdENvbnRleHQpO1xufSIsICIvLyBUSElTIEZJTEUgSVMgQVVUTyBHRU5FUkFURURcbmltcG9ydCB7IEdlbkljb24gfSBmcm9tICcuLi9saWInO1xuZXhwb3J0IGZ1bmN0aW9uIEZpQWN0aXZpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIyMiAxMiAxOCAxMiAxNSAyMSA5IDMgNiAxMiAyIDEyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQWlycGxheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE3SDRhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJoMTZhMiAyIDAgMCAxIDIgMnYxMGEyIDIgMCAwIDEtMiAyaC0xXCJ9fSx7XCJ0YWdcIjpcInBvbHlnb25cIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjEyIDE1IDE3IDIxIDcgMjEgMTIgMTVcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlBbGVydENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjEwXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCI4XCIsXCJ4MlwiOlwiMTJcIixcInkyXCI6XCIxMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiMTZcIixcIngyXCI6XCIxMi4wMVwiLFwieTJcIjpcIjE2XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQWxlcnRPY3RhZ29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5Z29uXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCI3Ljg2IDIgMTYuMTQgMiAyMiA3Ljg2IDIyIDE2LjE0IDE2LjE0IDIyIDcuODYgMjIgMiAxNi4xNCAyIDcuODYgNy44NiAyXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCI4XCIsXCJ4MlwiOlwiMTJcIixcInkyXCI6XCIxMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiMTZcIixcIngyXCI6XCIxMi4wMVwiLFwieTJcIjpcIjE2XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQWxlcnRUcmlhbmdsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4yOSAzLjg2TDEuODIgMThhMiAyIDAgMCAwIDEuNzEgM2gxNi45NGEyIDIgMCAwIDAgMS43MS0zTDEzLjcxIDMuODZhMiAyIDAgMCAwLTMuNDIgMHpcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjlcIixcIngyXCI6XCIxMlwiLFwieTJcIjpcIjEzXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIxN1wiLFwieDJcIjpcIjEyLjAxXCIsXCJ5MlwiOlwiMTdcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlBbGlnbkNlbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxOFwiLFwieTFcIjpcIjEwXCIsXCJ4MlwiOlwiNlwiLFwieTJcIjpcIjEwXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMjFcIixcInkxXCI6XCI2XCIsXCJ4MlwiOlwiM1wiLFwieTJcIjpcIjZcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyMVwiLFwieTFcIjpcIjE0XCIsXCJ4MlwiOlwiM1wiLFwieTJcIjpcIjE0XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMThcIixcInkxXCI6XCIxOFwiLFwieDJcIjpcIjZcIixcInkyXCI6XCIxOFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUFsaWduSnVzdGlmeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyMVwiLFwieTFcIjpcIjEwXCIsXCJ4MlwiOlwiM1wiLFwieTJcIjpcIjEwXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMjFcIixcInkxXCI6XCI2XCIsXCJ4MlwiOlwiM1wiLFwieTJcIjpcIjZcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyMVwiLFwieTFcIjpcIjE0XCIsXCJ4MlwiOlwiM1wiLFwieTJcIjpcIjE0XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMjFcIixcInkxXCI6XCIxOFwiLFwieDJcIjpcIjNcIixcInkyXCI6XCIxOFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUFsaWduTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxN1wiLFwieTFcIjpcIjEwXCIsXCJ4MlwiOlwiM1wiLFwieTJcIjpcIjEwXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMjFcIixcInkxXCI6XCI2XCIsXCJ4MlwiOlwiM1wiLFwieTJcIjpcIjZcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyMVwiLFwieTFcIjpcIjE0XCIsXCJ4MlwiOlwiM1wiLFwieTJcIjpcIjE0XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTdcIixcInkxXCI6XCIxOFwiLFwieDJcIjpcIjNcIixcInkyXCI6XCIxOFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUFsaWduUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMjFcIixcInkxXCI6XCIxMFwiLFwieDJcIjpcIjdcIixcInkyXCI6XCIxMFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjIxXCIsXCJ5MVwiOlwiNlwiLFwieDJcIjpcIjNcIixcInkyXCI6XCI2XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMjFcIixcInkxXCI6XCIxNFwiLFwieDJcIjpcIjNcIixcInkyXCI6XCIxNFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjIxXCIsXCJ5MVwiOlwiMThcIixcIngyXCI6XCI3XCIsXCJ5MlwiOlwiMThcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlBbmNob3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjVcIixcInJcIjpcIjNcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjIyXCIsXCJ4MlwiOlwiMTJcIixcInkyXCI6XCI4XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxMkgyYTEwIDEwIDAgMCAwIDIwIDBoLTNcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlBcGVydHVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjEwXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTQuMzFcIixcInkxXCI6XCI4XCIsXCJ4MlwiOlwiMjAuMDVcIixcInkyXCI6XCIxNy45NFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjkuNjlcIixcInkxXCI6XCI4XCIsXCJ4MlwiOlwiMjEuMTdcIixcInkyXCI6XCI4XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiNy4zOFwiLFwieTFcIjpcIjEyXCIsXCJ4MlwiOlwiMTMuMTJcIixcInkyXCI6XCIyLjA2XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiOS42OVwiLFwieTFcIjpcIjE2XCIsXCJ4MlwiOlwiMy45NVwiLFwieTJcIjpcIjYuMDZcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxNC4zMVwiLFwieTFcIjpcIjE2XCIsXCJ4MlwiOlwiMi44M1wiLFwieTJcIjpcIjE2XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTYuNjJcIixcInkxXCI6XCIxMlwiLFwieDJcIjpcIjEwLjg4XCIsXCJ5MlwiOlwiMjEuOTRcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlBcmNoaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMjEgOCAyMSAyMSAzIDIxIDMgOFwifX0se1widGFnXCI6XCJyZWN0XCIsXCJhdHRyXCI6e1wieFwiOlwiMVwiLFwieVwiOlwiM1wiLFwid2lkdGhcIjpcIjIyXCIsXCJoZWlnaHRcIjpcIjVcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMFwiLFwieTFcIjpcIjEyXCIsXCJ4MlwiOlwiMTRcIixcInkyXCI6XCIxMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUFycm93RG93bkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjEwXCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCI4IDEyIDEyIDE2IDE2IDEyXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCI4XCIsXCJ4MlwiOlwiMTJcIixcInkyXCI6XCIxNlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUFycm93RG93bkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTdcIixcInkxXCI6XCI3XCIsXCJ4MlwiOlwiN1wiLFwieTJcIjpcIjE3XCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxNyAxNyA3IDE3IDcgN1wifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUFycm93RG93blJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjdcIixcInkxXCI6XCI3XCIsXCJ4MlwiOlwiMTdcIixcInkyXCI6XCIxN1wifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTcgNyAxNyAxNyA3IDE3XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQXJyb3dEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiNVwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiMTlcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjE5IDEyIDEyIDE5IDUgMTJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlBcnJvd0xlZnRDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxMFwifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTIgOCA4IDEyIDEyIDE2XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTZcIixcInkxXCI6XCIxMlwiLFwieDJcIjpcIjhcIixcInkyXCI6XCIxMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUFycm93TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxOVwiLFwieTFcIjpcIjEyXCIsXCJ4MlwiOlwiNVwiLFwieTJcIjpcIjEyXCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxMiAxOSA1IDEyIDEyIDVcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlBcnJvd1JpZ2h0Q2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMTBcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjEyIDE2IDE2IDEyIDEyIDhcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI4XCIsXCJ5MVwiOlwiMTJcIixcIngyXCI6XCIxNlwiLFwieTJcIjpcIjEyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQXJyb3dSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI1XCIsXCJ5MVwiOlwiMTJcIixcIngyXCI6XCIxOVwiLFwieTJcIjpcIjEyXCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxMiA1IDE5IDEyIDEyIDE5XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQXJyb3dVcENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjEwXCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxNiAxMiAxMiA4IDggMTJcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjE2XCIsXCJ4MlwiOlwiMTJcIixcInkyXCI6XCI4XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQXJyb3dVcExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTdcIixcInkxXCI6XCIxN1wiLFwieDJcIjpcIjdcIixcInkyXCI6XCI3XCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCI3IDE3IDcgNyAxNyA3XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQXJyb3dVcFJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjdcIixcInkxXCI6XCIxN1wiLFwieDJcIjpcIjE3XCIsXCJ5MlwiOlwiN1wifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiNyA3IDE3IDcgMTcgMTdcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlBcnJvd1VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiMTlcIixcIngyXCI6XCIxMlwiLFwieTJcIjpcIjVcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjUgMTIgMTIgNSAxOSAxMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUF0U2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjRcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA4djVhMyAzIDAgMCAwIDYgMHYtMWExMCAxMCAwIDEgMC0zLjkyIDcuOTRcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlBd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiOFwiLFwiclwiOlwiN1wifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiOC4yMSAxMy44OSA3IDIzIDEyIDIwIDE3IDIzIDE1Ljc5IDEzLjg4XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQmFyQ2hhcnQyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE4XCIsXCJ5MVwiOlwiMjBcIixcIngyXCI6XCIxOFwiLFwieTJcIjpcIjEwXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIyMFwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiNFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjZcIixcInkxXCI6XCIyMFwiLFwieDJcIjpcIjZcIixcInkyXCI6XCIxNFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUJhckNoYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiMjBcIixcIngyXCI6XCIxMlwiLFwieTJcIjpcIjEwXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMThcIixcInkxXCI6XCIyMFwiLFwieDJcIjpcIjE4XCIsXCJ5MlwiOlwiNFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjZcIixcInkxXCI6XCIyMFwiLFwieDJcIjpcIjZcIixcInkyXCI6XCIxNlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUJhdHRlcnlDaGFyZ2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE4SDNhMiAyIDAgMCAxLTItMlY4YTIgMiAwIDAgMSAyLTJoMy4xOU0xNSA2aDJhMiAyIDAgMCAxIDIgMnY4YTIgMiAwIDAgMS0yIDJoLTMuMTlcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyM1wiLFwieTFcIjpcIjEzXCIsXCJ4MlwiOlwiMjNcIixcInkyXCI6XCIxMVwifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTEgNiA3IDEyIDEzIDEyIDkgMThcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlCYXR0ZXJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJyZWN0XCIsXCJhdHRyXCI6e1wieFwiOlwiMVwiLFwieVwiOlwiNlwiLFwid2lkdGhcIjpcIjE4XCIsXCJoZWlnaHRcIjpcIjEyXCIsXCJyeFwiOlwiMlwiLFwicnlcIjpcIjJcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyM1wiLFwieTFcIjpcIjEzXCIsXCJ4MlwiOlwiMjNcIixcInkyXCI6XCIxMVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUJlbGxPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNzMgMjFhMiAyIDAgMCAxLTMuNDYgMFwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjYzIDEzQTE3Ljg5IDE3Ljg5IDAgMCAxIDE4IDhcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjI2IDYuMjZBNS44NiA1Ljg2IDAgMCAwIDYgOGMwIDctMyA5LTMgOWgxNFwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDhhNiA2IDAgMCAwLTkuMzMtNVwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjFcIixcInkxXCI6XCIxXCIsXCJ4MlwiOlwiMjNcIixcInkyXCI6XCIyM1wifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUJlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOEE2IDYgMCAwIDAgNiA4YzAgNy0zIDktMyA5aDE4cy0zLTItMy05XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNzMgMjFhMiAyIDAgMCAxLTMuNDYgMFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUJsdWV0b290aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjYuNSA2LjUgMTcuNSAxNy41IDEyIDIzIDEyIDEgMTcuNSA2LjUgNi41IDE3LjVcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlCb2xkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgNGg4YTQgNCAwIDAgMSA0IDQgNCA0IDAgMCAxLTQgNEg2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTJoOWE0IDQgMCAwIDEgNCA0IDQgNCAwIDAgMS00IDRINnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlCb29rT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDNoNmE0IDQgMCAwIDEgNCA0djE0YTMgMyAwIDAgMC0zLTNIMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAzaC02YTQgNCAwIDAgMC00IDR2MTRhMyAzIDAgMCAxIDMtM2g3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUJvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxOS41QTIuNSAyLjUgMCAwIDEgNi41IDE3SDIwXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi41IDJIMjB2MjBINi41QTIuNSAyLjUgMCAwIDEgNCAxOS41di0xNUEyLjUgMi41IDAgMCAxIDYuNSAyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUJvb2ttYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDIxbC03LTUtNyA1VjVhMiAyIDAgMCAxIDItMmgxMGEyIDIgMCAwIDEgMiAyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxNlY4YTIgMiAwIDAgMC0xLTEuNzNsLTctNGEyIDIgMCAwIDAtMiAwbC03IDRBMiAyIDAgMCAwIDMgOHY4YTIgMiAwIDAgMCAxIDEuNzNsNyA0YTIgMiAwIDAgMCAyIDBsNy00QTIgMiAwIDAgMCAyMSAxNnpcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjMuMjcgNi45NiAxMiAxMi4wMSAyMC43MyA2Ljk2XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIyMi4wOFwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiMTJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlCcmllZmNhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInJlY3RcIixcImF0dHJcIjp7XCJ4XCI6XCIyXCIsXCJ5XCI6XCI3XCIsXCJ3aWR0aFwiOlwiMjBcIixcImhlaWdodFwiOlwiMTRcIixcInJ4XCI6XCIyXCIsXCJyeVwiOlwiMlwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDIxVjVhMiAyIDAgMCAwLTItMmgtNGEyIDIgMCAwIDAtMiAydjE2XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQ2FsZW5kYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInJlY3RcIixcImF0dHJcIjp7XCJ4XCI6XCIzXCIsXCJ5XCI6XCI0XCIsXCJ3aWR0aFwiOlwiMThcIixcImhlaWdodFwiOlwiMThcIixcInJ4XCI6XCIyXCIsXCJyeVwiOlwiMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE2XCIsXCJ5MVwiOlwiMlwiLFwieDJcIjpcIjE2XCIsXCJ5MlwiOlwiNlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjhcIixcInkxXCI6XCIyXCIsXCJ4MlwiOlwiOFwiLFwieTJcIjpcIjZcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIzXCIsXCJ5MVwiOlwiMTBcIixcIngyXCI6XCIyMVwiLFwieTJcIjpcIjEwXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQ2FtZXJhT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjFcIixcInkxXCI6XCIxXCIsXCJ4MlwiOlwiMjNcIixcInkyXCI6XCIyM1wifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDIxSDNhMiAyIDAgMCAxLTItMlY4YTIgMiAwIDAgMSAyLTJoM20zLTNoNmwyIDNoNGEyIDIgMCAwIDEgMiAydjkuMzRtLTcuNzItMi4wNmE0IDQgMCAxIDEtNS41Ni01LjU2XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQ2FtZXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzIDE5YTIgMiAwIDAgMS0yIDJIM2EyIDIgMCAwIDEtMi0yVjhhMiAyIDAgMCAxIDItMmg0bDItM2g2bDIgM2g0YTIgMiAwIDAgMSAyIDJ6XCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCI0XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQ2FzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE2LjFBNSA1IDAgMCAxIDUuOSAyME0yIDEyLjA1QTkgOSAwIDAgMSA5Ljk1IDIwTTIgOFY2YTIgMiAwIDAgMSAyLTJoMTZhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAyaC02XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMlwiLFwieTFcIjpcIjIwXCIsXCJ4MlwiOlwiMi4wMVwiLFwieTJcIjpcIjIwXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQ2hlY2tDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTEuMDhWMTJhMTAgMTAgMCAxIDEtNS45My05LjE0XCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIyMiA0IDEyIDE0LjAxIDkgMTEuMDFcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlDaGVja1NxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjkgMTEgMTIgMTQgMjIgNFwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDEydjdhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDExXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIyMCA2IDkgMTcgNCAxMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUNoZXZyb25Eb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiNiA5IDEyIDE1IDE4IDlcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlDaGV2cm9uTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjE1IDE4IDkgMTIgMTUgNlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUNoZXZyb25SaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjkgMTggMTUgMTIgOSA2XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQ2hldnJvblVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTggMTUgMTIgOSA2IDE1XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQ2hldnJvbnNEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiNyAxMyAxMiAxOCAxNyAxM1wifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiNyA2IDEyIDExIDE3IDZcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlDaGV2cm9uc0xlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxMSAxNyA2IDEyIDExIDdcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjE4IDE3IDEzIDEyIDE4IDdcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlDaGV2cm9uc1JpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTMgMTcgMTggMTIgMTMgN1wifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiNiAxNyAxMSAxMiA2IDdcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlDaGV2cm9uc1VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTcgMTEgMTIgNiA3IDExXCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxNyAxOCAxMiAxMyA3IDE4XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQ2hyb21lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMTBcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjRcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyMS4xN1wiLFwieTFcIjpcIjhcIixcIngyXCI6XCIxMlwiLFwieTJcIjpcIjhcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIzLjk1XCIsXCJ5MVwiOlwiNi4wNlwiLFwieDJcIjpcIjguNTRcIixcInkyXCI6XCIxNFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEwLjg4XCIsXCJ5MVwiOlwiMjEuOTRcIixcIngyXCI6XCIxNS40NlwiLFwieTJcIjpcIjE0XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMTBcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlDbGlwYm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgNGgyYTIgMiAwIDAgMSAyIDJ2MTRhMiAyIDAgMCAxLTIgMkg2YTIgMiAwIDAgMS0yLTJWNmEyIDIgMCAwIDEgMi0yaDJcIn19LHtcInRhZ1wiOlwicmVjdFwiLFwiYXR0clwiOntcInhcIjpcIjhcIixcInlcIjpcIjJcIixcIndpZHRoXCI6XCI4XCIsXCJoZWlnaHRcIjpcIjRcIixcInJ4XCI6XCIxXCIsXCJyeVwiOlwiMVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUNsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMTBcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjEyIDYgMTIgMTIgMTYgMTRcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlDbG91ZERyaXp6bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiOFwiLFwieTFcIjpcIjE5XCIsXCJ4MlwiOlwiOFwiLFwieTJcIjpcIjIxXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiOFwiLFwieTFcIjpcIjEzXCIsXCJ4MlwiOlwiOFwiLFwieTJcIjpcIjE1XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTZcIixcInkxXCI6XCIxOVwiLFwieDJcIjpcIjE2XCIsXCJ5MlwiOlwiMjFcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxNlwiLFwieTFcIjpcIjEzXCIsXCJ4MlwiOlwiMTZcIixcInkyXCI6XCIxNVwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiMjFcIixcIngyXCI6XCIxMlwiLFwieTJcIjpcIjIzXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIxNVwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiMTdcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxNi41OEE1IDUgMCAwIDAgMTggN2gtMS4yNkE4IDggMCAxIDAgNCAxNS4yNVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUNsb3VkTGlnaHRuaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE2LjlBNSA1IDAgMCAwIDE4IDdoLTEuMjZhOCA4IDAgMSAwLTExLjYyIDlcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjEzIDExIDkgMTcgMTUgMTcgMTEgMjNcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlDbG91ZE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMi42MSAxNi45NUE1IDUgMCAwIDAgMTggMTBoLTEuMjZhOCA4IDAgMCAwLTcuMDUtNk01IDVhOCA4IDAgMCAwIDQgMTVoOWE1IDUgMCAwIDAgMS43LS4zXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMVwiLFwieTFcIjpcIjFcIixcIngyXCI6XCIyM1wiLFwieTJcIjpcIjIzXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQ2xvdWRSYWluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE2XCIsXCJ5MVwiOlwiMTNcIixcIngyXCI6XCIxNlwiLFwieTJcIjpcIjIxXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiOFwiLFwieTFcIjpcIjEzXCIsXCJ4MlwiOlwiOFwiLFwieTJcIjpcIjIxXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIxNVwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiMjNcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxNi41OEE1IDUgMCAwIDAgMTggN2gtMS4yNkE4IDggMCAxIDAgNCAxNS4yNVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUNsb3VkU25vdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxNy41OEE1IDUgMCAwIDAgMTggOGgtMS4yNkE4IDggMCAxIDAgNCAxNi4yNVwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjhcIixcInkxXCI6XCIxNlwiLFwieDJcIjpcIjguMDFcIixcInkyXCI6XCIxNlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjhcIixcInkxXCI6XCIyMFwiLFwieDJcIjpcIjguMDFcIixcInkyXCI6XCIyMFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiMThcIixcIngyXCI6XCIxMi4wMVwiLFwieTJcIjpcIjE4XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIyMlwiLFwieDJcIjpcIjEyLjAxXCIsXCJ5MlwiOlwiMjJcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxNlwiLFwieTFcIjpcIjE2XCIsXCJ4MlwiOlwiMTYuMDFcIixcInkyXCI6XCIxNlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE2XCIsXCJ5MVwiOlwiMjBcIixcIngyXCI6XCIxNi4wMVwiLFwieTJcIjpcIjIwXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQ2xvdWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTBoLTEuMjZBOCA4IDAgMSAwIDkgMjBoOWE1IDUgMCAwIDAgMC0xMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlDb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTYgMTggMjIgMTIgMTYgNlwifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiOCA2IDIgMTIgOCAxOFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUNvZGVwZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlnb25cIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjEyIDIgMjIgOC41IDIyIDE1LjUgMTIgMjIgMiAxNS41IDIgOC41IDEyIDJcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjIyXCIsXCJ4MlwiOlwiMTJcIixcInkyXCI6XCIxNS41XCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIyMiA4LjUgMTIgMTUuNSAyIDguNVwifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMiAxNS41IDEyIDguNSAyMiAxNS41XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIyXCIsXCJ4MlwiOlwiMTJcIixcInkyXCI6XCI4LjVcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlDb2Rlc2FuZGJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxNlY4YTIgMiAwIDAgMC0xLTEuNzNsLTctNGEyIDIgMCAwIDAtMiAwbC03IDRBMiAyIDAgMCAwIDMgOHY4YTIgMiAwIDAgMCAxIDEuNzNsNyA0YTIgMiAwIDAgMCAyIDBsNy00QTIgMiAwIDAgMCAyMSAxNnpcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjcuNSA0LjIxIDEyIDYuODEgMTYuNSA0LjIxXCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCI3LjUgMTkuNzkgNy41IDE0LjYgMyAxMlwifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMjEgMTIgMTYuNSAxNC42IDE2LjUgMTkuNzlcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjMuMjcgNi45NiAxMiAxMi4wMSAyMC43MyA2Ljk2XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIyMi4wOFwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiMTJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlDb2ZmZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOGgxYTQgNCAwIDAgMSAwIDhoLTFcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDhoMTZ2OWE0IDQgMCAwIDEtNCA0SDZhNCA0IDAgMCAxLTQtNFY4elwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjZcIixcInkxXCI6XCIxXCIsXCJ4MlwiOlwiNlwiLFwieTJcIjpcIjRcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMFwiLFwieTFcIjpcIjFcIixcIngyXCI6XCIxMFwiLFwieTJcIjpcIjRcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxNFwiLFwieTFcIjpcIjFcIixcIngyXCI6XCIxNFwiLFwieTJcIjpcIjRcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlDb2x1bW5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDNoN2EyIDIgMCAwIDEgMiAydjE0YTIgMiAwIDAgMS0yIDJoLTdtMC0xOEg1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmg3bTAtMTh2MThcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlDb21tYW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDNhMyAzIDAgMCAwLTMgM3YxMmEzIDMgMCAwIDAgMyAzIDMgMyAwIDAgMCAzLTMgMyAzIDAgMCAwLTMtM0g2YTMgMyAwIDAgMC0zIDMgMyAzIDAgMCAwIDMgMyAzIDMgMCAwIDAgMy0zVjZhMyAzIDAgMCAwLTMtMyAzIDMgMCAwIDAtMyAzIDMgMyAwIDAgMCAzIDNoMTJhMyAzIDAgMCAwIDMtMyAzIDMgMCAwIDAtMy0zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUNvbXBhc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxMFwifX0se1widGFnXCI6XCJwb2x5Z29uXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxNi4yNCA3Ljc2IDE0LjEyIDE0LjEyIDcuNzYgMTYuMjQgOS44OCA5Ljg4IDE2LjI0IDcuNzZcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlDb3B5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJyZWN0XCIsXCJhdHRyXCI6e1wieFwiOlwiOVwiLFwieVwiOlwiOVwiLFwid2lkdGhcIjpcIjEzXCIsXCJoZWlnaHRcIjpcIjEzXCIsXCJyeFwiOlwiMlwiLFwicnlcIjpcIjJcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE1SDRhMiAyIDAgMCAxLTItMlY0YTIgMiAwIDAgMSAyLTJoOWEyIDIgMCAwIDEgMiAydjFcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlDb3JuZXJEb3duTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjkgMTAgNCAxNSA5IDIwXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNHY3YTQgNCAwIDAgMS00IDRINFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUNvcm5lckRvd25SaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjE1IDEwIDIwIDE1IDE1IDIwXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA0djdhNCA0IDAgMCAwIDQgNGgxMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUNvcm5lckxlZnREb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTQgMTUgOSAyMCA0IDE1XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNGgtN2E0IDQgMCAwIDAtNCA0djEyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQ29ybmVyTGVmdFVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTQgOSA5IDQgNCA5XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMjBoLTdhNCA0IDAgMCAxLTQtNFY0XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQ29ybmVyUmlnaHREb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTAgMTUgMTUgMjAgMjAgMTVcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDRoN2E0IDQgMCAwIDEgNCA0djEyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQ29ybmVyUmlnaHRVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjEwIDkgMTUgNCAyMCA5XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAyMGg3YTQgNCAwIDAgMCA0LTRWNFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUNvcm5lclVwTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjkgMTQgNCA5IDkgNFwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDIwdi03YTQgNCAwIDAgMC00LTRINFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUNvcm5lclVwUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxNSAxNCAyMCA5IDE1IDRcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDIwdi03YTQgNCAwIDAgMSA0LTRoMTJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlDcHUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInJlY3RcIixcImF0dHJcIjp7XCJ4XCI6XCI0XCIsXCJ5XCI6XCI0XCIsXCJ3aWR0aFwiOlwiMTZcIixcImhlaWdodFwiOlwiMTZcIixcInJ4XCI6XCIyXCIsXCJyeVwiOlwiMlwifX0se1widGFnXCI6XCJyZWN0XCIsXCJhdHRyXCI6e1wieFwiOlwiOVwiLFwieVwiOlwiOVwiLFwid2lkdGhcIjpcIjZcIixcImhlaWdodFwiOlwiNlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjlcIixcInkxXCI6XCIxXCIsXCJ4MlwiOlwiOVwiLFwieTJcIjpcIjRcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxNVwiLFwieTFcIjpcIjFcIixcIngyXCI6XCIxNVwiLFwieTJcIjpcIjRcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI5XCIsXCJ5MVwiOlwiMjBcIixcIngyXCI6XCI5XCIsXCJ5MlwiOlwiMjNcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxNVwiLFwieTFcIjpcIjIwXCIsXCJ4MlwiOlwiMTVcIixcInkyXCI6XCIyM1wifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjIwXCIsXCJ5MVwiOlwiOVwiLFwieDJcIjpcIjIzXCIsXCJ5MlwiOlwiOVwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjIwXCIsXCJ5MVwiOlwiMTRcIixcIngyXCI6XCIyM1wiLFwieTJcIjpcIjE0XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMVwiLFwieTFcIjpcIjlcIixcIngyXCI6XCI0XCIsXCJ5MlwiOlwiOVwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjFcIixcInkxXCI6XCIxNFwiLFwieDJcIjpcIjRcIixcInkyXCI6XCIxNFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUNyZWRpdENhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInJlY3RcIixcImF0dHJcIjp7XCJ4XCI6XCIxXCIsXCJ5XCI6XCI0XCIsXCJ3aWR0aFwiOlwiMjJcIixcImhlaWdodFwiOlwiMTZcIixcInJ4XCI6XCIyXCIsXCJyeVwiOlwiMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjFcIixcInkxXCI6XCIxMFwiLFwieDJcIjpcIjIzXCIsXCJ5MlwiOlwiMTBcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlDcm9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuMTMgMUw2IDE2YTIgMiAwIDAgMCAyIDJoMTVcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDYuMTNMMTYgNmEyIDIgMCAwIDEgMiAydjE1XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQ3Jvc3NoYWlyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMTBcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyMlwiLFwieTFcIjpcIjEyXCIsXCJ4MlwiOlwiMThcIixcInkyXCI6XCIxMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjZcIixcInkxXCI6XCIxMlwiLFwieDJcIjpcIjJcIixcInkyXCI6XCIxMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiNlwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiMjJcIixcIngyXCI6XCIxMlwiLFwieTJcIjpcIjE4XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpRGF0YWJhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImVsbGlwc2VcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI1XCIsXCJyeFwiOlwiOVwiLFwicnlcIjpcIjNcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMmMwIDEuNjYtNCAzLTkgM3MtOS0xLjM0LTktM1wifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNXYxNGMwIDEuNjYgNCAzIDkgM3M5LTEuMzQgOS0zVjVcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlEZWxldGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNEg4bC03IDggNyA4aDEzYTIgMiAwIDAgMCAyLTJWNmEyIDIgMCAwIDAtMi0yelwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE4XCIsXCJ5MVwiOlwiOVwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiMTVcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjlcIixcIngyXCI6XCIxOFwiLFwieTJcIjpcIjE1XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpRGlzYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjEwXCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIzXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpRGl2aWRlQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjhcIixcInkxXCI6XCIxMlwiLFwieDJcIjpcIjE2XCIsXCJ5MlwiOlwiMTJcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjE2XCIsXCJ4MlwiOlwiMTJcIixcInkyXCI6XCIxNlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiOFwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiOFwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMTBcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlEaXZpZGVTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInJlY3RcIixcImF0dHJcIjp7XCJ4XCI6XCIzXCIsXCJ5XCI6XCIzXCIsXCJ3aWR0aFwiOlwiMThcIixcImhlaWdodFwiOlwiMThcIixcInJ4XCI6XCIyXCIsXCJyeVwiOlwiMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjhcIixcInkxXCI6XCIxMlwiLFwieDJcIjpcIjE2XCIsXCJ5MlwiOlwiMTJcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjE2XCIsXCJ4MlwiOlwiMTJcIixcInkyXCI6XCIxNlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiOFwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiOFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaURpdmlkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiNlwiLFwiclwiOlwiMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjVcIixcInkxXCI6XCIxMlwiLFwieDJcIjpcIjE5XCIsXCJ5MlwiOlwiMTJcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMThcIixcInJcIjpcIjJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlEb2xsYXJTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiMVwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiMjNcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1SDkuNWEzLjUgMy41IDAgMCAwIDAgN2g1YTMuNSAzLjUgMCAwIDEgMCA3SDZcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlEb3dubG9hZENsb3VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiOCAxNyAxMiAyMSAxNiAxN1wifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiMTJcIixcIngyXCI6XCIxMlwiLFwieTJcIjpcIjIxXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuODggMTguMDlBNSA1IDAgMCAwIDE4IDloLTEuMjZBOCA4IDAgMSAwIDMgMTYuMjlcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlEb3dubG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxNXY0YTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0ydi00XCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCI3IDEwIDEyIDE1IDE3IDEwXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIxNVwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiM1wifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaURyaWJiYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMTBcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjU2IDIuNzVjNC4zNyA2LjAzIDYuMDIgOS40MiA4LjAzIDE3LjcybTIuNTQtMTUuMzhjLTMuNzIgNC4zNS04Ljk0IDUuNjYtMTYuODggNS44NW0xOS41IDEuOWMtMy41LS45My02LjYzLS44Mi04Ljk0IDAtMi41OC45Mi01LjAxIDIuODYtNy40NCA2LjMyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpRHJvcGxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyLjY5bDUuNjYgNS42NmE4IDggMCAxIDEtMTEuMzEgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlFZGl0MiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAzYTIuODI4IDIuODI4IDAgMSAxIDQgNEw3LjUgMjAuNSAyIDIybDEuNS01LjVMMTcgM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlFZGl0MyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyMGg5XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNSAzLjVhMi4xMjEgMi4xMjEgMCAwIDEgMyAzTDcgMTlsLTQgMSAxLTRMMTYuNSAzLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpRWRpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA0SDRhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDE0YTIgMiAwIDAgMCAyLTJ2LTdcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC41IDIuNWEyLjEyMSAyLjEyMSAwIDAgMSAzIDNMMTIgMTVsLTQgMSAxLTQgOS41LTkuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlFeHRlcm5hbExpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTN2NmEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMlY4YTIgMiAwIDAgMSAyLTJoNlwifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTUgMyAyMSAzIDIxIDlcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMFwiLFwieTFcIjpcIjE0XCIsXCJ4MlwiOlwiMjFcIixcInkyXCI6XCIzXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpRXllT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3Ljk0IDE3Ljk0QTEwLjA3IDEwLjA3IDAgMCAxIDEyIDIwYy03IDAtMTEtOC0xMS04YTE4LjQ1IDE4LjQ1IDAgMCAxIDUuMDYtNS45NE05LjkgNC4yNEE5LjEyIDkuMTIgMCAwIDEgMTIgNGM3IDAgMTEgOCAxMSA4YTE4LjUgMTguNSAwIDAgMS0yLjE2IDMuMTltLTYuNzItMS4wN2EzIDMgMCAxIDEtNC4yNC00LjI0XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMVwiLFwieTFcIjpcIjFcIixcIngyXCI6XCIyM1wiLFwieTJcIjpcIjIzXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpRXllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMTJzNC04IDExLTggMTEgOCAxMSA4LTQgOC0xMSA4LTExLTgtMTEtOHpcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjNcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlGYWNlYm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAyaC0zYTUgNSAwIDAgMC01IDV2M0g3djRoM3Y4aDR2LThoM2wxLTRoLTRWN2ExIDEgMCAwIDEgMS0xaDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpRmFzdEZvcndhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlnb25cIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjEzIDE5IDIyIDEyIDEzIDUgMTMgMTlcIn19LHtcInRhZ1wiOlwicG9seWdvblwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMiAxOSAxMSAxMiAyIDUgMiAxOVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUZlYXRoZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuMjQgMTIuMjRhNiA2IDAgMCAwLTguNDktOC40OUw1IDEwLjVWMTloOC41elwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE2XCIsXCJ5MVwiOlwiOFwiLFwieDJcIjpcIjJcIixcInkyXCI6XCIyMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE3LjVcIixcInkxXCI6XCIxNVwiLFwieDJcIjpcIjlcIixcInkyXCI6XCIxNVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUZpZ21hIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgNS41QTMuNSAzLjUgMCAwIDEgOC41IDJIMTJ2N0g4LjVBMy41IDMuNSAwIDAgMSA1IDUuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyaDMuNWEzLjUgMy41IDAgMSAxIDAgN0gxMlYyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEyLjVhMy41IDMuNSAwIDEgMSA3IDAgMy41IDMuNSAwIDEgMS03IDB6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxOS41QTMuNSAzLjUgMCAwIDEgOC41IDE2SDEydjMuNWEzLjUgMy41IDAgMSAxLTcgMHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDEyLjVBMy41IDMuNSAwIDAgMSA4LjUgOUgxMnY3SDguNUEzLjUgMy41IDAgMCAxIDUgMTIuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlGaWxlTWludXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2YTIgMiAwIDAgMC0yIDJ2MTZhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjh6XCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxNCAyIDE0IDggMjAgOFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjlcIixcInkxXCI6XCIxNVwiLFwieDJcIjpcIjE1XCIsXCJ5MlwiOlwiMTVcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlGaWxlUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAySDZhMiAyIDAgMCAwLTIgMnYxNmEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWOHpcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjE0IDIgMTQgOCAyMCA4XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIxOFwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiMTJcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI5XCIsXCJ5MVwiOlwiMTVcIixcIngyXCI6XCIxNVwiLFwieTJcIjpcIjE1XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpRmlsZVRleHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2YTIgMiAwIDAgMC0yIDJ2MTZhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjh6XCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxNCAyIDE0IDggMjAgOFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE2XCIsXCJ5MVwiOlwiMTNcIixcIngyXCI6XCI4XCIsXCJ5MlwiOlwiMTNcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxNlwiLFwieTFcIjpcIjE3XCIsXCJ4MlwiOlwiOFwiLFwieTJcIjpcIjE3XCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxMCA5IDkgOSA4IDlcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlGaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDJINmEyIDIgMCAwIDAtMiAydjE2YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlY5elwifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTMgMiAxMyA5IDIwIDlcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlGaWxtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJyZWN0XCIsXCJhdHRyXCI6e1wieFwiOlwiMlwiLFwieVwiOlwiMlwiLFwid2lkdGhcIjpcIjIwXCIsXCJoZWlnaHRcIjpcIjIwXCIsXCJyeFwiOlwiMi4xOFwiLFwicnlcIjpcIjIuMThcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI3XCIsXCJ5MVwiOlwiMlwiLFwieDJcIjpcIjdcIixcInkyXCI6XCIyMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE3XCIsXCJ5MVwiOlwiMlwiLFwieDJcIjpcIjE3XCIsXCJ5MlwiOlwiMjJcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyXCIsXCJ5MVwiOlwiMTJcIixcIngyXCI6XCIyMlwiLFwieTJcIjpcIjEyXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMlwiLFwieTFcIjpcIjdcIixcIngyXCI6XCI3XCIsXCJ5MlwiOlwiN1wifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjJcIixcInkxXCI6XCIxN1wiLFwieDJcIjpcIjdcIixcInkyXCI6XCIxN1wifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE3XCIsXCJ5MVwiOlwiMTdcIixcIngyXCI6XCIyMlwiLFwieTJcIjpcIjE3XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTdcIixcInkxXCI6XCI3XCIsXCJ4MlwiOlwiMjJcIixcInkyXCI6XCI3XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpRmlsdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5Z29uXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIyMiAzIDIgMyAxMCAxMi40NiAxMCAxOSAxNCAyMSAxNCAxMi40NiAyMiAzXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpRmxhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDE1czEtMSA0LTEgNSAyIDggMiA0LTEgNC0xVjNzLTEgMS00IDEtNS0yLTgtMi00IDEtNCAxelwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjRcIixcInkxXCI6XCIyMlwiLFwieDJcIjpcIjRcIixcInkyXCI6XCIxNVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUZvbGRlck1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDE5YTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0yVjVhMiAyIDAgMCAxIDItMmg1bDIgM2g5YTIgMiAwIDAgMSAyIDJ6XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiOVwiLFwieTFcIjpcIjE0XCIsXCJ4MlwiOlwiMTVcIixcInkyXCI6XCIxNFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUZvbGRlclBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTlhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDVsMiAzaDlhMiAyIDAgMCAxIDIgMnpcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjExXCIsXCJ4MlwiOlwiMTJcIixcInkyXCI6XCIxN1wifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjlcIixcInkxXCI6XCIxNFwiLFwieDJcIjpcIjE1XCIsXCJ5MlwiOlwiMTRcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlGb2xkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTlhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDVsMiAzaDlhMiAyIDAgMCAxIDIgMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlGcmFtZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNlY5aDE0VjJINWwxNCAxNGgtN20tNyAwbDcgN3YtN20tNyAwaDdcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlGcm93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjEwXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTZzLTEuNS0yLTQtMi00IDItNCAyXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiOVwiLFwieTFcIjpcIjlcIixcIngyXCI6XCI5LjAxXCIsXCJ5MlwiOlwiOVwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE1XCIsXCJ5MVwiOlwiOVwiLFwieDJcIjpcIjE1LjAxXCIsXCJ5MlwiOlwiOVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUdpZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIyMCAxMiAyMCAyMiA0IDIyIDQgMTJcIn19LHtcInRhZ1wiOlwicmVjdFwiLFwiYXR0clwiOntcInhcIjpcIjJcIixcInlcIjpcIjdcIixcIndpZHRoXCI6XCIyMFwiLFwiaGVpZ2h0XCI6XCI1XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIyMlwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiN1wifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDdINy41YTIuNSAyLjUgMCAwIDEgMC01QzExIDIgMTIgNyAxMiA3elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDdoNC41YTIuNSAyLjUgMCAwIDAgMC01QzEzIDIgMTIgNyAxMiA3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUdpdEJyYW5jaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI2XCIsXCJ5MVwiOlwiM1wiLFwieDJcIjpcIjZcIixcInkyXCI6XCIxNVwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMThcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIzXCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2XCIsXCJjeVwiOlwiMThcIixcInJcIjpcIjNcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA5YTkgOSAwIDAgMS05IDlcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlHaXRDb21taXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCI0XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMS4wNVwiLFwieTFcIjpcIjEyXCIsXCJ4MlwiOlwiN1wiLFwieTJcIjpcIjEyXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTcuMDFcIixcInkxXCI6XCIxMlwiLFwieDJcIjpcIjIyLjk2XCIsXCJ5MlwiOlwiMTJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlHaXRNZXJnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE4XCIsXCJjeVwiOlwiMThcIixcInJcIjpcIjNcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjZcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIzXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAyMVY5YTkgOSAwIDAgMCA5IDlcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlHaXRQdWxsUmVxdWVzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE4XCIsXCJjeVwiOlwiMThcIixcInJcIjpcIjNcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjZcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIzXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgNmgzYTIgMiAwIDAgMSAyIDJ2N1wifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjZcIixcInkxXCI6XCI5XCIsXCJ4MlwiOlwiNlwiLFwieTJcIjpcIjIxXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpR2l0aHViIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTljLTUgMS41LTUtMi41LTctM20xNCA2di0zLjg3YTMuMzcgMy4zNyAwIDAgMC0uOTQtMi42MWMzLjE0LS4zNSA2LjQ0LTEuNTQgNi40NC03QTUuNDQgNS40NCAwIDAgMCAyMCA0Ljc3IDUuMDcgNS4wNyAwIDAgMCAxOS45MSAxUzE4LjczLjY1IDE2IDIuNDhhMTMuMzggMTMuMzggMCAwIDAtNyAwQzYuMjcuNjUgNS4wOSAxIDUuMDkgMUE1LjA3IDUuMDcgMCAwIDAgNSA0Ljc3YTUuNDQgNS40NCAwIDAgMC0xLjUgMy43OGMwIDUuNDIgMy4zIDYuNjEgNi40NCA3QTMuMzcgMy4zNyAwIDAgMCA5IDE4LjEzVjIyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpR2l0bGFiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyLjY1IDE0LjM5TDEyIDIyLjEzIDEuMzUgMTQuMzlhLjg0Ljg0IDAgMCAxLS4zLS45NGwxLjIyLTMuNzggMi40NC03LjUxQS40Mi40MiAwIDAgMSA0LjgyIDJhLjQzLjQzIDAgMCAxIC41OCAwIC40Mi40MiAwIDAgMSAuMTEuMThsMi40NCA3LjQ5aDguMWwyLjQ0LTcuNTFBLjQyLjQyIDAgMCAxIDE4LjYgMmEuNDMuNDMgMCAwIDEgLjU4IDAgLjQyLjQyIDAgMCAxIC4xMS4xOGwyLjQ0IDcuNTFMMjMgMTMuNDVhLjg0Ljg0IDAgMCAxLS4zNS45NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlHbG9iZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjEwXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMlwiLFwieTFcIjpcIjEyXCIsXCJ4MlwiOlwiMjJcIixcInkyXCI6XCIxMlwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJhMTUuMyAxNS4zIDAgMCAxIDQgMTAgMTUuMyAxNS4zIDAgMCAxLTQgMTAgMTUuMyAxNS4zIDAgMCAxLTQtMTAgMTUuMyAxNS4zIDAgMCAxIDQtMTB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpR3JpZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicmVjdFwiLFwiYXR0clwiOntcInhcIjpcIjNcIixcInlcIjpcIjNcIixcIndpZHRoXCI6XCI3XCIsXCJoZWlnaHRcIjpcIjdcIn19LHtcInRhZ1wiOlwicmVjdFwiLFwiYXR0clwiOntcInhcIjpcIjE0XCIsXCJ5XCI6XCIzXCIsXCJ3aWR0aFwiOlwiN1wiLFwiaGVpZ2h0XCI6XCI3XCJ9fSx7XCJ0YWdcIjpcInJlY3RcIixcImF0dHJcIjp7XCJ4XCI6XCIxNFwiLFwieVwiOlwiMTRcIixcIndpZHRoXCI6XCI3XCIsXCJoZWlnaHRcIjpcIjdcIn19LHtcInRhZ1wiOlwicmVjdFwiLFwiYXR0clwiOntcInhcIjpcIjNcIixcInlcIjpcIjE0XCIsXCJ3aWR0aFwiOlwiN1wiLFwiaGVpZ2h0XCI6XCI3XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpSGFyZERyaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjIyXCIsXCJ5MVwiOlwiMTJcIixcIngyXCI6XCIyXCIsXCJ5MlwiOlwiMTJcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjQ1IDUuMTFMMiAxMnY2YTIgMiAwIDAgMCAyIDJoMTZhMiAyIDAgMCAwIDItMnYtNmwtMy40NS02Ljg5QTIgMiAwIDAgMCAxNi43NiA0SDcuMjRhMiAyIDAgMCAwLTEuNzkgMS4xMXpcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI2XCIsXCJ5MVwiOlwiMTZcIixcIngyXCI6XCI2LjAxXCIsXCJ5MlwiOlwiMTZcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMFwiLFwieTFcIjpcIjE2XCIsXCJ4MlwiOlwiMTAuMDFcIixcInkyXCI6XCIxNlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUhhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiNFwiLFwieTFcIjpcIjlcIixcIngyXCI6XCIyMFwiLFwieTJcIjpcIjlcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI0XCIsXCJ5MVwiOlwiMTVcIixcIngyXCI6XCIyMFwiLFwieTJcIjpcIjE1XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTBcIixcInkxXCI6XCIzXCIsXCJ4MlwiOlwiOFwiLFwieTJcIjpcIjIxXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTZcIixcInkxXCI6XCIzXCIsXCJ4MlwiOlwiMTRcIixcInkyXCI6XCIyMVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUhlYWRwaG9uZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxOHYtNmE5IDkgMCAwIDEgMTggMHY2XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTlhMiAyIDAgMCAxLTIgMmgtMWEyIDIgMCAwIDEtMi0ydi0zYTIgMiAwIDAgMSAyLTJoM3pNMyAxOWEyIDIgMCAwIDAgMiAyaDFhMiAyIDAgMCAwIDItMnYtM2EyIDIgMCAwIDAtMi0ySDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpSGVhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuODQgNC42MWE1LjUgNS41IDAgMCAwLTcuNzggMEwxMiA1LjY3bC0xLjA2LTEuMDZhNS41IDUuNSAwIDAgMC03Ljc4IDcuNzhsMS4wNiAxLjA2TDEyIDIxLjIzbDcuNzgtNy43OCAxLjA2LTEuMDZhNS41IDUuNSAwIDAgMCAwLTcuNzh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpSGVscENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjEwXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4wOSA5YTMgMyAwIDAgMSA1LjgzIDFjMCAyLTMgMy0zIDNcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjE3XCIsXCJ4MlwiOlwiMTIuMDFcIixcInkyXCI6XCIxN1wifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUhleGFnb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTZWOGEyIDIgMCAwIDAtMS0xLjczbC03LTRhMiAyIDAgMCAwLTIgMGwtNyA0QTIgMiAwIDAgMCAzIDh2OGEyIDIgMCAwIDAgMSAxLjczbDcgNGEyIDIgMCAwIDAgMiAwbDctNEEyIDIgMCAwIDAgMjEgMTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpSG9tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDlsOS03IDkgN3YxMWEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnpcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjkgMjIgOSAxMiAxNSAxMiAxNSAyMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUltYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJyZWN0XCIsXCJhdHRyXCI6e1wieFwiOlwiM1wiLFwieVwiOlwiM1wiLFwid2lkdGhcIjpcIjE4XCIsXCJoZWlnaHRcIjpcIjE4XCIsXCJyeFwiOlwiMlwiLFwicnlcIjpcIjJcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjguNVwiLFwiclwiOlwiMS41XCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIyMSAxNSAxNiAxMCA1IDIxXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpSW5ib3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIyMiAxMiAxNiAxMiAxNCAxNSAxMCAxNSA4IDEyIDIgMTJcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjQ1IDUuMTFMMiAxMnY2YTIgMiAwIDAgMCAyIDJoMTZhMiAyIDAgMCAwIDItMnYtNmwtMy40NS02Ljg5QTIgMiAwIDAgMCAxNi43NiA0SDcuMjRhMiAyIDAgMCAwLTEuNzkgMS4xMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlJbmZvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMTBcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjE2XCIsXCJ4MlwiOlwiMTJcIixcInkyXCI6XCIxMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiOFwiLFwieDJcIjpcIjEyLjAxXCIsXCJ5MlwiOlwiOFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUluc3RhZ3JhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicmVjdFwiLFwiYXR0clwiOntcInhcIjpcIjJcIixcInlcIjpcIjJcIixcIndpZHRoXCI6XCIyMFwiLFwiaGVpZ2h0XCI6XCIyMFwiLFwicnhcIjpcIjVcIixcInJ5XCI6XCI1XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTEuMzdBNCA0IDAgMSAxIDEyLjYzIDggNCA0IDAgMCAxIDE2IDExLjM3elwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE3LjVcIixcInkxXCI6XCI2LjVcIixcIngyXCI6XCIxNy41MVwiLFwieTJcIjpcIjYuNVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUl0YWxpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxOVwiLFwieTFcIjpcIjRcIixcIngyXCI6XCIxMFwiLFwieTJcIjpcIjRcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxNFwiLFwieTFcIjpcIjIwXCIsXCJ4MlwiOlwiNVwiLFwieTJcIjpcIjIwXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTVcIixcInkxXCI6XCI0XCIsXCJ4MlwiOlwiOVwiLFwieTJcIjpcIjIwXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpS2V5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDJsLTIgMm0tNy42MSA3LjYxYTUuNSA1LjUgMCAxIDEtNy43NzggNy43NzggNS41IDUuNSAwIDAgMSA3Ljc3Ny03Ljc3N3ptMCAwTDE1LjUgNy41bTAgMGwzIDNMMjIgN2wtMy0zbS0zLjUgMy41TDE5IDRcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlMYXllcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlnb25cIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjEyIDIgMiA3IDEyIDEyIDIyIDcgMTIgMlwifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMiAxNyAxMiAyMiAyMiAxN1wifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMiAxMiAxMiAxNyAyMiAxMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUxheW91dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicmVjdFwiLFwiYXR0clwiOntcInhcIjpcIjNcIixcInlcIjpcIjNcIixcIndpZHRoXCI6XCIxOFwiLFwiaGVpZ2h0XCI6XCIxOFwiLFwicnhcIjpcIjJcIixcInJ5XCI6XCIyXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiM1wiLFwieTFcIjpcIjlcIixcIngyXCI6XCIyMVwiLFwieTJcIjpcIjlcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI5XCIsXCJ5MVwiOlwiMjFcIixcIngyXCI6XCI5XCIsXCJ5MlwiOlwiOVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUxpZmVCdW95IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMTBcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjRcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI0LjkzXCIsXCJ5MVwiOlwiNC45M1wiLFwieDJcIjpcIjkuMTdcIixcInkyXCI6XCI5LjE3XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTQuODNcIixcInkxXCI6XCIxNC44M1wiLFwieDJcIjpcIjE5LjA3XCIsXCJ5MlwiOlwiMTkuMDdcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxNC44M1wiLFwieTFcIjpcIjkuMTdcIixcIngyXCI6XCIxOS4wN1wiLFwieTJcIjpcIjQuOTNcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxNC44M1wiLFwieTFcIjpcIjkuMTdcIixcIngyXCI6XCIxOC4zNlwiLFwieTJcIjpcIjUuNjRcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI0LjkzXCIsXCJ5MVwiOlwiMTkuMDdcIixcIngyXCI6XCI5LjE3XCIsXCJ5MlwiOlwiMTQuODNcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlMaW5rMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA3aDNhNSA1IDAgMCAxIDUgNSA1IDUgMCAwIDEtNSA1aC0zbS02IDBINmE1IDUgMCAwIDEtNS01IDUgNSAwIDAgMSA1LTVoM1wifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjhcIixcInkxXCI6XCIxMlwiLFwieDJcIjpcIjE2XCIsXCJ5MlwiOlwiMTJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlMaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDEzYTUgNSAwIDAgMCA3LjU0LjU0bDMtM2E1IDUgMCAwIDAtNy4wNy03LjA3bC0xLjcyIDEuNzFcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxMWE1IDUgMCAwIDAtNy41NC0uNTRsLTMgM2E1IDUgMCAwIDAgNy4wNyA3LjA3bDEuNzEtMS43MVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUxpbmtlZGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDhhNiA2IDAgMCAxIDYgNnY3aC00di03YTIgMiAwIDAgMC0yLTIgMiAyIDAgMCAwLTIgMnY3aC00di03YTYgNiAwIDAgMSA2LTZ6XCJ9fSx7XCJ0YWdcIjpcInJlY3RcIixcImF0dHJcIjp7XCJ4XCI6XCIyXCIsXCJ5XCI6XCI5XCIsXCJ3aWR0aFwiOlwiNFwiLFwiaGVpZ2h0XCI6XCIxMlwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNFwiLFwiY3lcIjpcIjRcIixcInJcIjpcIjJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlMaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjhcIixcInkxXCI6XCI2XCIsXCJ4MlwiOlwiMjFcIixcInkyXCI6XCI2XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiOFwiLFwieTFcIjpcIjEyXCIsXCJ4MlwiOlwiMjFcIixcInkyXCI6XCIxMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjhcIixcInkxXCI6XCIxOFwiLFwieDJcIjpcIjIxXCIsXCJ5MlwiOlwiMThcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIzXCIsXCJ5MVwiOlwiNlwiLFwieDJcIjpcIjMuMDFcIixcInkyXCI6XCI2XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiM1wiLFwieTFcIjpcIjEyXCIsXCJ4MlwiOlwiMy4wMVwiLFwieTJcIjpcIjEyXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiM1wiLFwieTFcIjpcIjE4XCIsXCJ4MlwiOlwiMy4wMVwiLFwieTJcIjpcIjE4XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpTG9hZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiMlwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiNlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiMThcIixcIngyXCI6XCIxMlwiLFwieTJcIjpcIjIyXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiNC45M1wiLFwieTFcIjpcIjQuOTNcIixcIngyXCI6XCI3Ljc2XCIsXCJ5MlwiOlwiNy43NlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE2LjI0XCIsXCJ5MVwiOlwiMTYuMjRcIixcIngyXCI6XCIxOS4wN1wiLFwieTJcIjpcIjE5LjA3XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMlwiLFwieTFcIjpcIjEyXCIsXCJ4MlwiOlwiNlwiLFwieTJcIjpcIjEyXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMThcIixcInkxXCI6XCIxMlwiLFwieDJcIjpcIjIyXCIsXCJ5MlwiOlwiMTJcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI0LjkzXCIsXCJ5MVwiOlwiMTkuMDdcIixcIngyXCI6XCI3Ljc2XCIsXCJ5MlwiOlwiMTYuMjRcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxNi4yNFwiLFwieTFcIjpcIjcuNzZcIixcIngyXCI6XCIxOS4wN1wiLFwieTJcIjpcIjQuOTNcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJyZWN0XCIsXCJhdHRyXCI6e1wieFwiOlwiM1wiLFwieVwiOlwiMTFcIixcIndpZHRoXCI6XCIxOFwiLFwiaGVpZ2h0XCI6XCIxMVwiLFwicnhcIjpcIjJcIixcInJ5XCI6XCIyXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxMVY3YTUgNSAwIDAgMSAxMCAwdjRcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlMb2dJbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAzaDRhMiAyIDAgMCAxIDIgMnYxNGEyIDIgMCAwIDEtMiAyaC00XCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxMCAxNyAxNSAxMiAxMCA3XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTVcIixcInkxXCI6XCIxMlwiLFwieDJcIjpcIjNcIixcInkyXCI6XCIxMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUxvZ091dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDIxSDVhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJoNFwifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTYgMTcgMjEgMTIgMTYgN1wifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjIxXCIsXCJ5MVwiOlwiMTJcIixcIngyXCI6XCI5XCIsXCJ5MlwiOlwiMTJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlNYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNGgxNmMxLjEgMCAyIC45IDIgMnYxMmMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMlY2YzAtMS4xLjktMiAyLTJ6XCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIyMiw2IDEyLDEzIDIsNlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaU1hcFBpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMGMwIDctOSAxMy05IDEzcy05LTYtOS0xM2E5IDkgMCAwIDEgMTggMHpcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTBcIixcInJcIjpcIjNcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlNYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlnb25cIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjEgNiAxIDIyIDggMTggMTYgMjIgMjMgMTggMjMgMiAxNiA2IDggMiAxIDZcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI4XCIsXCJ5MVwiOlwiMlwiLFwieDJcIjpcIjhcIixcInkyXCI6XCIxOFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE2XCIsXCJ5MVwiOlwiNlwiLFwieDJcIjpcIjE2XCIsXCJ5MlwiOlwiMjJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlNYXhpbWl6ZTIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxNSAzIDIxIDMgMjEgOVwifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiOSAyMSAzIDIxIDMgMTVcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyMVwiLFwieTFcIjpcIjNcIixcIngyXCI6XCIxNFwiLFwieTJcIjpcIjEwXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiM1wiLFwieTFcIjpcIjIxXCIsXCJ4MlwiOlwiMTBcIixcInkyXCI6XCIxNFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaU1heGltaXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggM0g1YTIgMiAwIDAgMC0yIDJ2M20xOCAwVjVhMiAyIDAgMCAwLTItMmgtM20wIDE4aDNhMiAyIDAgMCAwIDItMnYtM00zIDE2djNhMiAyIDAgMCAwIDIgMmgzXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpTWVoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMTBcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI4XCIsXCJ5MVwiOlwiMTVcIixcIngyXCI6XCIxNlwiLFwieTJcIjpcIjE1XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiOVwiLFwieTFcIjpcIjlcIixcIngyXCI6XCI5LjAxXCIsXCJ5MlwiOlwiOVwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE1XCIsXCJ5MVwiOlwiOVwiLFwieDJcIjpcIjE1LjAxXCIsXCJ5MlwiOlwiOVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaU1lbnUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiM1wiLFwieTFcIjpcIjEyXCIsXCJ4MlwiOlwiMjFcIixcInkyXCI6XCIxMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjNcIixcInkxXCI6XCI2XCIsXCJ4MlwiOlwiMjFcIixcInkyXCI6XCI2XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiM1wiLFwieTFcIjpcIjE4XCIsXCJ4MlwiOlwiMjFcIixcInkyXCI6XCIxOFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaU1lc3NhZ2VDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTEuNWE4LjM4IDguMzggMCAwIDEtLjkgMy44IDguNSA4LjUgMCAwIDEtNy42IDQuNyA4LjM4IDguMzggMCAwIDEtMy44LS45TDMgMjFsMS45LTUuN2E4LjM4IDguMzggMCAwIDEtLjktMy44IDguNSA4LjUgMCAwIDEgNC43LTcuNiA4LjM4IDguMzggMCAwIDEgMy44LS45aC41YTguNDggOC40OCAwIDAgMSA4IDh2LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpTWVzc2FnZVNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxNWEyIDIgMCAwIDEtMiAySDdsLTQgNFY1YTIgMiAwIDAgMSAyLTJoMTRhMiAyIDAgMCAxIDIgMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlNaWNPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMVwiLFwieTFcIjpcIjFcIixcIngyXCI6XCIyM1wiLFwieTJcIjpcIjIzXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA5djNhMyAzIDAgMCAwIDUuMTIgMi4xMk0xNSA5LjM0VjRhMyAzIDAgMCAwLTUuOTQtLjZcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxNi45NUE3IDcgMCAwIDEgNSAxMnYtMm0xNCAwdjJhNyA3IDAgMCAxLS4xMSAxLjIzXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIxOVwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiMjNcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI4XCIsXCJ5MVwiOlwiMjNcIixcIngyXCI6XCIxNlwiLFwieTJcIjpcIjIzXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpTWljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDFhMyAzIDAgMCAwLTMgM3Y4YTMgMyAwIDAgMCA2IDBWNGEzIDMgMCAwIDAtMy0zelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDEwdjJhNyA3IDAgMCAxLTE0IDB2LTJcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjE5XCIsXCJ4MlwiOlwiMTJcIixcInkyXCI6XCIyM1wifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjhcIixcInkxXCI6XCIyM1wiLFwieDJcIjpcIjE2XCIsXCJ5MlwiOlwiMjNcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlNaW5pbWl6ZTIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCI0IDE0IDEwIDE0IDEwIDIwXCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIyMCAxMCAxNCAxMCAxNCA0XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTRcIixcInkxXCI6XCIxMFwiLFwieDJcIjpcIjIxXCIsXCJ5MlwiOlwiM1wifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjNcIixcInkxXCI6XCIyMVwiLFwieDJcIjpcIjEwXCIsXCJ5MlwiOlwiMTRcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlNaW5pbWl6ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDN2M2EyIDIgMCAwIDEtMiAySDNtMTggMGgtM2EyIDIgMCAwIDEtMi0yVjNtMCAxOHYtM2EyIDIgMCAwIDEgMi0yaDNNMyAxNmgzYTIgMiAwIDAgMSAyIDJ2M1wifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaU1pbnVzQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMTBcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI4XCIsXCJ5MVwiOlwiMTJcIixcIngyXCI6XCIxNlwiLFwieTJcIjpcIjEyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpTWludXNTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInJlY3RcIixcImF0dHJcIjp7XCJ4XCI6XCIzXCIsXCJ5XCI6XCIzXCIsXCJ3aWR0aFwiOlwiMThcIixcImhlaWdodFwiOlwiMThcIixcInJ4XCI6XCIyXCIsXCJyeVwiOlwiMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjhcIixcInkxXCI6XCIxMlwiLFwieDJcIjpcIjE2XCIsXCJ5MlwiOlwiMTJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI1XCIsXCJ5MVwiOlwiMTJcIixcIngyXCI6XCIxOVwiLFwieTJcIjpcIjEyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpTW9uaXRvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicmVjdFwiLFwiYXR0clwiOntcInhcIjpcIjJcIixcInlcIjpcIjNcIixcIndpZHRoXCI6XCIyMFwiLFwiaGVpZ2h0XCI6XCIxNFwiLFwicnhcIjpcIjJcIixcInJ5XCI6XCIyXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiOFwiLFwieTFcIjpcIjIxXCIsXCJ4MlwiOlwiMTZcIixcInkyXCI6XCIyMVwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiMTdcIixcIngyXCI6XCIxMlwiLFwieTJcIjpcIjIxXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpTW9vbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMi43OUE5IDkgMCAxIDEgMTEuMjEgMyA3IDcgMCAwIDAgMjEgMTIuNzl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpTW9yZUhvcml6b250YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxXCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxOVwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxXCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI1XCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjFcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlNb3JlVmVydGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxXCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjVcIixcInJcIjpcIjFcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTlcIixcInJcIjpcIjFcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlNb3VzZVBvaW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzbDcuMDcgMTYuOTcgMi41MS03LjM5IDcuMzktMi41MUwzIDN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTNsNiA2XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpTW92ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjUgOSAyIDEyIDUgMTVcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjkgNSAxMiAyIDE1IDVcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjE1IDE5IDEyIDIyIDkgMTlcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjE5IDkgMjIgMTIgMTkgMTVcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyXCIsXCJ5MVwiOlwiMTJcIixcIngyXCI6XCIyMlwiLFwieTJcIjpcIjEyXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIyXCIsXCJ4MlwiOlwiMTJcIixcInkyXCI6XCIyMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaU11c2ljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMThWNWwxMi0ydjEzXCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2XCIsXCJjeVwiOlwiMThcIixcInJcIjpcIjNcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE4XCIsXCJjeVwiOlwiMTZcIixcInJcIjpcIjNcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlOYXZpZ2F0aW9uMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWdvblwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTIgMiAxOSAyMSAxMiAxNyA1IDIxIDEyIDJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlOYXZpZ2F0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5Z29uXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIzIDExIDIyIDIgMTMgMjEgMTEgMTMgMyAxMVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaU9jdGFnb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlnb25cIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjcuODYgMiAxNi4xNCAyIDIyIDcuODYgMjIgMTYuMTQgMTYuMTQgMjIgNy44NiAyMiAyIDE2LjE0IDIgNy44NiA3Ljg2IDJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlQYWNrYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE2LjVcIixcInkxXCI6XCI5LjRcIixcIngyXCI6XCI3LjVcIixcInkyXCI6XCI0LjIxXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTZWOGEyIDIgMCAwIDAtMS0xLjczbC03LTRhMiAyIDAgMCAwLTIgMGwtNyA0QTIgMiAwIDAgMCAzIDh2OGEyIDIgMCAwIDAgMSAxLjczbDcgNGEyIDIgMCAwIDAgMiAwbDctNEEyIDIgMCAwIDAgMjEgMTZ6XCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIzLjI3IDYuOTYgMTIgMTIuMDEgMjAuNzMgNi45NlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiMjIuMDhcIixcIngyXCI6XCIxMlwiLFwieTJcIjpcIjEyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpUGFwZXJjbGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjQ0IDExLjA1bC05LjE5IDkuMTlhNiA2IDAgMCAxLTguNDktOC40OWw5LjE5LTkuMTlhNCA0IDAgMCAxIDUuNjYgNS42NmwtOS4yIDkuMTlhMiAyIDAgMCAxLTIuODMtMi44M2w4LjQ5LTguNDhcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlQYXVzZUNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjEwXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTBcIixcInkxXCI6XCIxNVwiLFwieDJcIjpcIjEwXCIsXCJ5MlwiOlwiOVwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE0XCIsXCJ5MVwiOlwiMTVcIixcIngyXCI6XCIxNFwiLFwieTJcIjpcIjlcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlQYXVzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicmVjdFwiLFwiYXR0clwiOntcInhcIjpcIjZcIixcInlcIjpcIjRcIixcIndpZHRoXCI6XCI0XCIsXCJoZWlnaHRcIjpcIjE2XCJ9fSx7XCJ0YWdcIjpcInJlY3RcIixcImF0dHJcIjp7XCJ4XCI6XCIxNFwiLFwieVwiOlwiNFwiLFwid2lkdGhcIjpcIjRcIixcImhlaWdodFwiOlwiMTZcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlQZW5Ub29sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE5bDctNyAzIDMtNyA3LTMtM3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxM2wtMS41LTcuNUwyIDJsMy41IDE0LjVMMTMgMThsNS01elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMmw3LjU4NiA3LjU4NlwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTFcIixcImN5XCI6XCIxMVwiLFwiclwiOlwiMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVBlcmNlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTlcIixcInkxXCI6XCI1XCIsXCJ4MlwiOlwiNVwiLFwieTJcIjpcIjE5XCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2LjVcIixcImN5XCI6XCI2LjVcIixcInJcIjpcIjIuNVwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTcuNVwiLFwiY3lcIjpcIjE3LjVcIixcInJcIjpcIjIuNVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVBob25lQ2FsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS4wNSA1QTUgNSAwIDAgMSAxOSA4Ljk1TTE1LjA1IDFBOSA5IDAgMCAxIDIzIDguOTRtLTEgNy45OHYzYTIgMiAwIDAgMS0yLjE4IDIgMTkuNzkgMTkuNzkgMCAwIDEtOC42My0zLjA3IDE5LjUgMTkuNSAwIDAgMS02LTYgMTkuNzkgMTkuNzkgMCAwIDEtMy4wNy04LjY3QTIgMiAwIDAgMSA0LjExIDJoM2EyIDIgMCAwIDEgMiAxLjcyIDEyLjg0IDEyLjg0IDAgMCAwIC43IDIuODEgMiAyIDAgMCAxLS40NSAyLjExTDguMDkgOS45MWExNiAxNiAwIDAgMCA2IDZsMS4yNy0xLjI3YTIgMiAwIDAgMSAyLjExLS40NSAxMi44NCAxMi44NCAwIDAgMCAyLjgxLjdBMiAyIDAgMCAxIDIyIDE2LjkyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVBob25lRm9yd2FyZGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTkgMSAyMyA1IDE5IDlcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxNVwiLFwieTFcIjpcIjVcIixcIngyXCI6XCIyM1wiLFwieTJcIjpcIjVcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxNi45MnYzYTIgMiAwIDAgMS0yLjE4IDIgMTkuNzkgMTkuNzkgMCAwIDEtOC42My0zLjA3IDE5LjUgMTkuNSAwIDAgMS02LTYgMTkuNzkgMTkuNzkgMCAwIDEtMy4wNy04LjY3QTIgMiAwIDAgMSA0LjExIDJoM2EyIDIgMCAwIDEgMiAxLjcyIDEyLjg0IDEyLjg0IDAgMCAwIC43IDIuODEgMiAyIDAgMCAxLS40NSAyLjExTDguMDkgOS45MWExNiAxNiAwIDAgMCA2IDZsMS4yNy0xLjI3YTIgMiAwIDAgMSAyLjExLS40NSAxMi44NCAxMi44NCAwIDAgMCAyLjgxLjdBMiAyIDAgMCAxIDIyIDE2LjkyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVBob25lSW5jb21pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxNiAyIDE2IDggMjIgOFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjIzXCIsXCJ5MVwiOlwiMVwiLFwieDJcIjpcIjE2XCIsXCJ5MlwiOlwiOFwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDE2LjkydjNhMiAyIDAgMCAxLTIuMTggMiAxOS43OSAxOS43OSAwIDAgMS04LjYzLTMuMDcgMTkuNSAxOS41IDAgMCAxLTYtNiAxOS43OSAxOS43OSAwIDAgMS0zLjA3LTguNjdBMiAyIDAgMCAxIDQuMTEgMmgzYTIgMiAwIDAgMSAyIDEuNzIgMTIuODQgMTIuODQgMCAwIDAgLjcgMi44MSAyIDIgMCAwIDEtLjQ1IDIuMTFMOC4wOSA5LjkxYTE2IDE2IDAgMCAwIDYgNmwxLjI3LTEuMjdhMiAyIDAgMCAxIDIuMTEtLjQ1IDEyLjg0IDEyLjg0IDAgMCAwIDIuODEuN0EyIDIgMCAwIDEgMjIgMTYuOTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpUGhvbmVNaXNzZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMjNcIixcInkxXCI6XCIxXCIsXCJ4MlwiOlwiMTdcIixcInkyXCI6XCI3XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTdcIixcInkxXCI6XCIxXCIsXCJ4MlwiOlwiMjNcIixcInkyXCI6XCI3XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTYuOTJ2M2EyIDIgMCAwIDEtMi4xOCAyIDE5Ljc5IDE5Ljc5IDAgMCAxLTguNjMtMy4wNyAxOS41IDE5LjUgMCAwIDEtNi02IDE5Ljc5IDE5Ljc5IDAgMCAxLTMuMDctOC42N0EyIDIgMCAwIDEgNC4xMSAyaDNhMiAyIDAgMCAxIDIgMS43MiAxMi44NCAxMi44NCAwIDAgMCAuNyAyLjgxIDIgMiAwIDAgMS0uNDUgMi4xMUw4LjA5IDkuOTFhMTYgMTYgMCAwIDAgNiA2bDEuMjctMS4yN2EyIDIgMCAwIDEgMi4xMS0uNDUgMTIuODQgMTIuODQgMCAwIDAgMi44MS43QTIgMiAwIDAgMSAyMiAxNi45MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlQaG9uZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC42OCAxMy4zMWExNiAxNiAwIDAgMCAzLjQxIDIuNmwxLjI3LTEuMjdhMiAyIDAgMCAxIDIuMTEtLjQ1IDEyLjg0IDEyLjg0IDAgMCAwIDIuODEuNyAyIDIgMCAwIDEgMS43MiAydjNhMiAyIDAgMCAxLTIuMTggMiAxOS43OSAxOS43OSAwIDAgMS04LjYzLTMuMDcgMTkuNDIgMTkuNDIgMCAwIDEtMy4zMy0yLjY3bS0yLjY3LTMuMzRhMTkuNzkgMTkuNzkgMCAwIDEtMy4wNy04LjYzQTIgMiAwIDAgMSA0LjExIDJoM2EyIDIgMCAwIDEgMiAxLjcyIDEyLjg0IDEyLjg0IDAgMCAwIC43IDIuODEgMiAyIDAgMCAxLS40NSAyLjExTDguMDkgOS45MVwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjIzXCIsXCJ5MVwiOlwiMVwiLFwieDJcIjpcIjFcIixcInkyXCI6XCIyM1wifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVBob25lT3V0Z29pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIyMyA3IDIzIDEgMTcgMVwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE2XCIsXCJ5MVwiOlwiOFwiLFwieDJcIjpcIjIzXCIsXCJ5MlwiOlwiMVwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDE2LjkydjNhMiAyIDAgMCAxLTIuMTggMiAxOS43OSAxOS43OSAwIDAgMS04LjYzLTMuMDcgMTkuNSAxOS41IDAgMCAxLTYtNiAxOS43OSAxOS43OSAwIDAgMS0zLjA3LTguNjdBMiAyIDAgMCAxIDQuMTEgMmgzYTIgMiAwIDAgMSAyIDEuNzIgMTIuODQgMTIuODQgMCAwIDAgLjcgMi44MSAyIDIgMCAwIDEtLjQ1IDIuMTFMOC4wOSA5LjkxYTE2IDE2IDAgMCAwIDYgNmwxLjI3LTEuMjdhMiAyIDAgMCAxIDIuMTEtLjQ1IDEyLjg0IDEyLjg0IDAgMCAwIDIuODEuN0EyIDIgMCAwIDEgMjIgMTYuOTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpUGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTYuOTJ2M2EyIDIgMCAwIDEtMi4xOCAyIDE5Ljc5IDE5Ljc5IDAgMCAxLTguNjMtMy4wNyAxOS41IDE5LjUgMCAwIDEtNi02IDE5Ljc5IDE5Ljc5IDAgMCAxLTMuMDctOC42N0EyIDIgMCAwIDEgNC4xMSAyaDNhMiAyIDAgMCAxIDIgMS43MiAxMi44NCAxMi44NCAwIDAgMCAuNyAyLjgxIDIgMiAwIDAgMS0uNDUgMi4xMUw4LjA5IDkuOTFhMTYgMTYgMCAwIDAgNiA2bDEuMjctMS4yN2EyIDIgMCAwIDEgMi4xMS0uNDUgMTIuODQgMTIuODQgMCAwIDAgMi44MS43QTIgMiAwIDAgMSAyMiAxNi45MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlQaWVDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS4yMSAxNS44OUExMCAxMCAwIDEgMSA4IDIuODNcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMkExMCAxMCAwIDAgMCAxMiAydjEwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVBsYXlDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxMFwifX0se1widGFnXCI6XCJwb2x5Z29uXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxMCA4IDE2IDEyIDEwIDE2IDEwIDhcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlQbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5Z29uXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCI1IDMgMTkgMTIgNSAyMSA1IDNcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlQbHVzQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMTBcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjhcIixcIngyXCI6XCIxMlwiLFwieTJcIjpcIjE2XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiOFwiLFwieTFcIjpcIjEyXCIsXCJ4MlwiOlwiMTZcIixcInkyXCI6XCIxMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVBsdXNTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInJlY3RcIixcImF0dHJcIjp7XCJ4XCI6XCIzXCIsXCJ5XCI6XCIzXCIsXCJ3aWR0aFwiOlwiMThcIixcImhlaWdodFwiOlwiMThcIixcInJ4XCI6XCIyXCIsXCJyeVwiOlwiMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiOFwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiMTZcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI4XCIsXCJ5MVwiOlwiMTJcIixcIngyXCI6XCIxNlwiLFwieTJcIjpcIjEyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjVcIixcIngyXCI6XCIxMlwiLFwieTJcIjpcIjE5XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiNVwiLFwieTFcIjpcIjEyXCIsXCJ4MlwiOlwiMTlcIixcInkyXCI6XCIxMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVBvY2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDNoMTZhMiAyIDAgMCAxIDIgMnY2YTEwIDEwIDAgMCAxLTEwIDEwQTEwIDEwIDAgMCAxIDIgMTFWNWEyIDIgMCAwIDEgMi0yelwifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiOCAxMCAxMiAxNCAxNiAxMFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVBvd2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjM2IDYuNjRhOSA5IDAgMSAxLTEyLjczIDBcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjJcIixcIngyXCI6XCIxMlwiLFwieTJcIjpcIjEyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpUHJpbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjYgOSA2IDIgMTggMiAxOCA5XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxOEg0YTIgMiAwIDAgMS0yLTJ2LTVhMiAyIDAgMCAxIDItMmgxNmEyIDIgMCAwIDEgMiAydjVhMiAyIDAgMCAxLTIgMmgtMlwifX0se1widGFnXCI6XCJyZWN0XCIsXCJhdHRyXCI6e1wieFwiOlwiNlwiLFwieVwiOlwiMTRcIixcIndpZHRoXCI6XCIxMlwiLFwiaGVpZ2h0XCI6XCI4XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpUmFkaW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIyXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuMjQgNy43NmE2IDYgMCAwIDEgMCA4LjQ5bS04LjQ4LS4wMWE2IDYgMCAwIDEgMC04LjQ5bTExLjMxLTIuODJhMTAgMTAgMCAwIDEgMCAxNC4xNG0tMTQuMTQgMGExMCAxMCAwIDAgMSAwLTE0LjE0XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpUmVmcmVzaENjdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjEgNCAxIDEwIDcgMTBcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjIzIDIwIDIzIDE0IDE3IDE0XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNDkgOUE5IDkgMCAwIDAgNS42NCA1LjY0TDEgMTBtMjIgNGwtNC42NCA0LjM2QTkgOSAwIDAgMSAzLjUxIDE1XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpUmVmcmVzaEN3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMjMgNCAyMyAxMCAxNyAxMFwifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMSAyMCAxIDE0IDcgMTRcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjUxIDlhOSA5IDAgMCAxIDE0Ljg1LTMuMzZMMjMgMTBNMSAxNGw0LjY0IDQuMzZBOSA5IDAgMCAwIDIwLjQ5IDE1XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpUmVwZWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTcgMSAyMSA1IDE3IDlcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDExVjlhNCA0IDAgMCAxIDQtNGgxNFwifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiNyAyMyAzIDE5IDcgMTVcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxM3YyYTQgNCAwIDAgMS00IDRIM1wifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVJld2luZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWdvblwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTEgMTkgMiAxMiAxMSA1IDExIDE5XCJ9fSx7XCJ0YWdcIjpcInBvbHlnb25cIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjIyIDE5IDEzIDEyIDIyIDUgMjIgMTlcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlSb3RhdGVDY3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxIDQgMSAxMCA3IDEwXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy41MSAxNWE5IDkgMCAxIDAgMi4xMy05LjM2TDEgMTBcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlSb3RhdGVDdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjIzIDQgMjMgMTAgMTcgMTBcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC40OSAxNWE5IDkgMCAxIDEtMi4xMi05LjM2TDIzIDEwXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpUnNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTFhOSA5IDAgMCAxIDkgOVwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNGExNiAxNiAwIDAgMSAxNiAxNlwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNVwiLFwiY3lcIjpcIjE5XCIsXCJyXCI6XCIxXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpU2F2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAyMUg1YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDExbDUgNXYxMWEyIDIgMCAwIDEtMiAyelwifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTcgMjEgMTcgMTMgNyAxMyA3IDIxXCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCI3IDMgNyA4IDE1IDhcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlTY2lzc29ycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjZcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIzXCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2XCIsXCJjeVwiOlwiMThcIixcInJcIjpcIjNcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyMFwiLFwieTFcIjpcIjRcIixcIngyXCI6XCI4LjEyXCIsXCJ5MlwiOlwiMTUuODhcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxNC40N1wiLFwieTFcIjpcIjE0LjQ4XCIsXCJ4MlwiOlwiMjBcIixcInkyXCI6XCIyMFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjguMTJcIixcInkxXCI6XCI4LjEyXCIsXCJ4MlwiOlwiMTJcIixcInkyXCI6XCIxMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVNlYXJjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjExXCIsXCJjeVwiOlwiMTFcIixcInJcIjpcIjhcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyMVwiLFwieTFcIjpcIjIxXCIsXCJ4MlwiOlwiMTYuNjVcIixcInkyXCI6XCIxNi42NVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVNlbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMjJcIixcInkxXCI6XCIyXCIsXCJ4MlwiOlwiMTFcIixcInkyXCI6XCIxM1wifX0se1widGFnXCI6XCJwb2x5Z29uXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIyMiAyIDE1IDIyIDExIDEzIDIgOSAyMiAyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpU2VydmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJyZWN0XCIsXCJhdHRyXCI6e1wieFwiOlwiMlwiLFwieVwiOlwiMlwiLFwid2lkdGhcIjpcIjIwXCIsXCJoZWlnaHRcIjpcIjhcIixcInJ4XCI6XCIyXCIsXCJyeVwiOlwiMlwifX0se1widGFnXCI6XCJyZWN0XCIsXCJhdHRyXCI6e1wieFwiOlwiMlwiLFwieVwiOlwiMTRcIixcIndpZHRoXCI6XCIyMFwiLFwiaGVpZ2h0XCI6XCI4XCIsXCJyeFwiOlwiMlwiLFwicnlcIjpcIjJcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI2XCIsXCJ5MVwiOlwiNlwiLFwieDJcIjpcIjYuMDFcIixcInkyXCI6XCI2XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiNlwiLFwieTFcIjpcIjE4XCIsXCJ4MlwiOlwiNi4wMVwiLFwieTJcIjpcIjE4XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpU2V0dGluZ3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIzXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuNCAxNWExLjY1IDEuNjUgMCAwIDAgLjMzIDEuODJsLjA2LjA2YTIgMiAwIDAgMSAwIDIuODMgMiAyIDAgMCAxLTIuODMgMGwtLjA2LS4wNmExLjY1IDEuNjUgMCAwIDAtMS44Mi0uMzMgMS42NSAxLjY1IDAgMCAwLTEgMS41MVYyMWEyIDIgMCAwIDEtMiAyIDIgMiAwIDAgMS0yLTJ2LS4wOUExLjY1IDEuNjUgMCAwIDAgOSAxOS40YTEuNjUgMS42NSAwIDAgMC0xLjgyLjMzbC0uMDYuMDZhMiAyIDAgMCAxLTIuODMgMCAyIDIgMCAwIDEgMC0yLjgzbC4wNi0uMDZhMS42NSAxLjY1IDAgMCAwIC4zMy0xLjgyIDEuNjUgMS42NSAwIDAgMC0xLjUxLTFIM2EyIDIgMCAwIDEtMi0yIDIgMiAwIDAgMSAyLTJoLjA5QTEuNjUgMS42NSAwIDAgMCA0LjYgOWExLjY1IDEuNjUgMCAwIDAtLjMzLTEuODJsLS4wNi0uMDZhMiAyIDAgMCAxIDAtMi44MyAyIDIgMCAwIDEgMi44MyAwbC4wNi4wNmExLjY1IDEuNjUgMCAwIDAgMS44Mi4zM0g5YTEuNjUgMS42NSAwIDAgMCAxLTEuNTFWM2EyIDIgMCAwIDEgMi0yIDIgMiAwIDAgMSAyIDJ2LjA5YTEuNjUgMS42NSAwIDAgMCAxIDEuNTEgMS42NSAxLjY1IDAgMCAwIDEuODItLjMzbC4wNi0uMDZhMiAyIDAgMCAxIDIuODMgMCAyIDIgMCAwIDEgMCAyLjgzbC0uMDYuMDZhMS42NSAxLjY1IDAgMCAwLS4zMyAxLjgyVjlhMS42NSAxLjY1IDAgMCAwIDEuNTEgMUgyMWEyIDIgMCAwIDEgMiAyIDIgMiAwIDAgMS0yIDJoLS4wOWExLjY1IDEuNjUgMCAwIDAtMS41MSAxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVNoYXJlMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE4XCIsXCJjeVwiOlwiNVwiLFwiclwiOlwiM1wifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIzXCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxOFwiLFwiY3lcIjpcIjE5XCIsXCJyXCI6XCIzXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiOC41OVwiLFwieTFcIjpcIjEzLjUxXCIsXCJ4MlwiOlwiMTUuNDJcIixcInkyXCI6XCIxNy40OVwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE1LjQxXCIsXCJ5MVwiOlwiNi41MVwiLFwieDJcIjpcIjguNTlcIixcInkyXCI6XCIxMC40OVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTJ2OGEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJ2LThcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjE2IDYgMTIgMiA4IDZcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjJcIixcIngyXCI6XCIxMlwiLFwieTJcIjpcIjE1XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpU2hpZWxkT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjY5IDE0YTYuOSA2LjkgMCAwIDAgLjMxLTJWNWwtOC0zLTMuMTYgMS4xOFwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNzMgNC43M0w0IDV2N2MwIDYgOCAxMCA4IDEwYTIwLjI5IDIwLjI5IDAgMCAwIDUuNjItNC4zOFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjFcIixcInkxXCI6XCIxXCIsXCJ4MlwiOlwiMjNcIixcInkyXCI6XCIyM1wifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVNoaWVsZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyMnM4LTQgOC0xMFY1bC04LTMtOCAzdjdjMCA2IDggMTAgOCAxMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlTaG9wcGluZ0JhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDJMMyA2djE0YTIgMiAwIDAgMCAyIDJoMTRhMiAyIDAgMCAwIDItMlY2bC0zLTR6XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiM1wiLFwieTFcIjpcIjZcIixcIngyXCI6XCIyMVwiLFwieTJcIjpcIjZcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxMGE0IDQgMCAwIDEtOCAwXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpU2hvcHBpbmdDYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjIxXCIsXCJyXCI6XCIxXCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIyMFwiLFwiY3lcIjpcIjIxXCIsXCJyXCI6XCIxXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAxaDRsMi42OCAxMy4zOWEyIDIgMCAwIDAgMiAxLjYxaDkuNzJhMiAyIDAgMCAwIDItMS42MUwyMyA2SDZcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlTaHVmZmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTYgMyAyMSAzIDIxIDhcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI0XCIsXCJ5MVwiOlwiMjBcIixcIngyXCI6XCIyMVwiLFwieTJcIjpcIjNcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjIxIDE2IDIxIDIxIDE2IDIxXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTVcIixcInkxXCI6XCIxNVwiLFwieDJcIjpcIjIxXCIsXCJ5MlwiOlwiMjFcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI0XCIsXCJ5MVwiOlwiNFwiLFwieDJcIjpcIjlcIixcInkyXCI6XCI5XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpU2lkZWJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicmVjdFwiLFwiYXR0clwiOntcInhcIjpcIjNcIixcInlcIjpcIjNcIixcIndpZHRoXCI6XCIxOFwiLFwiaGVpZ2h0XCI6XCIxOFwiLFwicnhcIjpcIjJcIixcInJ5XCI6XCIyXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiOVwiLFwieTFcIjpcIjNcIixcIngyXCI6XCI5XCIsXCJ5MlwiOlwiMjFcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlTa2lwQmFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWdvblwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTkgMjAgOSAxMiAxOSA0IDE5IDIwXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiNVwiLFwieTFcIjpcIjE5XCIsXCJ4MlwiOlwiNVwiLFwieTJcIjpcIjVcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlTa2lwRm9yd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWdvblwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiNSA0IDE1IDEyIDUgMjAgNSA0XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTlcIixcInkxXCI6XCI1XCIsXCJ4MlwiOlwiMTlcIixcInkyXCI6XCIxOVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVNsYWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgMTBjLS44MyAwLTEuNS0uNjctMS41LTEuNXYtNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNXY1YzAgLjgzLS42NyAxLjUtMS41IDEuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC41IDEwSDE5VjguNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41IDE0Yy44MyAwIDEuNS42NyAxLjUgMS41djVjMCAuODMtLjY3IDEuNS0xLjUgMS41UzggMjEuMzMgOCAyMC41di01YzAtLjgzLjY3LTEuNSAxLjUtMS41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNSAxNEg1djEuNWMwIC44My0uNjcgMS41LTEuNSAxLjVTMiAxNi4zMyAyIDE1LjUgMi42NyAxNCAzLjUgMTR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTQuNWMwLS44My42Ny0xLjUgMS41LTEuNWg1Yy44MyAwIDEuNS42NyAxLjUgMS41cy0uNjcgMS41LTEuNSAxLjVoLTVjLS44MyAwLTEuNS0uNjctMS41LTEuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDE5SDE0djEuNWMwIC44My42NyAxLjUgMS41IDEuNXMxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDkuNUMxMCA4LjY3IDkuMzMgOCA4LjUgOGgtNUMyLjY3IDggMiA4LjY3IDIgOS41UzIuNjcgMTEgMy41IDExaDVjLjgzIDAgMS41LS42NyAxLjUtMS41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNSA1SDEwVjMuNUMxMCAyLjY3IDkuMzMgMiA4LjUgMlM3IDIuNjcgNyAzLjUgNy42NyA1IDguNSA1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMTBcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI0LjkzXCIsXCJ5MVwiOlwiNC45M1wiLFwieDJcIjpcIjE5LjA3XCIsXCJ5MlwiOlwiMTkuMDdcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlTbGlkZXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjRcIixcInkxXCI6XCIyMVwiLFwieDJcIjpcIjRcIixcInkyXCI6XCIxNFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjRcIixcInkxXCI6XCIxMFwiLFwieDJcIjpcIjRcIixcInkyXCI6XCIzXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIyMVwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiMTJcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjhcIixcIngyXCI6XCIxMlwiLFwieTJcIjpcIjNcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyMFwiLFwieTFcIjpcIjIxXCIsXCJ4MlwiOlwiMjBcIixcInkyXCI6XCIxNlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjIwXCIsXCJ5MVwiOlwiMTJcIixcIngyXCI6XCIyMFwiLFwieTJcIjpcIjNcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxXCIsXCJ5MVwiOlwiMTRcIixcIngyXCI6XCI3XCIsXCJ5MlwiOlwiMTRcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI5XCIsXCJ5MVwiOlwiOFwiLFwieDJcIjpcIjE1XCIsXCJ5MlwiOlwiOFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE3XCIsXCJ5MVwiOlwiMTZcIixcIngyXCI6XCIyM1wiLFwieTJcIjpcIjE2XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpU21hcnRwaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicmVjdFwiLFwiYXR0clwiOntcInhcIjpcIjVcIixcInlcIjpcIjJcIixcIndpZHRoXCI6XCIxNFwiLFwiaGVpZ2h0XCI6XCIyMFwiLFwicnhcIjpcIjJcIixcInJ5XCI6XCIyXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIxOFwiLFwieDJcIjpcIjEyLjAxXCIsXCJ5MlwiOlwiMThcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlTbWlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjEwXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxNHMxLjUgMiA0IDIgNC0yIDQtMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjlcIixcInkxXCI6XCI5XCIsXCJ4MlwiOlwiOS4wMVwiLFwieTJcIjpcIjlcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxNVwiLFwieTFcIjpcIjlcIixcIngyXCI6XCIxNS4wMVwiLFwieTJcIjpcIjlcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlTcGVha2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJyZWN0XCIsXCJhdHRyXCI6e1wieFwiOlwiNFwiLFwieVwiOlwiMlwiLFwid2lkdGhcIjpcIjE2XCIsXCJoZWlnaHRcIjpcIjIwXCIsXCJyeFwiOlwiMlwiLFwicnlcIjpcIjJcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTRcIixcInJcIjpcIjRcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjZcIixcIngyXCI6XCIxMi4wMVwiLFwieTJcIjpcIjZcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInJlY3RcIixcImF0dHJcIjp7XCJ4XCI6XCIzXCIsXCJ5XCI6XCIzXCIsXCJ3aWR0aFwiOlwiMThcIixcImhlaWdodFwiOlwiMThcIixcInJ4XCI6XCIyXCIsXCJyeVwiOlwiMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVN0YXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlnb25cIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjEyIDIgMTUuMDkgOC4yNiAyMiA5LjI3IDE3IDE0LjE0IDE4LjE4IDIxLjAyIDEyIDE3Ljc3IDUuODIgMjEuMDIgNyAxNC4xNCAyIDkuMjcgOC45MSA4LjI2IDEyIDJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlTdG9wQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMTBcIn19LHtcInRhZ1wiOlwicmVjdFwiLFwiYXR0clwiOntcInhcIjpcIjlcIixcInlcIjpcIjlcIixcIndpZHRoXCI6XCI2XCIsXCJoZWlnaHRcIjpcIjZcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlTdW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCI1XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIxXCIsXCJ4MlwiOlwiMTJcIixcInkyXCI6XCIzXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIyMVwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiMjNcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI0LjIyXCIsXCJ5MVwiOlwiNC4yMlwiLFwieDJcIjpcIjUuNjRcIixcInkyXCI6XCI1LjY0XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTguMzZcIixcInkxXCI6XCIxOC4zNlwiLFwieDJcIjpcIjE5Ljc4XCIsXCJ5MlwiOlwiMTkuNzhcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxXCIsXCJ5MVwiOlwiMTJcIixcIngyXCI6XCIzXCIsXCJ5MlwiOlwiMTJcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyMVwiLFwieTFcIjpcIjEyXCIsXCJ4MlwiOlwiMjNcIixcInkyXCI6XCIxMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjQuMjJcIixcInkxXCI6XCIxOS43OFwiLFwieDJcIjpcIjUuNjRcIixcInkyXCI6XCIxOC4zNlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE4LjM2XCIsXCJ5MVwiOlwiNS42NFwiLFwieDJcIjpcIjE5Ljc4XCIsXCJ5MlwiOlwiNC4yMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVN1bnJpc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMThhNSA1IDAgMCAwLTEwIDBcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjJcIixcIngyXCI6XCIxMlwiLFwieTJcIjpcIjlcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI0LjIyXCIsXCJ5MVwiOlwiMTAuMjJcIixcIngyXCI6XCI1LjY0XCIsXCJ5MlwiOlwiMTEuNjRcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxXCIsXCJ5MVwiOlwiMThcIixcIngyXCI6XCIzXCIsXCJ5MlwiOlwiMThcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyMVwiLFwieTFcIjpcIjE4XCIsXCJ4MlwiOlwiMjNcIixcInkyXCI6XCIxOFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE4LjM2XCIsXCJ5MVwiOlwiMTEuNjRcIixcIngyXCI6XCIxOS43OFwiLFwieTJcIjpcIjEwLjIyXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMjNcIixcInkxXCI6XCIyMlwiLFwieDJcIjpcIjFcIixcInkyXCI6XCIyMlwifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiOCA2IDEyIDIgMTYgNlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVN1bnNldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxOGE1IDUgMCAwIDAtMTAgMFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiOVwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjQuMjJcIixcInkxXCI6XCIxMC4yMlwiLFwieDJcIjpcIjUuNjRcIixcInkyXCI6XCIxMS42NFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjFcIixcInkxXCI6XCIxOFwiLFwieDJcIjpcIjNcIixcInkyXCI6XCIxOFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjIxXCIsXCJ5MVwiOlwiMThcIixcIngyXCI6XCIyM1wiLFwieTJcIjpcIjE4XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTguMzZcIixcInkxXCI6XCIxMS42NFwiLFwieDJcIjpcIjE5Ljc4XCIsXCJ5MlwiOlwiMTAuMjJcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyM1wiLFwieTFcIjpcIjIyXCIsXCJ4MlwiOlwiMVwiLFwieTJcIjpcIjIyXCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxNiA1IDEyIDkgOCA1XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpVGFibGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJyZWN0XCIsXCJhdHRyXCI6e1wieFwiOlwiNFwiLFwieVwiOlwiMlwiLFwid2lkdGhcIjpcIjE2XCIsXCJoZWlnaHRcIjpcIjIwXCIsXCJyeFwiOlwiMlwiLFwicnlcIjpcIjJcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjE4XCIsXCJ4MlwiOlwiMTIuMDFcIixcInkyXCI6XCIxOFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVRhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC41OSAxMy40MWwtNy4xNyA3LjE3YTIgMiAwIDAgMS0yLjgzIDBMMiAxMlYyaDEwbDguNTkgOC41OWEyIDIgMCAwIDEgMCAyLjgyelwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjdcIixcInkxXCI6XCI3XCIsXCJ4MlwiOlwiNy4wMVwiLFwieTJcIjpcIjdcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlUYXJnZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxMFwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiNlwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVRlcm1pbmFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiNCAxNyAxMCAxMSA0IDVcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjE5XCIsXCJ4MlwiOlwiMjBcIixcInkyXCI6XCIxOVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVRoZXJtb21ldGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDE0Ljc2VjMuNWEyLjUgMi41IDAgMCAwLTUgMHYxMS4yNmE0LjUgNC41IDAgMSAwIDUgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlUaHVtYnNEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDE1djRhMyAzIDAgMCAwIDMgM2w0LTlWMkg1LjcyYTIgMiAwIDAgMC0yIDEuN2wtMS4zOCA5YTIgMiAwIDAgMCAyIDIuM3ptNy0xM2gyLjY3QTIuMzEgMi4zMSAwIDAgMSAyMiA0djdhMi4zMSAyLjMxIDAgMCAxLTIuMzMgMkgxN1wifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVRodW1ic1VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDlWNWEzIDMgMCAwIDAtMy0zbC00IDl2MTFoMTEuMjhhMiAyIDAgMCAwIDItMS43bDEuMzgtOWEyIDIgMCAwIDAtMi0yLjN6TTcgMjJINGEyIDIgMCAwIDEtMi0ydi03YTIgMiAwIDAgMSAyLTJoM1wifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVRvZ2dsZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInJlY3RcIixcImF0dHJcIjp7XCJ4XCI6XCIxXCIsXCJ5XCI6XCI1XCIsXCJ3aWR0aFwiOlwiMjJcIixcImhlaWdodFwiOlwiMTRcIixcInJ4XCI6XCI3XCIsXCJyeVwiOlwiN1wifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOFwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIzXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpVG9nZ2xlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInJlY3RcIixcImF0dHJcIjp7XCJ4XCI6XCIxXCIsXCJ5XCI6XCI1XCIsXCJ3aWR0aFwiOlwiMjJcIixcImhlaWdodFwiOlwiMTRcIixcInJ4XCI6XCI3XCIsXCJyeVwiOlwiN1wifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTZcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiM1wifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVRvb2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNyA2LjNhMSAxIDAgMCAwIDAgMS40bDEuNiAxLjZhMSAxIDAgMCAwIDEuNCAwbDMuNzctMy43N2E2IDYgMCAwIDEtNy45NCA3Ljk0bC02LjkxIDYuOTFhMi4xMiAyLjEyIDAgMCAxLTMtM2w2LjkxLTYuOTFhNiA2IDAgMCAxIDcuOTQtNy45NGwtMy43NiAzLjc2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVRyYXNoMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjMgNiA1IDYgMjEgNlwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDZ2MTRhMiAyIDAgMCAxLTIgMkg3YTIgMiAwIDAgMS0yLTJWNm0zIDBWNGEyIDIgMCAwIDEgMi0yaDRhMiAyIDAgMCAxIDIgMnYyXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTBcIixcInkxXCI6XCIxMVwiLFwieDJcIjpcIjEwXCIsXCJ5MlwiOlwiMTdcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxNFwiLFwieTFcIjpcIjExXCIsXCJ4MlwiOlwiMTRcIixcInkyXCI6XCIxN1wifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVRyYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMyA2IDUgNiAyMSA2XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNnYxNGEyIDIgMCAwIDEtMiAySDdhMiAyIDAgMCAxLTItMlY2bTMgMFY0YTIgMiAwIDAgMSAyLTJoNGEyIDIgMCAwIDEgMiAydjJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlUcmVsbG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInJlY3RcIixcImF0dHJcIjp7XCJ4XCI6XCIzXCIsXCJ5XCI6XCIzXCIsXCJ3aWR0aFwiOlwiMThcIixcImhlaWdodFwiOlwiMThcIixcInJ4XCI6XCIyXCIsXCJyeVwiOlwiMlwifX0se1widGFnXCI6XCJyZWN0XCIsXCJhdHRyXCI6e1wieFwiOlwiN1wiLFwieVwiOlwiN1wiLFwid2lkdGhcIjpcIjNcIixcImhlaWdodFwiOlwiOVwifX0se1widGFnXCI6XCJyZWN0XCIsXCJhdHRyXCI6e1wieFwiOlwiMTRcIixcInlcIjpcIjdcIixcIndpZHRoXCI6XCIzXCIsXCJoZWlnaHRcIjpcIjVcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlUcmVuZGluZ0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIyMyAxOCAxMy41IDguNSA4LjUgMTMuNSAxIDZcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjE3IDE4IDIzIDE4IDIzIDEyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpVHJlbmRpbmdVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjIzIDYgMTMuNSAxNS41IDguNSAxMC41IDEgMThcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjE3IDYgMjMgNiAyMyAxMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVRyaWFuZ2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjI5IDMuODZMMS44MiAxOGEyIDIgMCAwIDAgMS43MSAzaDE2Ljk0YTIgMiAwIDAgMCAxLjcxLTNMMTMuNzEgMy44NmEyIDIgMCAwIDAtMy40MiAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVRydWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJyZWN0XCIsXCJhdHRyXCI6e1wieFwiOlwiMVwiLFwieVwiOlwiM1wiLFwid2lkdGhcIjpcIjE1XCIsXCJoZWlnaHRcIjpcIjEzXCJ9fSx7XCJ0YWdcIjpcInBvbHlnb25cIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjE2IDggMjAgOCAyMyAxMSAyMyAxNiAxNiAxNiAxNiA4XCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI1LjVcIixcImN5XCI6XCIxOC41XCIsXCJyXCI6XCIyLjVcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE4LjVcIixcImN5XCI6XCIxOC41XCIsXCJyXCI6XCIyLjVcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlUdiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicmVjdFwiLFwiYXR0clwiOntcInhcIjpcIjJcIixcInlcIjpcIjdcIixcIndpZHRoXCI6XCIyMFwiLFwiaGVpZ2h0XCI6XCIxNVwiLFwicnhcIjpcIjJcIixcInJ5XCI6XCIyXCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxNyAyIDEyIDcgNyAyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpVHdpdGNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDJIM3YxNmg1djRsNC00aDVsNC00VjJ6bS0xMCA5VjdtNSA0VjdcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlUd2l0dGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzIDNhMTAuOSAxMC45IDAgMCAxLTMuMTQgMS41MyA0LjQ4IDQuNDggMCAwIDAtNy44NiAzdjFBMTAuNjYgMTAuNjYgMCAwIDEgMyA0cy00IDkgNSAxM2ExMS42NCAxMS42NCAwIDAgMS03IDJjOSA1IDIwIDAgMjAtMTEuNWE0LjUgNC41IDAgMCAwLS4wOC0uODNBNy43MiA3LjcyIDAgMCAwIDIzIDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpVHlwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjQgNyA0IDQgMjAgNCAyMCA3XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiOVwiLFwieTFcIjpcIjIwXCIsXCJ4MlwiOlwiMTVcIixcInkyXCI6XCIyMFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiNFwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiMjBcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlVbWJyZWxsYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyAxMmExMS4wNSAxMS4wNSAwIDAgMC0yMiAwem0tNSA3YTMgMyAwIDAgMS02IDB2LTdcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlVbmRlcmxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAzdjdhNiA2IDAgMCAwIDYgNiA2IDYgMCAwIDAgNi02VjNcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI0XCIsXCJ5MVwiOlwiMjFcIixcIngyXCI6XCIyMFwiLFwieTJcIjpcIjIxXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpVW5sb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJyZWN0XCIsXCJhdHRyXCI6e1wieFwiOlwiM1wiLFwieVwiOlwiMTFcIixcIndpZHRoXCI6XCIxOFwiLFwiaGVpZ2h0XCI6XCIxMVwiLFwicnhcIjpcIjJcIixcInJ5XCI6XCIyXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxMVY3YTUgNSAwIDAgMSA5LjktMVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVVwbG9hZENsb3VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTYgMTYgMTIgMTIgOCAxNlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiMTJcIixcIngyXCI6XCIxMlwiLFwieTJcIjpcIjIxXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuMzkgMTguMzlBNSA1IDAgMCAwIDE4IDloLTEuMjZBOCA4IDAgMSAwIDMgMTYuM1wifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTYgMTYgMTIgMTIgOCAxNlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVVwbG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxNXY0YTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0ydi00XCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxNyA4IDEyIDMgNyA4XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIzXCIsXCJ4MlwiOlwiMTJcIixcInkyXCI6XCIxNVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVVzZXJDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAyMXYtMmE0IDQgMCAwIDAtNC00SDVhNCA0IDAgMCAwLTQgNHYyXCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4LjVcIixcImN5XCI6XCI3XCIsXCJyXCI6XCI0XCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxNyAxMSAxOSAxMyAyMyA5XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpVXNlck1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDIxdi0yYTQgNCAwIDAgMC00LTRINWE0IDQgMCAwIDAtNCA0djJcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjdcIixcInJcIjpcIjRcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyM1wiLFwieTFcIjpcIjExXCIsXCJ4MlwiOlwiMTdcIixcInkyXCI6XCIxMVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVVzZXJQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDIxdi0yYTQgNCAwIDAgMC00LTRINWE0IDQgMCAwIDAtNCA0djJcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjdcIixcInJcIjpcIjRcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyMFwiLFwieTFcIjpcIjhcIixcIngyXCI6XCIyMFwiLFwieTJcIjpcIjE0XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMjNcIixcInkxXCI6XCIxMVwiLFwieDJcIjpcIjE3XCIsXCJ5MlwiOlwiMTFcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlVc2VyWCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAyMXYtMmE0IDQgMCAwIDAtNC00SDVhNCA0IDAgMCAwLTQgNHYyXCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4LjVcIixcImN5XCI6XCI3XCIsXCJyXCI6XCI0XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMThcIixcInkxXCI6XCI4XCIsXCJ4MlwiOlwiMjNcIixcInkyXCI6XCIxM1wifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjIzXCIsXCJ5MVwiOlwiOFwiLFwieDJcIjpcIjE4XCIsXCJ5MlwiOlwiMTNcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlVc2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDIxdi0yYTQgNCAwIDAgMC00LTRIOGE0IDQgMCAwIDAtNCA0djJcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiN1wiLFwiclwiOlwiNFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVVzZXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDIxdi0yYTQgNCAwIDAgMC00LTRINWE0IDQgMCAwIDAtNCA0djJcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjlcIixcImN5XCI6XCI3XCIsXCJyXCI6XCI0XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgMjF2LTJhNCA0IDAgMCAwLTMtMy44N1wifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDMuMTNhNCA0IDAgMCAxIDAgNy43NVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVZpZGVvT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDE2djFhMiAyIDAgMCAxLTIgMkgzYTIgMiAwIDAgMS0yLTJWN2EyIDIgMCAwIDEgMi0yaDJtNS42NiAwSDE0YTIgMiAwIDAgMSAyIDJ2My4zNGwxIDFMMjMgN3YxMFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjFcIixcInkxXCI6XCIxXCIsXCJ4MlwiOlwiMjNcIixcInkyXCI6XCIyM1wifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVZpZGVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5Z29uXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIyMyA3IDE2IDEyIDIzIDE3IDIzIDdcIn19LHtcInRhZ1wiOlwicmVjdFwiLFwiYXR0clwiOntcInhcIjpcIjFcIixcInlcIjpcIjVcIixcIndpZHRoXCI6XCIxNVwiLFwiaGVpZ2h0XCI6XCIxNFwiLFwicnhcIjpcIjJcIixcInJ5XCI6XCIyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpVm9pY2VtYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNS41XCIsXCJjeVwiOlwiMTEuNVwiLFwiclwiOlwiNC41XCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxOC41XCIsXCJjeVwiOlwiMTEuNVwiLFwiclwiOlwiNC41XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiNS41XCIsXCJ5MVwiOlwiMTZcIixcIngyXCI6XCIxOC41XCIsXCJ5MlwiOlwiMTZcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlWb2x1bWUxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5Z29uXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxMSA1IDYgOSAyIDkgMiAxNSA2IDE1IDExIDE5IDExIDVcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41NCA4LjQ2YTUgNSAwIDAgMSAwIDcuMDdcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlWb2x1bWUyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5Z29uXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxMSA1IDYgOSAyIDkgMiAxNSA2IDE1IDExIDE5IDExIDVcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4wNyA0LjkzYTEwIDEwIDAgMCAxIDAgMTQuMTRNMTUuNTQgOC40NmE1IDUgMCAwIDEgMCA3LjA3XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpVm9sdW1lWCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWdvblwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTEgNSA2IDkgMiA5IDIgMTUgNiAxNSAxMSAxOSAxMSA1XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMjNcIixcInkxXCI6XCI5XCIsXCJ4MlwiOlwiMTdcIixcInkyXCI6XCIxNVwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE3XCIsXCJ5MVwiOlwiOVwiLFwieDJcIjpcIjIzXCIsXCJ5MlwiOlwiMTVcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlWb2x1bWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlnb25cIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjExIDUgNiA5IDIgOSAyIDE1IDYgMTUgMTEgMTkgMTEgNVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVdhdGNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiN1wifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTIgOSAxMiAxMiAxMy41IDEzLjVcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41MSAxNy4zNWwtLjM1IDMuODNhMiAyIDAgMCAxLTIgMS44Mkg5LjgzYTIgMiAwIDAgMS0yLTEuODJsLS4zNS0zLjgzbS4wMS0xMC43bC4zNS0zLjgzQTIgMiAwIDAgMSA5LjgzIDFoNC4zNWEyIDIgMCAwIDEgMiAxLjgybC4zNSAzLjgzXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpV2lmaU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxXCIsXCJ5MVwiOlwiMVwiLFwieDJcIjpcIjIzXCIsXCJ5MlwiOlwiMjNcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi43MiAxMS4wNkExMC45NCAxMC45NCAwIDAgMSAxOSAxMi41NVwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTIuNTVhMTAuOTQgMTAuOTQgMCAwIDEgNS4xNy0yLjM5XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuNzEgNS4wNUExNiAxNiAwIDAgMSAyMi41OCA5XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMS40MiA5YTE1LjkxIDE1LjkxIDAgMCAxIDQuNy0yLjg4XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41MyAxNi4xMWE2IDYgMCAwIDEgNi45NSAwXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIyMFwiLFwieDJcIjpcIjEyLjAxXCIsXCJ5MlwiOlwiMjBcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlXaWZpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTIuNTVhMTEgMTEgMCAwIDEgMTQuMDggMFwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEuNDIgOWExNiAxNiAwIDAgMSAyMS4xNiAwXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41MyAxNi4xMWE2IDYgMCAwIDEgNi45NSAwXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIyMFwiLFwieDJcIjpcIjEyLjAxXCIsXCJ5MlwiOlwiMjBcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlXaW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNTkgNC41OUEyIDIgMCAxIDEgMTEgOEgybTEwLjU5IDExLjQxQTIgMiAwIDEgMCAxNCAxNkgybTE1LjczLTguMjdBMi41IDIuNSAwIDEgMSAxOS41IDEySDJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlYQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMTBcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxNVwiLFwieTFcIjpcIjlcIixcIngyXCI6XCI5XCIsXCJ5MlwiOlwiMTVcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI5XCIsXCJ5MVwiOlwiOVwiLFwieDJcIjpcIjE1XCIsXCJ5MlwiOlwiMTVcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlYT2N0YWdvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWdvblwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiNy44NiAyIDE2LjE0IDIgMjIgNy44NiAyMiAxNi4xNCAxNi4xNCAyMiA3Ljg2IDIyIDIgMTYuMTQgMiA3Ljg2IDcuODYgMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE1XCIsXCJ5MVwiOlwiOVwiLFwieDJcIjpcIjlcIixcInkyXCI6XCIxNVwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjlcIixcInkxXCI6XCI5XCIsXCJ4MlwiOlwiMTVcIixcInkyXCI6XCIxNVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVhTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInJlY3RcIixcImF0dHJcIjp7XCJ4XCI6XCIzXCIsXCJ5XCI6XCIzXCIsXCJ3aWR0aFwiOlwiMThcIixcImhlaWdodFwiOlwiMThcIixcInJ4XCI6XCIyXCIsXCJyeVwiOlwiMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjlcIixcInkxXCI6XCI5XCIsXCJ4MlwiOlwiMTVcIixcInkyXCI6XCIxNVwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE1XCIsXCJ5MVwiOlwiOVwiLFwieDJcIjpcIjlcIixcInkyXCI6XCIxNVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMThcIixcInkxXCI6XCI2XCIsXCJ4MlwiOlwiNlwiLFwieTJcIjpcIjE4XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiNlwiLFwieTFcIjpcIjZcIixcIngyXCI6XCIxOFwiLFwieTJcIjpcIjE4XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpWW91dHViZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMi41NCA2LjQyYTIuNzggMi43OCAwIDAgMC0xLjk0LTJDMTguODggNCAxMiA0IDEyIDRzLTYuODggMC04LjYuNDZhMi43OCAyLjc4IDAgMCAwLTEuOTQgMkEyOSAyOSAwIDAgMCAxIDExLjc1YTI5IDI5IDAgMCAwIC40NiA1LjMzQTIuNzggMi43OCAwIDAgMCAzLjQgMTljMS43Mi40NiA4LjYuNDYgOC42LjQ2czYuODggMCA4LjYtLjQ2YTIuNzggMi43OCAwIDAgMCAxLjk0LTIgMjkgMjkgMCAwIDAgLjQ2LTUuMjUgMjkgMjkgMCAwIDAtLjQ2LTUuMzN6XCJ9fSx7XCJ0YWdcIjpcInBvbHlnb25cIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjkuNzUgMTUuMDIgMTUuNSAxMS43NSA5Ljc1IDguNDggOS43NSAxNS4wMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVphcE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjEyLjQxIDYuNzUgMTMgMiAxMC41NyA0LjkyXCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxOC41NyAxMi45MSAyMSAxMCAxNS42NiAxMFwifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiOCA4IDMgMTQgMTIgMTQgMTEgMjIgMTYgMTZcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxXCIsXCJ5MVwiOlwiMVwiLFwieDJcIjpcIjIzXCIsXCJ5MlwiOlwiMjNcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlaYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlnb25cIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjEzIDIgMyAxNCAxMiAxNCAxMSAyMiAyMSAxMCAxMiAxMCAxMyAyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpWm9vbUluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTFcIixcImN5XCI6XCIxMVwiLFwiclwiOlwiOFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjIxXCIsXCJ5MVwiOlwiMjFcIixcIngyXCI6XCIxNi42NVwiLFwieTJcIjpcIjE2LjY1XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTFcIixcInkxXCI6XCI4XCIsXCJ4MlwiOlwiMTFcIixcInkyXCI6XCIxNFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjhcIixcInkxXCI6XCIxMVwiLFwieDJcIjpcIjE0XCIsXCJ5MlwiOlwiMTFcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlab29tT3V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTFcIixcImN5XCI6XCIxMVwiLFwiclwiOlwiOFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjIxXCIsXCJ5MVwiOlwiMjFcIixcIngyXCI6XCIxNi42NVwiLFwieTJcIjpcIjE2LjY1XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiOFwiLFwieTFcIjpcIjExXCIsXCJ4MlwiOlwiMTRcIixcInkyXCI6XCIxMVwifX1dfSkocHJvcHMpO1xufTtcbiIsICIvKipcbiAqICBiYXNlNjQudHNcbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEJTRCAzLUNsYXVzZSBMaWNlbnNlLlxuICogICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICpcbiAqICBSZWZlcmVuY2VzOlxuICogICAgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CYXNlNjRcbiAqXG4gKiBAYXV0aG9yIERhbiBLb2dhaSAoaHR0cHM6Ly9naXRodWIuY29tL2RhbmtvZ2FpKVxuICovXG5jb25zdCB2ZXJzaW9uID0gJzMuNy4yJztcbi8qKlxuICogQGRlcHJlY2F0ZWQgdXNlIGxvd2VyY2FzZSBgdmVyc2lvbmAuXG4gKi9cbmNvbnN0IFZFUlNJT04gPSB2ZXJzaW9uO1xuY29uc3QgX2hhc2F0b2IgPSB0eXBlb2YgYXRvYiA9PT0gJ2Z1bmN0aW9uJztcbmNvbnN0IF9oYXNidG9hID0gdHlwZW9mIGJ0b2EgPT09ICdmdW5jdGlvbic7XG5jb25zdCBfaGFzQnVmZmVyID0gdHlwZW9mIEJ1ZmZlciA9PT0gJ2Z1bmN0aW9uJztcbmNvbnN0IF9URCA9IHR5cGVvZiBUZXh0RGVjb2RlciA9PT0gJ2Z1bmN0aW9uJyA/IG5ldyBUZXh0RGVjb2RlcigpIDogdW5kZWZpbmVkO1xuY29uc3QgX1RFID0gdHlwZW9mIFRleHRFbmNvZGVyID09PSAnZnVuY3Rpb24nID8gbmV3IFRleHRFbmNvZGVyKCkgOiB1bmRlZmluZWQ7XG5jb25zdCBiNjRjaCA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSc7XG5jb25zdCBiNjRjaHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChiNjRjaCk7XG5jb25zdCBiNjR0YWIgPSAoKGEpID0+IHtcbiAgICBsZXQgdGFiID0ge307XG4gICAgYS5mb3JFYWNoKChjLCBpKSA9PiB0YWJbY10gPSBpKTtcbiAgICByZXR1cm4gdGFiO1xufSkoYjY0Y2hzKTtcbmNvbnN0IGI2NHJlID0gL14oPzpbQS1aYS16XFxkK1xcL117NH0pKj8oPzpbQS1aYS16XFxkK1xcL117Mn0oPzo9PSk/fFtBLVphLXpcXGQrXFwvXXszfT0/KT8kLztcbmNvbnN0IF9mcm9tQ0MgPSBTdHJpbmcuZnJvbUNoYXJDb2RlLmJpbmQoU3RyaW5nKTtcbmNvbnN0IF9VOEFmcm9tID0gdHlwZW9mIFVpbnQ4QXJyYXkuZnJvbSA9PT0gJ2Z1bmN0aW9uJ1xuICAgID8gVWludDhBcnJheS5mcm9tLmJpbmQoVWludDhBcnJheSlcbiAgICA6IChpdCwgZm4gPSAoeCkgPT4geCkgPT4gbmV3IFVpbnQ4QXJyYXkoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoaXQsIDApLm1hcChmbikpO1xuY29uc3QgX21rVXJpU2FmZSA9IChzcmMpID0+IHNyY1xuICAgIC5yZXBsYWNlKC89L2csICcnKS5yZXBsYWNlKC9bK1xcL10vZywgKG0wKSA9PiBtMCA9PSAnKycgPyAnLScgOiAnXycpO1xuY29uc3QgX3RpZHlCNjQgPSAocykgPT4gcy5yZXBsYWNlKC9bXkEtWmEtejAtOVxcK1xcL10vZywgJycpO1xuLyoqXG4gKiBwb2x5ZmlsbCB2ZXJzaW9uIG9mIGBidG9hYFxuICovXG5jb25zdCBidG9hUG9seWZpbGwgPSAoYmluKSA9PiB7XG4gICAgLy8gY29uc29sZS5sb2coJ3BvbHlmaWxsZWQnKTtcbiAgICBsZXQgdTMyLCBjMCwgYzEsIGMyLCBhc2MgPSAnJztcbiAgICBjb25zdCBwYWQgPSBiaW4ubGVuZ3RoICUgMztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJpbi5sZW5ndGg7KSB7XG4gICAgICAgIGlmICgoYzAgPSBiaW4uY2hhckNvZGVBdChpKyspKSA+IDI1NSB8fFxuICAgICAgICAgICAgKGMxID0gYmluLmNoYXJDb2RlQXQoaSsrKSkgPiAyNTUgfHxcbiAgICAgICAgICAgIChjMiA9IGJpbi5jaGFyQ29kZUF0KGkrKykpID4gMjU1KVxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBjaGFyYWN0ZXIgZm91bmQnKTtcbiAgICAgICAgdTMyID0gKGMwIDw8IDE2KSB8IChjMSA8PCA4KSB8IGMyO1xuICAgICAgICBhc2MgKz0gYjY0Y2hzW3UzMiA+PiAxOCAmIDYzXVxuICAgICAgICAgICAgKyBiNjRjaHNbdTMyID4+IDEyICYgNjNdXG4gICAgICAgICAgICArIGI2NGNoc1t1MzIgPj4gNiAmIDYzXVxuICAgICAgICAgICAgKyBiNjRjaHNbdTMyICYgNjNdO1xuICAgIH1cbiAgICByZXR1cm4gcGFkID8gYXNjLnNsaWNlKDAsIHBhZCAtIDMpICsgXCI9PT1cIi5zdWJzdHJpbmcocGFkKSA6IGFzYztcbn07XG4vKipcbiAqIGRvZXMgd2hhdCBgd2luZG93LmJ0b2FgIG9mIHdlYiBicm93c2VycyBkby5cbiAqIEBwYXJhbSB7U3RyaW5nfSBiaW4gYmluYXJ5IHN0cmluZ1xuICogQHJldHVybnMge3N0cmluZ30gQmFzZTY0LWVuY29kZWQgc3RyaW5nXG4gKi9cbmNvbnN0IF9idG9hID0gX2hhc2J0b2EgPyAoYmluKSA9PiBidG9hKGJpbilcbiAgICA6IF9oYXNCdWZmZXIgPyAoYmluKSA9PiBCdWZmZXIuZnJvbShiaW4sICdiaW5hcnknKS50b1N0cmluZygnYmFzZTY0JylcbiAgICAgICAgOiBidG9hUG9seWZpbGw7XG5jb25zdCBfZnJvbVVpbnQ4QXJyYXkgPSBfaGFzQnVmZmVyXG4gICAgPyAodThhKSA9PiBCdWZmZXIuZnJvbSh1OGEpLnRvU3RyaW5nKCdiYXNlNjQnKVxuICAgIDogKHU4YSkgPT4ge1xuICAgICAgICAvLyBjZi4gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTI3MTAwMDEvaG93LXRvLWNvbnZlcnQtdWludDgtYXJyYXktdG8tYmFzZTY0LWVuY29kZWQtc3RyaW5nLzEyNzEzMzI2IzEyNzEzMzI2XG4gICAgICAgIGNvbnN0IG1heGFyZ3MgPSAweDEwMDA7XG4gICAgICAgIGxldCBzdHJzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gdThhLmxlbmd0aDsgaSA8IGw7IGkgKz0gbWF4YXJncykge1xuICAgICAgICAgICAgc3Rycy5wdXNoKF9mcm9tQ0MuYXBwbHkobnVsbCwgdThhLnN1YmFycmF5KGksIGkgKyBtYXhhcmdzKSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfYnRvYShzdHJzLmpvaW4oJycpKTtcbiAgICB9O1xuLyoqXG4gKiBjb252ZXJ0cyBhIFVpbnQ4QXJyYXkgdG8gYSBCYXNlNjQgc3RyaW5nLlxuICogQHBhcmFtIHtib29sZWFufSBbdXJsc2FmZV0gVVJMLWFuZC1maWxlbmFtZS1zYWZlIGEgbGEgUkZDNDY0OCBcdTAwQTc1XG4gKiBAcmV0dXJucyB7c3RyaW5nfSBCYXNlNjQgc3RyaW5nXG4gKi9cbmNvbnN0IGZyb21VaW50OEFycmF5ID0gKHU4YSwgdXJsc2FmZSA9IGZhbHNlKSA9PiB1cmxzYWZlID8gX21rVXJpU2FmZShfZnJvbVVpbnQ4QXJyYXkodThhKSkgOiBfZnJvbVVpbnQ4QXJyYXkodThhKTtcbi8vIFRoaXMgdHJpY2sgaXMgZm91bmQgYnJva2VuIGh0dHBzOi8vZ2l0aHViLmNvbS9kYW5rb2dhaS9qcy1iYXNlNjQvaXNzdWVzLzEzMFxuLy8gY29uc3QgdXRvYiA9IChzcmM6IHN0cmluZykgPT4gdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHNyYykpO1xuLy8gcmV2ZXJ0aW5nIGdvb2Qgb2xkIGZhdGlvbmVkIHJlZ2V4cFxuY29uc3QgY2JfdXRvYiA9IChjKSA9PiB7XG4gICAgaWYgKGMubGVuZ3RoIDwgMikge1xuICAgICAgICB2YXIgY2MgPSBjLmNoYXJDb2RlQXQoMCk7XG4gICAgICAgIHJldHVybiBjYyA8IDB4ODAgPyBjXG4gICAgICAgICAgICA6IGNjIDwgMHg4MDAgPyAoX2Zyb21DQygweGMwIHwgKGNjID4+PiA2KSlcbiAgICAgICAgICAgICAgICArIF9mcm9tQ0MoMHg4MCB8IChjYyAmIDB4M2YpKSlcbiAgICAgICAgICAgICAgICA6IChfZnJvbUNDKDB4ZTAgfCAoKGNjID4+PiAxMikgJiAweDBmKSlcbiAgICAgICAgICAgICAgICAgICAgKyBfZnJvbUNDKDB4ODAgfCAoKGNjID4+PiA2KSAmIDB4M2YpKVxuICAgICAgICAgICAgICAgICAgICArIF9mcm9tQ0MoMHg4MCB8IChjYyAmIDB4M2YpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB2YXIgY2MgPSAweDEwMDAwXG4gICAgICAgICAgICArIChjLmNoYXJDb2RlQXQoMCkgLSAweEQ4MDApICogMHg0MDBcbiAgICAgICAgICAgICsgKGMuY2hhckNvZGVBdCgxKSAtIDB4REMwMCk7XG4gICAgICAgIHJldHVybiAoX2Zyb21DQygweGYwIHwgKChjYyA+Pj4gMTgpICYgMHgwNykpXG4gICAgICAgICAgICArIF9mcm9tQ0MoMHg4MCB8ICgoY2MgPj4+IDEyKSAmIDB4M2YpKVxuICAgICAgICAgICAgKyBfZnJvbUNDKDB4ODAgfCAoKGNjID4+PiA2KSAmIDB4M2YpKVxuICAgICAgICAgICAgKyBfZnJvbUNDKDB4ODAgfCAoY2MgJiAweDNmKSkpO1xuICAgIH1cbn07XG5jb25zdCByZV91dG9iID0gL1tcXHVEODAwLVxcdURCRkZdW1xcdURDMDAtXFx1REZGRkZdfFteXFx4MDAtXFx4N0ZdL2c7XG4vKipcbiAqIEBkZXByZWNhdGVkIHNob3VsZCBoYXZlIGJlZW4gaW50ZXJuYWwgdXNlIG9ubHkuXG4gKiBAcGFyYW0ge3N0cmluZ30gc3JjIFVURi04IHN0cmluZ1xuICogQHJldHVybnMge3N0cmluZ30gVVRGLTE2IHN0cmluZ1xuICovXG5jb25zdCB1dG9iID0gKHUpID0+IHUucmVwbGFjZShyZV91dG9iLCBjYl91dG9iKTtcbi8vXG5jb25zdCBfZW5jb2RlID0gX2hhc0J1ZmZlclxuICAgID8gKHMpID0+IEJ1ZmZlci5mcm9tKHMsICd1dGY4JykudG9TdHJpbmcoJ2Jhc2U2NCcpXG4gICAgOiBfVEVcbiAgICAgICAgPyAocykgPT4gX2Zyb21VaW50OEFycmF5KF9URS5lbmNvZGUocykpXG4gICAgICAgIDogKHMpID0+IF9idG9hKHV0b2IocykpO1xuLyoqXG4gKiBjb252ZXJ0cyBhIFVURi04LWVuY29kZWQgc3RyaW5nIHRvIGEgQmFzZTY0IHN0cmluZy5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW3VybHNhZmVdIGlmIGB0cnVlYCBtYWtlIHRoZSByZXN1bHQgVVJMLXNhZmVcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEJhc2U2NCBzdHJpbmdcbiAqL1xuY29uc3QgZW5jb2RlID0gKHNyYywgdXJsc2FmZSA9IGZhbHNlKSA9PiB1cmxzYWZlXG4gICAgPyBfbWtVcmlTYWZlKF9lbmNvZGUoc3JjKSlcbiAgICA6IF9lbmNvZGUoc3JjKTtcbi8qKlxuICogY29udmVydHMgYSBVVEYtOC1lbmNvZGVkIHN0cmluZyB0byBVUkwtc2FmZSBCYXNlNjQgUkZDNDY0OCBcdTAwQTc1LlxuICogQHJldHVybnMge3N0cmluZ30gQmFzZTY0IHN0cmluZ1xuICovXG5jb25zdCBlbmNvZGVVUkkgPSAoc3JjKSA9PiBlbmNvZGUoc3JjLCB0cnVlKTtcbi8vIFRoaXMgdHJpY2sgaXMgZm91bmQgYnJva2VuIGh0dHBzOi8vZ2l0aHViLmNvbS9kYW5rb2dhaS9qcy1iYXNlNjQvaXNzdWVzLzEzMFxuLy8gY29uc3QgYnRvdSA9IChzcmM6IHN0cmluZykgPT4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShzcmMpKTtcbi8vIHJldmVydGluZyBnb29kIG9sZCBmYXRpb25lZCByZWdleHBcbmNvbnN0IHJlX2J0b3UgPSAvW1xceEMwLVxceERGXVtcXHg4MC1cXHhCRl18W1xceEUwLVxceEVGXVtcXHg4MC1cXHhCRl17Mn18W1xceEYwLVxceEY3XVtcXHg4MC1cXHhCRl17M30vZztcbmNvbnN0IGNiX2J0b3UgPSAoY2NjYykgPT4ge1xuICAgIHN3aXRjaCAoY2NjYy5sZW5ndGgpIHtcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgdmFyIGNwID0gKCgweDA3ICYgY2NjYy5jaGFyQ29kZUF0KDApKSA8PCAxOClcbiAgICAgICAgICAgICAgICB8ICgoMHgzZiAmIGNjY2MuY2hhckNvZGVBdCgxKSkgPDwgMTIpXG4gICAgICAgICAgICAgICAgfCAoKDB4M2YgJiBjY2NjLmNoYXJDb2RlQXQoMikpIDw8IDYpXG4gICAgICAgICAgICAgICAgfCAoMHgzZiAmIGNjY2MuY2hhckNvZGVBdCgzKSksIG9mZnNldCA9IGNwIC0gMHgxMDAwMDtcbiAgICAgICAgICAgIHJldHVybiAoX2Zyb21DQygob2Zmc2V0ID4+PiAxMCkgKyAweEQ4MDApXG4gICAgICAgICAgICAgICAgKyBfZnJvbUNDKChvZmZzZXQgJiAweDNGRikgKyAweERDMDApKTtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgcmV0dXJuIF9mcm9tQ0MoKCgweDBmICYgY2NjYy5jaGFyQ29kZUF0KDApKSA8PCAxMilcbiAgICAgICAgICAgICAgICB8ICgoMHgzZiAmIGNjY2MuY2hhckNvZGVBdCgxKSkgPDwgNilcbiAgICAgICAgICAgICAgICB8ICgweDNmICYgY2NjYy5jaGFyQ29kZUF0KDIpKSk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gX2Zyb21DQygoKDB4MWYgJiBjY2NjLmNoYXJDb2RlQXQoMCkpIDw8IDYpXG4gICAgICAgICAgICAgICAgfCAoMHgzZiAmIGNjY2MuY2hhckNvZGVBdCgxKSkpO1xuICAgIH1cbn07XG4vKipcbiAqIEBkZXByZWNhdGVkIHNob3VsZCBoYXZlIGJlZW4gaW50ZXJuYWwgdXNlIG9ubHkuXG4gKiBAcGFyYW0ge3N0cmluZ30gc3JjIFVURi0xNiBzdHJpbmdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFVURi04IHN0cmluZ1xuICovXG5jb25zdCBidG91ID0gKGIpID0+IGIucmVwbGFjZShyZV9idG91LCBjYl9idG91KTtcbi8qKlxuICogcG9seWZpbGwgdmVyc2lvbiBvZiBgYXRvYmBcbiAqL1xuY29uc3QgYXRvYlBvbHlmaWxsID0gKGFzYykgPT4ge1xuICAgIC8vIGNvbnNvbGUubG9nKCdwb2x5ZmlsbGVkJyk7XG4gICAgYXNjID0gYXNjLnJlcGxhY2UoL1xccysvZywgJycpO1xuICAgIGlmICghYjY0cmUudGVzdChhc2MpKVxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdtYWxmb3JtZWQgYmFzZTY0LicpO1xuICAgIGFzYyArPSAnPT0nLnNsaWNlKDIgLSAoYXNjLmxlbmd0aCAmIDMpKTtcbiAgICBsZXQgdTI0LCBiaW4gPSAnJywgcjEsIHIyO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXNjLmxlbmd0aDspIHtcbiAgICAgICAgdTI0ID0gYjY0dGFiW2FzYy5jaGFyQXQoaSsrKV0gPDwgMThcbiAgICAgICAgICAgIHwgYjY0dGFiW2FzYy5jaGFyQXQoaSsrKV0gPDwgMTJcbiAgICAgICAgICAgIHwgKHIxID0gYjY0dGFiW2FzYy5jaGFyQXQoaSsrKV0pIDw8IDZcbiAgICAgICAgICAgIHwgKHIyID0gYjY0dGFiW2FzYy5jaGFyQXQoaSsrKV0pO1xuICAgICAgICBiaW4gKz0gcjEgPT09IDY0ID8gX2Zyb21DQyh1MjQgPj4gMTYgJiAyNTUpXG4gICAgICAgICAgICA6IHIyID09PSA2NCA/IF9mcm9tQ0ModTI0ID4+IDE2ICYgMjU1LCB1MjQgPj4gOCAmIDI1NSlcbiAgICAgICAgICAgICAgICA6IF9mcm9tQ0ModTI0ID4+IDE2ICYgMjU1LCB1MjQgPj4gOCAmIDI1NSwgdTI0ICYgMjU1KTtcbiAgICB9XG4gICAgcmV0dXJuIGJpbjtcbn07XG4vKipcbiAqIGRvZXMgd2hhdCBgd2luZG93LmF0b2JgIG9mIHdlYiBicm93c2VycyBkby5cbiAqIEBwYXJhbSB7U3RyaW5nfSBhc2MgQmFzZTY0LWVuY29kZWQgc3RyaW5nXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBiaW5hcnkgc3RyaW5nXG4gKi9cbmNvbnN0IF9hdG9iID0gX2hhc2F0b2IgPyAoYXNjKSA9PiBhdG9iKF90aWR5QjY0KGFzYykpXG4gICAgOiBfaGFzQnVmZmVyID8gKGFzYykgPT4gQnVmZmVyLmZyb20oYXNjLCAnYmFzZTY0JykudG9TdHJpbmcoJ2JpbmFyeScpXG4gICAgICAgIDogYXRvYlBvbHlmaWxsO1xuLy9cbmNvbnN0IF90b1VpbnQ4QXJyYXkgPSBfaGFzQnVmZmVyXG4gICAgPyAoYSkgPT4gX1U4QWZyb20oQnVmZmVyLmZyb20oYSwgJ2Jhc2U2NCcpKVxuICAgIDogKGEpID0+IF9VOEFmcm9tKF9hdG9iKGEpLCBjID0+IGMuY2hhckNvZGVBdCgwKSk7XG4vKipcbiAqIGNvbnZlcnRzIGEgQmFzZTY0IHN0cmluZyB0byBhIFVpbnQ4QXJyYXkuXG4gKi9cbmNvbnN0IHRvVWludDhBcnJheSA9IChhKSA9PiBfdG9VaW50OEFycmF5KF91blVSSShhKSk7XG4vL1xuY29uc3QgX2RlY29kZSA9IF9oYXNCdWZmZXJcbiAgICA/IChhKSA9PiBCdWZmZXIuZnJvbShhLCAnYmFzZTY0JykudG9TdHJpbmcoJ3V0ZjgnKVxuICAgIDogX1REXG4gICAgICAgID8gKGEpID0+IF9URC5kZWNvZGUoX3RvVWludDhBcnJheShhKSlcbiAgICAgICAgOiAoYSkgPT4gYnRvdShfYXRvYihhKSk7XG5jb25zdCBfdW5VUkkgPSAoYSkgPT4gX3RpZHlCNjQoYS5yZXBsYWNlKC9bLV9dL2csIChtMCkgPT4gbTAgPT0gJy0nID8gJysnIDogJy8nKSk7XG4vKipcbiAqIGNvbnZlcnRzIGEgQmFzZTY0IHN0cmluZyB0byBhIFVURi04IHN0cmluZy5cbiAqIEBwYXJhbSB7U3RyaW5nfSBzcmMgQmFzZTY0IHN0cmluZy4gIEJvdGggbm9ybWFsIGFuZCBVUkwtc2FmZSBhcmUgc3VwcG9ydGVkXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBVVEYtOCBzdHJpbmdcbiAqL1xuY29uc3QgZGVjb2RlID0gKHNyYykgPT4gX2RlY29kZShfdW5VUkkoc3JjKSk7XG4vKipcbiAqIGNoZWNrIGlmIGEgdmFsdWUgaXMgYSB2YWxpZCBCYXNlNjQgc3RyaW5nXG4gKiBAcGFyYW0ge1N0cmluZ30gc3JjIGEgdmFsdWUgdG8gY2hlY2tcbiAgKi9cbmNvbnN0IGlzVmFsaWQgPSAoc3JjKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBzcmMgIT09ICdzdHJpbmcnKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgcyA9IHNyYy5yZXBsYWNlKC9cXHMrL2csICcnKS5yZXBsYWNlKC89ezAsMn0kLywgJycpO1xuICAgIHJldHVybiAhL1teXFxzMC05YS16QS1aXFwrL10vLnRlc3QocykgfHwgIS9bXlxcczAtOWEtekEtWlxcLV9dLy50ZXN0KHMpO1xufTtcbi8vXG5jb25zdCBfbm9FbnVtID0gKHYpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZTogdiwgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWVcbiAgICB9O1xufTtcbi8qKlxuICogZXh0ZW5kIFN0cmluZy5wcm90b3R5cGUgd2l0aCByZWxldmFudCBtZXRob2RzXG4gKi9cbmNvbnN0IGV4dGVuZFN0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBfYWRkID0gKG5hbWUsIGJvZHkpID0+IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTdHJpbmcucHJvdG90eXBlLCBuYW1lLCBfbm9FbnVtKGJvZHkpKTtcbiAgICBfYWRkKCdmcm9tQmFzZTY0JywgZnVuY3Rpb24gKCkgeyByZXR1cm4gZGVjb2RlKHRoaXMpOyB9KTtcbiAgICBfYWRkKCd0b0Jhc2U2NCcsIGZ1bmN0aW9uICh1cmxzYWZlKSB7IHJldHVybiBlbmNvZGUodGhpcywgdXJsc2FmZSk7IH0pO1xuICAgIF9hZGQoJ3RvQmFzZTY0VVJJJywgZnVuY3Rpb24gKCkgeyByZXR1cm4gZW5jb2RlKHRoaXMsIHRydWUpOyB9KTtcbiAgICBfYWRkKCd0b0Jhc2U2NFVSTCcsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIGVuY29kZSh0aGlzLCB0cnVlKTsgfSk7XG4gICAgX2FkZCgndG9VaW50OEFycmF5JywgZnVuY3Rpb24gKCkgeyByZXR1cm4gdG9VaW50OEFycmF5KHRoaXMpOyB9KTtcbn07XG4vKipcbiAqIGV4dGVuZCBVaW50OEFycmF5LnByb3RvdHlwZSB3aXRoIHJlbGV2YW50IG1ldGhvZHNcbiAqL1xuY29uc3QgZXh0ZW5kVWludDhBcnJheSA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBfYWRkID0gKG5hbWUsIGJvZHkpID0+IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShVaW50OEFycmF5LnByb3RvdHlwZSwgbmFtZSwgX25vRW51bShib2R5KSk7XG4gICAgX2FkZCgndG9CYXNlNjQnLCBmdW5jdGlvbiAodXJsc2FmZSkgeyByZXR1cm4gZnJvbVVpbnQ4QXJyYXkodGhpcywgdXJsc2FmZSk7IH0pO1xuICAgIF9hZGQoJ3RvQmFzZTY0VVJJJywgZnVuY3Rpb24gKCkgeyByZXR1cm4gZnJvbVVpbnQ4QXJyYXkodGhpcywgdHJ1ZSk7IH0pO1xuICAgIF9hZGQoJ3RvQmFzZTY0VVJMJywgZnVuY3Rpb24gKCkgeyByZXR1cm4gZnJvbVVpbnQ4QXJyYXkodGhpcywgdHJ1ZSk7IH0pO1xufTtcbi8qKlxuICogZXh0ZW5kIEJ1aWx0aW4gcHJvdG90eXBlcyB3aXRoIHJlbGV2YW50IG1ldGhvZHNcbiAqL1xuY29uc3QgZXh0ZW5kQnVpbHRpbnMgPSAoKSA9PiB7XG4gICAgZXh0ZW5kU3RyaW5nKCk7XG4gICAgZXh0ZW5kVWludDhBcnJheSgpO1xufTtcbmNvbnN0IGdCYXNlNjQgPSB7XG4gICAgdmVyc2lvbjogdmVyc2lvbixcbiAgICBWRVJTSU9OOiBWRVJTSU9OLFxuICAgIGF0b2I6IF9hdG9iLFxuICAgIGF0b2JQb2x5ZmlsbDogYXRvYlBvbHlmaWxsLFxuICAgIGJ0b2E6IF9idG9hLFxuICAgIGJ0b2FQb2x5ZmlsbDogYnRvYVBvbHlmaWxsLFxuICAgIGZyb21CYXNlNjQ6IGRlY29kZSxcbiAgICB0b0Jhc2U2NDogZW5jb2RlLFxuICAgIGVuY29kZTogZW5jb2RlLFxuICAgIGVuY29kZVVSSTogZW5jb2RlVVJJLFxuICAgIGVuY29kZVVSTDogZW5jb2RlVVJJLFxuICAgIHV0b2I6IHV0b2IsXG4gICAgYnRvdTogYnRvdSxcbiAgICBkZWNvZGU6IGRlY29kZSxcbiAgICBpc1ZhbGlkOiBpc1ZhbGlkLFxuICAgIGZyb21VaW50OEFycmF5OiBmcm9tVWludDhBcnJheSxcbiAgICB0b1VpbnQ4QXJyYXk6IHRvVWludDhBcnJheSxcbiAgICBleHRlbmRTdHJpbmc6IGV4dGVuZFN0cmluZyxcbiAgICBleHRlbmRVaW50OEFycmF5OiBleHRlbmRVaW50OEFycmF5LFxuICAgIGV4dGVuZEJ1aWx0aW5zOiBleHRlbmRCdWlsdGlucyxcbn07XG4vLyBtYWtlY2pzOkNVVCAvL1xuZXhwb3J0IHsgdmVyc2lvbiB9O1xuZXhwb3J0IHsgVkVSU0lPTiB9O1xuZXhwb3J0IHsgX2F0b2IgYXMgYXRvYiB9O1xuZXhwb3J0IHsgYXRvYlBvbHlmaWxsIH07XG5leHBvcnQgeyBfYnRvYSBhcyBidG9hIH07XG5leHBvcnQgeyBidG9hUG9seWZpbGwgfTtcbmV4cG9ydCB7IGRlY29kZSBhcyBmcm9tQmFzZTY0IH07XG5leHBvcnQgeyBlbmNvZGUgYXMgdG9CYXNlNjQgfTtcbmV4cG9ydCB7IHV0b2IgfTtcbmV4cG9ydCB7IGVuY29kZSB9O1xuZXhwb3J0IHsgZW5jb2RlVVJJIH07XG5leHBvcnQgeyBlbmNvZGVVUkkgYXMgZW5jb2RlVVJMIH07XG5leHBvcnQgeyBidG91IH07XG5leHBvcnQgeyBkZWNvZGUgfTtcbmV4cG9ydCB7IGlzVmFsaWQgfTtcbmV4cG9ydCB7IGZyb21VaW50OEFycmF5IH07XG5leHBvcnQgeyB0b1VpbnQ4QXJyYXkgfTtcbmV4cG9ydCB7IGV4dGVuZFN0cmluZyB9O1xuZXhwb3J0IHsgZXh0ZW5kVWludDhBcnJheSB9O1xuZXhwb3J0IHsgZXh0ZW5kQnVpbHRpbnMgfTtcbi8vIGFuZCBmaW5hbGx5LFxuZXhwb3J0IHsgZ0Jhc2U2NCBhcyBCYXNlNjQgfTtcbiIsICJpbXBvcnQgeyBkZWNvZGUgfSBmcm9tIFwianMtYmFzZTY0XCI7XG5pbXBvcnQgeyByZXF1ZXN0VXJsIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmV4cG9ydCBjb25zdCBnZXRJY29uUGFja0J1bmRsZVVybCA9IChcbiAgcGF0aDogc3RyaW5nLFxuICBicmFuY2ggPSBcIm1hc3RlclwiLFxuICBhbHQgPSBmYWxzZSxcbikgPT5cbiAgYGh0dHBzOi8vJHtcbiAgICBhbHQgPyBcInJhdy5zdGF0aWNkbi5uZXRcIiA6IFwicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbVwiXG4gIH0vYWlkZW5seC9vYnNpZGlhbi1pY29uLXNob3J0Y29kZXMvJHticmFuY2h9LyR7cGF0aH1gO1xuXG5leHBvcnQgaW50ZXJmYWNlIEljb25QYWNrTWFuaWZlc3RSYXcge1xuICBwYXRoOiBzdHJpbmc7XG4gIGNvdW50OiBudW1iZXI7XG4gIHNlcmllczogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBsaWNlbnNlOiBzdHJpbmc7XG4gIGJ1bmRsZU5hbWU6IHN0cmluZztcbiAgcGFja0lkOiBzdHJpbmc7XG4gIGhvbWVwYWdlOiBzdHJpbmc7XG4gIHN0eWxlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBHaXRIdWJFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IocHVibGljIHJlc3BvbnNlOiB7IG1lc3NhZ2U6IHN0cmluZyB9KSB7XG4gICAgc3VwZXIoXCJHaXRIdWI6IFwiICsgcmVzcG9uc2UubWVzc2FnZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGdldE1hbmlmZXN0VmlhQVBJID0gYXN5bmMgKGJyYW5jaCA9IFwibWFzdGVyXCIpID0+IHtcbiAgY29uc3QgdXJsID0gYGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvYWlkZW5seC9vYnNpZGlhbi1pY29uLXNob3J0Y29kZXMvZ2l0L3RyZWVzLyR7YnJhbmNofT9yZWN1cnNpdmU9MSYke0RhdGUubm93KCl9YDtcbiAgY29uc3QgcmVzcG9uc2UgPSAoYXdhaXQgcmVxdWVzdFVybCh7IHVybCB9KSkuanNvbjtcbiAgaWYgKEFycmF5LmlzQXJyYXkocmVzcG9uc2UudHJlZSkpIHtcbiAgICBjb25zdCBtYW5pZmVzdFVybCA9IHJlc3BvbnNlLnRyZWUuZmluZChcbiAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0ucGF0aCA9PT0gXCJhc3NldHMvbWFuaWZlc3QuanNvblwiLFxuICAgICk/LnVybDtcbiAgICBpZiAoIW1hbmlmZXN0VXJsKSB7XG4gICAgICBjb25zb2xlLmVycm9yKHJlc3BvbnNlKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIG1hbmlmZXN0Lmpzb24gZm9yIGljb24gcGFjayBmb3VuZFwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGF3YWl0IGdldEpTT05mcm9tQmxvYlVybChtYW5pZmVzdFVybCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBHaXRIdWJFcnJvcihyZXNwb25zZSk7XG4gIH1cbn07XG5cbmNvbnN0IGdldEpTT05mcm9tQmxvYlVybCA9IGFzeW5jIChcbiAgbWFuaWZlc3RVcmw6IHN0cmluZyxcbik6IFByb21pc2U8SWNvblBhY2tNYW5pZmVzdFJhd1tdPiA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gKGF3YWl0IHJlcXVlc3RVcmwoeyB1cmw6IG1hbmlmZXN0VXJsIH0pKS5qc29uO1xuICBpZiAocmVzcG9uc2UuZW5jb2RpbmcgJiYgcmVzcG9uc2UuY29udGVudCkge1xuICAgIGlmIChyZXNwb25zZS5lbmNvZGluZyA9PT0gXCJiYXNlNjRcIikge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoZGVjb2RlKHJlc3BvbnNlLmNvbnRlbnQpKSBhcyBJY29uUGFja01hbmlmZXN0UmF3W107XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IocmVzcG9uc2UpO1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlVuc3VwcG9ydGVkIGVuY29kaW5nXCIpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgR2l0SHViRXJyb3IocmVzcG9uc2UpO1xuICB9XG59O1xuIiwgImV4cG9ydCB7IGRlZmF1bHQgYXMgYmxhbmsgfSBmcm9tICcuL2JsYW5rLnN2Zyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGJhbGxzIH0gZnJvbSAnLi9sb2FkaW5nLWJhbGxzLnN2Zyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGJhcnMgfSBmcm9tICcuL2xvYWRpbmctYmFycy5zdmcnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBidWJibGVzIH0gZnJvbSAnLi9sb2FkaW5nLWJ1YmJsZXMuc3ZnJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY3ViZXMgfSBmcm9tICcuL2xvYWRpbmctY3ViZXMuc3ZnJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY3lsb24gfSBmcm9tICcuL2xvYWRpbmctY3lsb24uc3ZnJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3BpbiB9IGZyb20gJy4vbG9hZGluZy1zcGluLnN2Zyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNwaW5uaW5nQnViYmxlcyB9IGZyb20gJy4vbG9hZGluZy1zcGlubmluZy1idWJibGVzLnN2Zyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNwb2tlcyB9IGZyb20gJy4vbG9hZGluZy1zcG9rZXMuc3ZnJztcbiIsICJpbXBvcnQgdHlwZSB7IEhUTUxQcm9wcyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCAqIGFzIHN2Z1NvdXJjZXMgZnJvbSBcInJlYWN0LWxvYWRpbmcvbGliL3N2Z1wiO1xuXG50eXBlIExvYWRpbmdUeXBlID1cbiAgfCBcImJsYW5rXCJcbiAgfCBcImJhbGxzXCJcbiAgfCBcImJhcnNcIlxuICB8IFwiYnViYmxlc1wiXG4gIHwgXCJjdWJlc1wiXG4gIHwgXCJjeWxvblwiXG4gIHwgXCJzcGluXCJcbiAgfCBcInNwaW5uaW5nQnViYmxlc1wiXG4gIHwgXCJzcG9rZXNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBMb2FkaW5nUHJvcHMgZXh0ZW5kcyBIVE1MUHJvcHM8SFRNTERpdkVsZW1lbnQ+IHtcbiAgY29sb3I/OiBzdHJpbmc7XG4gIC8qKiBpbiBtaWxpc2Vjb25kICovXG4gIGRlbGF5PzogbnVtYmVyO1xuICB0eXBlPzogTG9hZGluZ1R5cGU7XG4gIGhlaWdodD86IHN0cmluZyB8IG51bWJlcjtcbiAgd2lkdGg/OiBzdHJpbmcgfCBudW1iZXI7XG59XG5cbmNvbnN0IExvYWRpbmcgPSAoe1xuICBjb2xvciA9IFwidmFyKC0taW50ZXJhY3RpdmUtYWNjZW50KVwiLFxuICBkZWxheSA9IDAsXG4gIHR5cGUgPSBcImJhbGxzXCIsXG4gIGhlaWdodCA9IDY0LFxuICB3aWR0aCA9IDY0LFxuICAuLi5yZXN0UHJvcHNcbn06IExvYWRpbmdQcm9wcykgPT4ge1xuICBjb25zdCBbZGVsYXllZCwgc2V0RGVsYXllZF0gPSB1c2VTdGF0ZShkZWxheSA+IDApO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxldCB0aW1lb3V0ID0gLTE7XG4gICAgaWYgKGRlbGF5ZWQpIHtcbiAgICAgIHRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiBzZXREZWxheWVkKGZhbHNlKSwgZGVsYXkpO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4gY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICB9LCBbXSk7XG4gIGNvbnN0IHNlbGVjdGVkVHlwZSA9IGRlbGF5ZWQgPyBcImJsYW5rXCIgOiB0eXBlO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHN0eWxlPXt7XG4gICAgICAgIGZpbGw6IGNvbG9yLFxuICAgICAgICBoZWlnaHQsXG4gICAgICAgIHdpZHRoLFxuICAgICAgfX1cbiAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7IF9faHRtbDogc3ZnU291cmNlc1tzZWxlY3RlZFR5cGVdIH19XG4gICAgICB7Li4ucmVzdFByb3BzfVxuICAgIC8+XG4gICk7XG59O1xuZXhwb3J0IGRlZmF1bHQgTG9hZGluZztcbiIsICJjb25zdCBlcnJvcnMgPSB7XG5cdDA6IFwiSWxsZWdhbCBzdGF0ZVwiLFxuXHQxOiBcIkltbWVyIGRyYWZ0cyBjYW5ub3QgaGF2ZSBjb21wdXRlZCBwcm9wZXJ0aWVzXCIsXG5cdDI6IFwiVGhpcyBvYmplY3QgaGFzIGJlZW4gZnJvemVuIGFuZCBzaG91bGQgbm90IGJlIG11dGF0ZWRcIixcblx0MyhkYXRhOiBhbnkpIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0XCJDYW5ub3QgdXNlIGEgcHJveHkgdGhhdCBoYXMgYmVlbiByZXZva2VkLiBEaWQgeW91IHBhc3MgYW4gb2JqZWN0IGZyb20gaW5zaWRlIGFuIGltbWVyIGZ1bmN0aW9uIHRvIGFuIGFzeW5jIHByb2Nlc3M/IFwiICtcblx0XHRcdGRhdGFcblx0XHQpXG5cdH0sXG5cdDQ6IFwiQW4gaW1tZXIgcHJvZHVjZXIgcmV0dXJuZWQgYSBuZXcgdmFsdWUgKmFuZCogbW9kaWZpZWQgaXRzIGRyYWZ0LiBFaXRoZXIgcmV0dXJuIGEgbmV3IHZhbHVlICpvciogbW9kaWZ5IHRoZSBkcmFmdC5cIixcblx0NTogXCJJbW1lciBmb3JiaWRzIGNpcmN1bGFyIHJlZmVyZW5jZXNcIixcblx0NjogXCJUaGUgZmlyc3Qgb3Igc2Vjb25kIGFyZ3VtZW50IHRvIGBwcm9kdWNlYCBtdXN0IGJlIGEgZnVuY3Rpb25cIixcblx0NzogXCJUaGUgdGhpcmQgYXJndW1lbnQgdG8gYHByb2R1Y2VgIG11c3QgYmUgYSBmdW5jdGlvbiBvciB1bmRlZmluZWRcIixcblx0ODogXCJGaXJzdCBhcmd1bWVudCB0byBgY3JlYXRlRHJhZnRgIG11c3QgYmUgYSBwbGFpbiBvYmplY3QsIGFuIGFycmF5LCBvciBhbiBpbW1lcmFibGUgb2JqZWN0XCIsXG5cdDk6IFwiRmlyc3QgYXJndW1lbnQgdG8gYGZpbmlzaERyYWZ0YCBtdXN0IGJlIGEgZHJhZnQgcmV0dXJuZWQgYnkgYGNyZWF0ZURyYWZ0YFwiLFxuXHQxMDogXCJUaGUgZ2l2ZW4gZHJhZnQgaXMgYWxyZWFkeSBmaW5hbGl6ZWRcIixcblx0MTE6IFwiT2JqZWN0LmRlZmluZVByb3BlcnR5KCkgY2Fubm90IGJlIHVzZWQgb24gYW4gSW1tZXIgZHJhZnRcIixcblx0MTI6IFwiT2JqZWN0LnNldFByb3RvdHlwZU9mKCkgY2Fubm90IGJlIHVzZWQgb24gYW4gSW1tZXIgZHJhZnRcIixcblx0MTM6IFwiSW1tZXIgb25seSBzdXBwb3J0cyBkZWxldGluZyBhcnJheSBpbmRpY2VzXCIsXG5cdDE0OiBcIkltbWVyIG9ubHkgc3VwcG9ydHMgc2V0dGluZyBhcnJheSBpbmRpY2VzIGFuZCB0aGUgJ2xlbmd0aCcgcHJvcGVydHlcIixcblx0MTUocGF0aDogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIFwiQ2Fubm90IGFwcGx5IHBhdGNoLCBwYXRoIGRvZXNuJ3QgcmVzb2x2ZTogXCIgKyBwYXRoXG5cdH0sXG5cdDE2OiAnU2V0cyBjYW5ub3QgaGF2ZSBcInJlcGxhY2VcIiBwYXRjaGVzLicsXG5cdDE3KG9wOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gXCJVbnN1cHBvcnRlZCBwYXRjaCBvcGVyYXRpb246IFwiICsgb3Bcblx0fSxcblx0MTgocGx1Z2luOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gYFRoZSBwbHVnaW4gZm9yICcke3BsdWdpbn0nIGhhcyBub3QgYmVlbiBsb2FkZWQgaW50byBJbW1lci4gVG8gZW5hYmxlIHRoZSBwbHVnaW4sIGltcG9ydCBhbmQgY2FsbCBcXGBlbmFibGUke3BsdWdpbn0oKVxcYCB3aGVuIGluaXRpYWxpemluZyB5b3VyIGFwcGxpY2F0aW9uLmBcblx0fSxcblx0MjA6IFwiQ2Fubm90IHVzZSBwcm94aWVzIGlmIFByb3h5LCBQcm94eS5yZXZvY2FibGUgb3IgUmVmbGVjdCBhcmUgbm90IGF2YWlsYWJsZVwiLFxuXHQyMSh0aGluZzogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIGBwcm9kdWNlIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiB0aGluZ3MgdGhhdCBhcmUgZHJhZnRhYmxlOiBwbGFpbiBvYmplY3RzLCBhcnJheXMsIE1hcCwgU2V0IG9yIGNsYXNzZXMgdGhhdCBhcmUgbWFya2VkIHdpdGggJ1tpbW1lcmFibGVdOiB0cnVlJy4gR290ICcke3RoaW5nfSdgXG5cdH0sXG5cdDIyKHRoaW5nOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gYCdjdXJyZW50JyBleHBlY3RzIGEgZHJhZnQsIGdvdDogJHt0aGluZ31gXG5cdH0sXG5cdDIzKHRoaW5nOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gYCdvcmlnaW5hbCcgZXhwZWN0cyBhIGRyYWZ0LCBnb3Q6ICR7dGhpbmd9YFxuXHR9LFxuXHQyNDogXCJQYXRjaGluZyByZXNlcnZlZCBhdHRyaWJ1dGVzIGxpa2UgX19wcm90b19fLCBwcm90b3R5cGUgYW5kIGNvbnN0cnVjdG9yIGlzIG5vdCBhbGxvd2VkXCJcbn0gYXMgY29uc3RcblxuZXhwb3J0IGZ1bmN0aW9uIGRpZShlcnJvcjoga2V5b2YgdHlwZW9mIGVycm9ycywgLi4uYXJnczogYW55W10pOiBuZXZlciB7XG5cdGlmIChfX0RFVl9fKSB7XG5cdFx0Y29uc3QgZSA9IGVycm9yc1tlcnJvcl1cblx0XHRjb25zdCBtc2cgPSAhZVxuXHRcdFx0PyBcInVua25vd24gZXJyb3IgbnI6IFwiICsgZXJyb3Jcblx0XHRcdDogdHlwZW9mIGUgPT09IFwiZnVuY3Rpb25cIlxuXHRcdFx0PyBlLmFwcGx5KG51bGwsIGFyZ3MgYXMgYW55KVxuXHRcdFx0OiBlXG5cdFx0dGhyb3cgbmV3IEVycm9yKGBbSW1tZXJdICR7bXNnfWApXG5cdH1cblx0dGhyb3cgbmV3IEVycm9yKFxuXHRcdGBbSW1tZXJdIG1pbmlmaWVkIGVycm9yIG5yOiAke2Vycm9yfSR7XG5cdFx0XHRhcmdzLmxlbmd0aCA/IFwiIFwiICsgYXJncy5tYXAocyA9PiBgJyR7c30nYCkuam9pbihcIixcIikgOiBcIlwiXG5cdFx0fS4gRmluZCB0aGUgZnVsbCBlcnJvciBhdDogaHR0cHM6Ly9iaXQubHkvM2NYRUtXZmBcblx0KVxufVxuIiwgImltcG9ydCB7XG5cdERSQUZUX1NUQVRFLFxuXHREUkFGVEFCTEUsXG5cdGhhc1NldCxcblx0T2JqZWN0aXNoLFxuXHREcmFmdGVkLFxuXHRBbnlPYmplY3QsXG5cdEFueU1hcCxcblx0QW55U2V0LFxuXHRJbW1lclN0YXRlLFxuXHRoYXNNYXAsXG5cdEFyY2h0eXBlLFxuXHRkaWVcbn0gZnJvbSBcIi4uL2ludGVybmFsXCJcblxuLyoqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgYW4gSW1tZXIgZHJhZnQgKi9cbi8qI19fUFVSRV9fKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0RyYWZ0KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcblx0cmV0dXJuICEhdmFsdWUgJiYgISF2YWx1ZVtEUkFGVF9TVEFURV1cbn1cblxuLyoqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gdmFsdWUgY2FuIGJlIGRyYWZ0ZWQgYnkgSW1tZXIgKi9cbi8qI19fUFVSRV9fKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0RyYWZ0YWJsZSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG5cdGlmICghdmFsdWUpIHJldHVybiBmYWxzZVxuXHRyZXR1cm4gKFxuXHRcdGlzUGxhaW5PYmplY3QodmFsdWUpIHx8XG5cdFx0QXJyYXkuaXNBcnJheSh2YWx1ZSkgfHxcblx0XHQhIXZhbHVlW0RSQUZUQUJMRV0gfHxcblx0XHQhIXZhbHVlLmNvbnN0cnVjdG9yW0RSQUZUQUJMRV0gfHxcblx0XHRpc01hcCh2YWx1ZSkgfHxcblx0XHRpc1NldCh2YWx1ZSlcblx0KVxufVxuXG5jb25zdCBvYmplY3RDdG9yU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvci50b1N0cmluZygpXG4vKiNfX1BVUkVfXyovXG5leHBvcnQgZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG5cdGlmICghdmFsdWUgfHwgdHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiKSByZXR1cm4gZmFsc2Vcblx0Y29uc3QgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpXG5cdGlmIChwcm90byA9PT0gbnVsbCkge1xuXHRcdHJldHVybiB0cnVlXG5cdH1cblx0Y29uc3QgQ3RvciA9XG5cdFx0T2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwocHJvdG8sIFwiY29uc3RydWN0b3JcIikgJiYgcHJvdG8uY29uc3RydWN0b3JcblxuXHRpZiAoQ3RvciA9PT0gT2JqZWN0KSByZXR1cm4gdHJ1ZVxuXG5cdHJldHVybiAoXG5cdFx0dHlwZW9mIEN0b3IgPT0gXCJmdW5jdGlvblwiICYmXG5cdFx0RnVuY3Rpb24udG9TdHJpbmcuY2FsbChDdG9yKSA9PT0gb2JqZWN0Q3RvclN0cmluZ1xuXHQpXG59XG5cbi8qKiBHZXQgdGhlIHVuZGVybHlpbmcgb2JqZWN0IHRoYXQgaXMgcmVwcmVzZW50ZWQgYnkgdGhlIGdpdmVuIGRyYWZ0ICovXG4vKiNfX1BVUkVfXyovXG5leHBvcnQgZnVuY3Rpb24gb3JpZ2luYWw8VD4odmFsdWU6IFQpOiBUIHwgdW5kZWZpbmVkXG5leHBvcnQgZnVuY3Rpb24gb3JpZ2luYWwodmFsdWU6IERyYWZ0ZWQ8YW55Pik6IGFueSB7XG5cdGlmICghaXNEcmFmdCh2YWx1ZSkpIGRpZSgyMywgdmFsdWUpXG5cdHJldHVybiB2YWx1ZVtEUkFGVF9TVEFURV0uYmFzZV9cbn1cblxuLyojX19QVVJFX18qL1xuZXhwb3J0IGNvbnN0IG93bktleXM6ICh0YXJnZXQ6IEFueU9iamVjdCkgPT4gUHJvcGVydHlLZXlbXSA9XG5cdHR5cGVvZiBSZWZsZWN0ICE9PSBcInVuZGVmaW5lZFwiICYmIFJlZmxlY3Qub3duS2V5c1xuXHRcdD8gUmVmbGVjdC5vd25LZXlzXG5cdFx0OiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyAhPT0gXCJ1bmRlZmluZWRcIlxuXHRcdD8gb2JqID0+XG5cdFx0XHRcdE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikuY29uY2F0KFxuXHRcdFx0XHRcdE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqKSBhcyBhbnlcblx0XHRcdFx0KVxuXHRcdDogLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXNcblxuZXhwb3J0IGNvbnN0IGdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPVxuXHRPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyB8fFxuXHRmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHRhcmdldDogYW55KSB7XG5cdFx0Ly8gUG9seWZpbGwgbmVlZGVkIGZvciBIZXJtZXMgYW5kIElFLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2hlcm1lcy9pc3N1ZXMvMjc0XG5cdFx0Y29uc3QgcmVzOiBhbnkgPSB7fVxuXHRcdG93bktleXModGFyZ2V0KS5mb3JFYWNoKGtleSA9PiB7XG5cdFx0XHRyZXNba2V5XSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpXG5cdFx0fSlcblx0XHRyZXR1cm4gcmVzXG5cdH1cblxuZXhwb3J0IGZ1bmN0aW9uIGVhY2g8VCBleHRlbmRzIE9iamVjdGlzaD4oXG5cdG9iajogVCxcblx0aXRlcjogKGtleTogc3RyaW5nIHwgbnVtYmVyLCB2YWx1ZTogYW55LCBzb3VyY2U6IFQpID0+IHZvaWQsXG5cdGVudW1lcmFibGVPbmx5PzogYm9vbGVhblxuKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIGVhY2gob2JqOiBhbnksIGl0ZXI6IGFueSwgZW51bWVyYWJsZU9ubHkgPSBmYWxzZSkge1xuXHRpZiAoZ2V0QXJjaHR5cGUob2JqKSA9PT0gQXJjaHR5cGUuT2JqZWN0KSB7XG5cdFx0OyhlbnVtZXJhYmxlT25seSA/IE9iamVjdC5rZXlzIDogb3duS2V5cykob2JqKS5mb3JFYWNoKGtleSA9PiB7XG5cdFx0XHRpZiAoIWVudW1lcmFibGVPbmx5IHx8IHR5cGVvZiBrZXkgIT09IFwic3ltYm9sXCIpIGl0ZXIoa2V5LCBvYmpba2V5XSwgb2JqKVxuXHRcdH0pXG5cdH0gZWxzZSB7XG5cdFx0b2JqLmZvckVhY2goKGVudHJ5OiBhbnksIGluZGV4OiBhbnkpID0+IGl0ZXIoaW5kZXgsIGVudHJ5LCBvYmopKVxuXHR9XG59XG5cbi8qI19fUFVSRV9fKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBcmNodHlwZSh0aGluZzogYW55KTogQXJjaHR5cGUge1xuXHQvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuXHRjb25zdCBzdGF0ZTogdW5kZWZpbmVkIHwgSW1tZXJTdGF0ZSA9IHRoaW5nW0RSQUZUX1NUQVRFXVxuXHRyZXR1cm4gc3RhdGVcblx0XHQ/IHN0YXRlLnR5cGVfID4gM1xuXHRcdFx0PyBzdGF0ZS50eXBlXyAtIDQgLy8gY2F1c2UgT2JqZWN0IGFuZCBBcnJheSBtYXAgYmFjayBmcm9tIDQgYW5kIDVcblx0XHRcdDogKHN0YXRlLnR5cGVfIGFzIGFueSkgLy8gb3RoZXJzIGFyZSB0aGUgc2FtZVxuXHRcdDogQXJyYXkuaXNBcnJheSh0aGluZylcblx0XHQ/IEFyY2h0eXBlLkFycmF5XG5cdFx0OiBpc01hcCh0aGluZylcblx0XHQ/IEFyY2h0eXBlLk1hcFxuXHRcdDogaXNTZXQodGhpbmcpXG5cdFx0PyBBcmNodHlwZS5TZXRcblx0XHQ6IEFyY2h0eXBlLk9iamVjdFxufVxuXG4vKiNfX1BVUkVfXyovXG5leHBvcnQgZnVuY3Rpb24gaGFzKHRoaW5nOiBhbnksIHByb3A6IFByb3BlcnR5S2V5KTogYm9vbGVhbiB7XG5cdHJldHVybiBnZXRBcmNodHlwZSh0aGluZykgPT09IEFyY2h0eXBlLk1hcFxuXHRcdD8gdGhpbmcuaGFzKHByb3ApXG5cdFx0OiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpbmcsIHByb3ApXG59XG5cbi8qI19fUFVSRV9fKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXQodGhpbmc6IEFueU1hcCB8IEFueU9iamVjdCwgcHJvcDogUHJvcGVydHlLZXkpOiBhbnkge1xuXHQvLyBAdHMtaWdub3JlXG5cdHJldHVybiBnZXRBcmNodHlwZSh0aGluZykgPT09IEFyY2h0eXBlLk1hcCA/IHRoaW5nLmdldChwcm9wKSA6IHRoaW5nW3Byb3BdXG59XG5cbi8qI19fUFVSRV9fKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXQodGhpbmc6IGFueSwgcHJvcE9yT2xkVmFsdWU6IFByb3BlcnR5S2V5LCB2YWx1ZTogYW55KSB7XG5cdGNvbnN0IHQgPSBnZXRBcmNodHlwZSh0aGluZylcblx0aWYgKHQgPT09IEFyY2h0eXBlLk1hcCkgdGhpbmcuc2V0KHByb3BPck9sZFZhbHVlLCB2YWx1ZSlcblx0ZWxzZSBpZiAodCA9PT0gQXJjaHR5cGUuU2V0KSB7XG5cdFx0dGhpbmcuZGVsZXRlKHByb3BPck9sZFZhbHVlKVxuXHRcdHRoaW5nLmFkZCh2YWx1ZSlcblx0fSBlbHNlIHRoaW5nW3Byb3BPck9sZFZhbHVlXSA9IHZhbHVlXG59XG5cbi8qI19fUFVSRV9fKi9cbmV4cG9ydCBmdW5jdGlvbiBpcyh4OiBhbnksIHk6IGFueSk6IGJvb2xlYW4ge1xuXHQvLyBGcm9tOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmJqcy9ibG9iL2M2OTkwNGE1MTFiOTAwMjY2OTM1MTY4MjIzMDYzZGQ4NzcyZGZjNDAvcGFja2FnZXMvZmJqcy9zcmMvY29yZS9zaGFsbG93RXF1YWwuanNcblx0aWYgKHggPT09IHkpIHtcblx0XHRyZXR1cm4geCAhPT0gMCB8fCAxIC8geCA9PT0gMSAvIHlcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4geCAhPT0geCAmJiB5ICE9PSB5XG5cdH1cbn1cblxuLyojX19QVVJFX18qL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTWFwKHRhcmdldDogYW55KTogdGFyZ2V0IGlzIEFueU1hcCB7XG5cdHJldHVybiBoYXNNYXAgJiYgdGFyZ2V0IGluc3RhbmNlb2YgTWFwXG59XG5cbi8qI19fUFVSRV9fKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NldCh0YXJnZXQ6IGFueSk6IHRhcmdldCBpcyBBbnlTZXQge1xuXHRyZXR1cm4gaGFzU2V0ICYmIHRhcmdldCBpbnN0YW5jZW9mIFNldFxufVxuLyojX19QVVJFX18qL1xuZXhwb3J0IGZ1bmN0aW9uIGxhdGVzdChzdGF0ZTogSW1tZXJTdGF0ZSk6IGFueSB7XG5cdHJldHVybiBzdGF0ZS5jb3B5XyB8fCBzdGF0ZS5iYXNlX1xufVxuXG4vKiNfX1BVUkVfXyovXG5leHBvcnQgZnVuY3Rpb24gc2hhbGxvd0NvcHkoYmFzZTogYW55KSB7XG5cdGlmIChBcnJheS5pc0FycmF5KGJhc2UpKSByZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYmFzZSlcblx0Y29uc3QgZGVzY3JpcHRvcnMgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKGJhc2UpXG5cdGRlbGV0ZSBkZXNjcmlwdG9yc1tEUkFGVF9TVEFURSBhcyBhbnldXG5cdGxldCBrZXlzID0gb3duS2V5cyhkZXNjcmlwdG9ycylcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG5cdFx0Y29uc3Qga2V5OiBhbnkgPSBrZXlzW2ldXG5cdFx0Y29uc3QgZGVzYyA9IGRlc2NyaXB0b3JzW2tleV1cblx0XHRpZiAoZGVzYy53cml0YWJsZSA9PT0gZmFsc2UpIHtcblx0XHRcdGRlc2Mud3JpdGFibGUgPSB0cnVlXG5cdFx0XHRkZXNjLmNvbmZpZ3VyYWJsZSA9IHRydWVcblx0XHR9XG5cdFx0Ly8gbGlrZSBvYmplY3QuYXNzaWduLCB3ZSB3aWxsIHJlYWQgYW55IF9vd25fLCBnZXQvc2V0IGFjY2Vzc29ycy4gVGhpcyBoZWxwcyBpbiBkZWFsaW5nXG5cdFx0Ly8gd2l0aCBsaWJyYXJpZXMgdGhhdCB0cmFwIHZhbHVlcywgbGlrZSBtb2J4IG9yIHZ1ZVxuXHRcdC8vIHVubGlrZSBvYmplY3QuYXNzaWduLCBub24tZW51bWVyYWJsZXMgd2lsbCBiZSBjb3BpZWQgYXMgd2VsbFxuXHRcdGlmIChkZXNjLmdldCB8fCBkZXNjLnNldClcblx0XHRcdGRlc2NyaXB0b3JzW2tleV0gPSB7XG5cdFx0XHRcdGNvbmZpZ3VyYWJsZTogdHJ1ZSxcblx0XHRcdFx0d3JpdGFibGU6IHRydWUsIC8vIGNvdWxkIGxpdmUgd2l0aCAhIWRlc2Muc2V0IGFzIHdlbGwgaGVyZS4uLlxuXHRcdFx0XHRlbnVtZXJhYmxlOiBkZXNjLmVudW1lcmFibGUsXG5cdFx0XHRcdHZhbHVlOiBiYXNlW2tleV1cblx0XHRcdH1cblx0fVxuXHRyZXR1cm4gT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YoYmFzZSksIGRlc2NyaXB0b3JzKVxufVxuXG4vKipcbiAqIEZyZWV6ZXMgZHJhZnRhYmxlIG9iamVjdHMuIFJldHVybnMgdGhlIG9yaWdpbmFsIG9iamVjdC5cbiAqIEJ5IGRlZmF1bHQgZnJlZXplcyBzaGFsbG93bHksIGJ1dCBpZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIGB0cnVlYCBpdCB3aWxsIGZyZWV6ZSByZWN1cnNpdmVseS5cbiAqXG4gKiBAcGFyYW0gb2JqXG4gKiBAcGFyYW0gZGVlcFxuICovXG5leHBvcnQgZnVuY3Rpb24gZnJlZXplPFQ+KG9iajogVCwgZGVlcD86IGJvb2xlYW4pOiBUXG5leHBvcnQgZnVuY3Rpb24gZnJlZXplPFQ+KG9iajogYW55LCBkZWVwOiBib29sZWFuID0gZmFsc2UpOiBUIHtcblx0aWYgKGlzRnJvemVuKG9iaikgfHwgaXNEcmFmdChvYmopIHx8ICFpc0RyYWZ0YWJsZShvYmopKSByZXR1cm4gb2JqXG5cdGlmIChnZXRBcmNodHlwZShvYmopID4gMSAvKiBNYXAgb3IgU2V0ICovKSB7XG5cdFx0b2JqLnNldCA9IG9iai5hZGQgPSBvYmouY2xlYXIgPSBvYmouZGVsZXRlID0gZG9udE11dGF0ZUZyb3plbkNvbGxlY3Rpb25zIGFzIGFueVxuXHR9XG5cdE9iamVjdC5mcmVlemUob2JqKVxuXHRpZiAoZGVlcCkgZWFjaChvYmosIChrZXksIHZhbHVlKSA9PiBmcmVlemUodmFsdWUsIHRydWUpLCB0cnVlKVxuXHRyZXR1cm4gb2JqXG59XG5cbmZ1bmN0aW9uIGRvbnRNdXRhdGVGcm96ZW5Db2xsZWN0aW9ucygpIHtcblx0ZGllKDIpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Zyb3plbihvYmo6IGFueSk6IGJvb2xlYW4ge1xuXHRpZiAob2JqID09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gXCJvYmplY3RcIikgcmV0dXJuIHRydWVcblx0Ly8gU2VlICM2MDAsIElFIGRpZXMgb24gbm9uLW9iamVjdHMgaW4gT2JqZWN0LmlzRnJvemVuXG5cdHJldHVybiBPYmplY3QuaXNGcm96ZW4ob2JqKVxufVxuIiwgImltcG9ydCB7XG5cdEltbWVyU3RhdGUsXG5cdFBhdGNoLFxuXHRJbW1lclNjb3BlLFxuXHREcmFmdGVkLFxuXHRBbnlPYmplY3QsXG5cdEltbWVyQmFzZVN0YXRlLFxuXHRBbnlNYXAsXG5cdEFueVNldCxcblx0UHJveHlUeXBlLFxuXHRkaWVcbn0gZnJvbSBcIi4uL2ludGVybmFsXCJcblxuLyoqIFBsdWdpbiB1dGlsaXRpZXMgKi9cbmNvbnN0IHBsdWdpbnM6IHtcblx0UGF0Y2hlcz86IHtcblx0XHRnZW5lcmF0ZVBhdGNoZXNfKFxuXHRcdFx0c3RhdGU6IEltbWVyU3RhdGUsXG5cdFx0XHRiYXNlUGF0aDogUGF0Y2hQYXRoLFxuXHRcdFx0cGF0Y2hlczogUGF0Y2hbXSxcblx0XHRcdGludmVyc2VQYXRjaGVzOiBQYXRjaFtdXG5cdFx0KTogdm9pZFxuXHRcdGdlbmVyYXRlUmVwbGFjZW1lbnRQYXRjaGVzXyhcblx0XHRcdGJhc2U6IGFueSxcblx0XHRcdHJlcGxhY2VtZW50OiBhbnksXG5cdFx0XHRwYXRjaGVzOiBQYXRjaFtdLFxuXHRcdFx0aW52ZXJzZVBhdGNoZXM6IFBhdGNoW11cblx0XHQpOiB2b2lkXG5cdFx0YXBwbHlQYXRjaGVzXzxUPihkcmFmdDogVCwgcGF0Y2hlczogUGF0Y2hbXSk6IFRcblx0fVxuXHRFUzU/OiB7XG5cdFx0d2lsbEZpbmFsaXplRVM1XyhzY29wZTogSW1tZXJTY29wZSwgcmVzdWx0OiBhbnksIGlzUmVwbGFjZWQ6IGJvb2xlYW4pOiB2b2lkXG5cdFx0Y3JlYXRlRVM1UHJveHlfPFQ+KFxuXHRcdFx0YmFzZTogVCxcblx0XHRcdHBhcmVudD86IEltbWVyU3RhdGVcblx0XHQpOiBEcmFmdGVkPFQsIEVTNU9iamVjdFN0YXRlIHwgRVM1QXJyYXlTdGF0ZT5cblx0XHRoYXNDaGFuZ2VzXyhzdGF0ZTogRVM1QXJyYXlTdGF0ZSB8IEVTNU9iamVjdFN0YXRlKTogYm9vbGVhblxuXHR9XG5cdE1hcFNldD86IHtcblx0XHRwcm94eU1hcF88VCBleHRlbmRzIEFueU1hcD4odGFyZ2V0OiBULCBwYXJlbnQ/OiBJbW1lclN0YXRlKTogVFxuXHRcdHByb3h5U2V0XzxUIGV4dGVuZHMgQW55U2V0Pih0YXJnZXQ6IFQsIHBhcmVudD86IEltbWVyU3RhdGUpOiBUXG5cdH1cbn0gPSB7fVxuXG50eXBlIFBsdWdpbnMgPSB0eXBlb2YgcGx1Z2luc1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGx1Z2luPEsgZXh0ZW5kcyBrZXlvZiBQbHVnaW5zPihcblx0cGx1Z2luS2V5OiBLXG4pOiBFeGNsdWRlPFBsdWdpbnNbS10sIHVuZGVmaW5lZD4ge1xuXHRjb25zdCBwbHVnaW4gPSBwbHVnaW5zW3BsdWdpbktleV1cblx0aWYgKCFwbHVnaW4pIHtcblx0XHRkaWUoMTgsIHBsdWdpbktleSlcblx0fVxuXHQvLyBAdHMtaWdub3JlXG5cdHJldHVybiBwbHVnaW5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRQbHVnaW48SyBleHRlbmRzIGtleW9mIFBsdWdpbnM+KFxuXHRwbHVnaW5LZXk6IEssXG5cdGltcGxlbWVudGF0aW9uOiBQbHVnaW5zW0tdXG4pOiB2b2lkIHtcblx0aWYgKCFwbHVnaW5zW3BsdWdpbktleV0pIHBsdWdpbnNbcGx1Z2luS2V5XSA9IGltcGxlbWVudGF0aW9uXG59XG5cbi8qKiBFUzUgUGx1Z2luICovXG5cbmludGVyZmFjZSBFUzVCYXNlU3RhdGUgZXh0ZW5kcyBJbW1lckJhc2VTdGF0ZSB7XG5cdGFzc2lnbmVkXzoge1trZXk6IHN0cmluZ106IGFueX1cblx0cGFyZW50Xz86IEltbWVyU3RhdGVcblx0cmV2b2tlZF86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBFUzVPYmplY3RTdGF0ZSBleHRlbmRzIEVTNUJhc2VTdGF0ZSB7XG5cdHR5cGVfOiBQcm94eVR5cGUuRVM1T2JqZWN0XG5cdGRyYWZ0XzogRHJhZnRlZDxBbnlPYmplY3QsIEVTNU9iamVjdFN0YXRlPlxuXHRiYXNlXzogQW55T2JqZWN0XG5cdGNvcHlfOiBBbnlPYmplY3QgfCBudWxsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRVM1QXJyYXlTdGF0ZSBleHRlbmRzIEVTNUJhc2VTdGF0ZSB7XG5cdHR5cGVfOiBQcm94eVR5cGUuRVM1QXJyYXlcblx0ZHJhZnRfOiBEcmFmdGVkPEFueU9iamVjdCwgRVM1QXJyYXlTdGF0ZT5cblx0YmFzZV86IGFueVxuXHRjb3B5XzogYW55XG59XG5cbi8qKiBNYXAgLyBTZXQgcGx1Z2luICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwU3RhdGUgZXh0ZW5kcyBJbW1lckJhc2VTdGF0ZSB7XG5cdHR5cGVfOiBQcm94eVR5cGUuTWFwXG5cdGNvcHlfOiBBbnlNYXAgfCB1bmRlZmluZWRcblx0YXNzaWduZWRfOiBNYXA8YW55LCBib29sZWFuPiB8IHVuZGVmaW5lZFxuXHRiYXNlXzogQW55TWFwXG5cdHJldm9rZWRfOiBib29sZWFuXG5cdGRyYWZ0XzogRHJhZnRlZDxBbnlNYXAsIE1hcFN0YXRlPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNldFN0YXRlIGV4dGVuZHMgSW1tZXJCYXNlU3RhdGUge1xuXHR0eXBlXzogUHJveHlUeXBlLlNldFxuXHRjb3B5XzogQW55U2V0IHwgdW5kZWZpbmVkXG5cdGJhc2VfOiBBbnlTZXRcblx0ZHJhZnRzXzogTWFwPGFueSwgRHJhZnRlZD4gLy8gbWFwcyB0aGUgb3JpZ2luYWwgdmFsdWUgdG8gdGhlIGRyYWZ0IHZhbHVlIGluIHRoZSBuZXcgc2V0XG5cdHJldm9rZWRfOiBib29sZWFuXG5cdGRyYWZ0XzogRHJhZnRlZDxBbnlTZXQsIFNldFN0YXRlPlxufVxuXG4vKiogUGF0Y2hlcyBwbHVnaW4gKi9cblxuZXhwb3J0IHR5cGUgUGF0Y2hQYXRoID0gKHN0cmluZyB8IG51bWJlcilbXVxuIiwgImltcG9ydCB7XG5cdFBhdGNoLFxuXHRQYXRjaExpc3RlbmVyLFxuXHREcmFmdGVkLFxuXHRJbW1lcixcblx0RFJBRlRfU1RBVEUsXG5cdEltbWVyU3RhdGUsXG5cdFByb3h5VHlwZSxcblx0Z2V0UGx1Z2luXG59IGZyb20gXCIuLi9pbnRlcm5hbFwiXG5pbXBvcnQge2RpZX0gZnJvbSBcIi4uL3V0aWxzL2Vycm9yc1wiXG5cbi8qKiBFYWNoIHNjb3BlIHJlcHJlc2VudHMgYSBgcHJvZHVjZWAgY2FsbC4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBJbW1lclNjb3BlIHtcblx0cGF0Y2hlc18/OiBQYXRjaFtdXG5cdGludmVyc2VQYXRjaGVzXz86IFBhdGNoW11cblx0Y2FuQXV0b0ZyZWV6ZV86IGJvb2xlYW5cblx0ZHJhZnRzXzogYW55W11cblx0cGFyZW50Xz86IEltbWVyU2NvcGVcblx0cGF0Y2hMaXN0ZW5lcl8/OiBQYXRjaExpc3RlbmVyXG5cdGltbWVyXzogSW1tZXJcblx0dW5maW5hbGl6ZWREcmFmdHNfOiBudW1iZXJcbn1cblxubGV0IGN1cnJlbnRTY29wZTogSW1tZXJTY29wZSB8IHVuZGVmaW5lZFxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q3VycmVudFNjb3BlKCkge1xuXHRpZiAoX19ERVZfXyAmJiAhY3VycmVudFNjb3BlKSBkaWUoMClcblx0cmV0dXJuIGN1cnJlbnRTY29wZSFcbn1cblxuZnVuY3Rpb24gY3JlYXRlU2NvcGUoXG5cdHBhcmVudF86IEltbWVyU2NvcGUgfCB1bmRlZmluZWQsXG5cdGltbWVyXzogSW1tZXJcbik6IEltbWVyU2NvcGUge1xuXHRyZXR1cm4ge1xuXHRcdGRyYWZ0c186IFtdLFxuXHRcdHBhcmVudF8sXG5cdFx0aW1tZXJfLFxuXHRcdC8vIFdoZW5ldmVyIHRoZSBtb2RpZmllZCBkcmFmdCBjb250YWlucyBhIGRyYWZ0IGZyb20gYW5vdGhlciBzY29wZSwgd2Vcblx0XHQvLyBuZWVkIHRvIHByZXZlbnQgYXV0by1mcmVlemluZyBzbyB0aGUgdW5vd25lZCBkcmFmdCBjYW4gYmUgZmluYWxpemVkLlxuXHRcdGNhbkF1dG9GcmVlemVfOiB0cnVlLFxuXHRcdHVuZmluYWxpemVkRHJhZnRzXzogMFxuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VQYXRjaGVzSW5TY29wZShcblx0c2NvcGU6IEltbWVyU2NvcGUsXG5cdHBhdGNoTGlzdGVuZXI/OiBQYXRjaExpc3RlbmVyXG4pIHtcblx0aWYgKHBhdGNoTGlzdGVuZXIpIHtcblx0XHRnZXRQbHVnaW4oXCJQYXRjaGVzXCIpIC8vIGFzc2VydCB3ZSBoYXZlIHRoZSBwbHVnaW5cblx0XHRzY29wZS5wYXRjaGVzXyA9IFtdXG5cdFx0c2NvcGUuaW52ZXJzZVBhdGNoZXNfID0gW11cblx0XHRzY29wZS5wYXRjaExpc3RlbmVyXyA9IHBhdGNoTGlzdGVuZXJcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmV2b2tlU2NvcGUoc2NvcGU6IEltbWVyU2NvcGUpIHtcblx0bGVhdmVTY29wZShzY29wZSlcblx0c2NvcGUuZHJhZnRzXy5mb3JFYWNoKHJldm9rZURyYWZ0KVxuXHQvLyBAdHMtaWdub3JlXG5cdHNjb3BlLmRyYWZ0c18gPSBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsZWF2ZVNjb3BlKHNjb3BlOiBJbW1lclNjb3BlKSB7XG5cdGlmIChzY29wZSA9PT0gY3VycmVudFNjb3BlKSB7XG5cdFx0Y3VycmVudFNjb3BlID0gc2NvcGUucGFyZW50X1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnRlclNjb3BlKGltbWVyOiBJbW1lcikge1xuXHRyZXR1cm4gKGN1cnJlbnRTY29wZSA9IGNyZWF0ZVNjb3BlKGN1cnJlbnRTY29wZSwgaW1tZXIpKVxufVxuXG5mdW5jdGlvbiByZXZva2VEcmFmdChkcmFmdDogRHJhZnRlZCkge1xuXHRjb25zdCBzdGF0ZTogSW1tZXJTdGF0ZSA9IGRyYWZ0W0RSQUZUX1NUQVRFXVxuXHRpZiAoXG5cdFx0c3RhdGUudHlwZV8gPT09IFByb3h5VHlwZS5Qcm94eU9iamVjdCB8fFxuXHRcdHN0YXRlLnR5cGVfID09PSBQcm94eVR5cGUuUHJveHlBcnJheVxuXHQpXG5cdFx0c3RhdGUucmV2b2tlXygpXG5cdGVsc2Ugc3RhdGUucmV2b2tlZF8gPSB0cnVlXG59XG4iLCAiaW1wb3J0IHtcblx0SW1tZXJTY29wZSxcblx0RFJBRlRfU1RBVEUsXG5cdGlzRHJhZnRhYmxlLFxuXHROT1RISU5HLFxuXHRQYXRjaFBhdGgsXG5cdGVhY2gsXG5cdGhhcyxcblx0ZnJlZXplLFxuXHRJbW1lclN0YXRlLFxuXHRpc0RyYWZ0LFxuXHRTZXRTdGF0ZSxcblx0c2V0LFxuXHRQcm94eVR5cGUsXG5cdGdldFBsdWdpbixcblx0ZGllLFxuXHRyZXZva2VTY29wZSxcblx0aXNGcm96ZW4sXG5cdHNoYWxsb3dDb3B5XG59IGZyb20gXCIuLi9pbnRlcm5hbFwiXG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZXNzUmVzdWx0KHJlc3VsdDogYW55LCBzY29wZTogSW1tZXJTY29wZSkge1xuXHRzY29wZS51bmZpbmFsaXplZERyYWZ0c18gPSBzY29wZS5kcmFmdHNfLmxlbmd0aFxuXHRjb25zdCBiYXNlRHJhZnQgPSBzY29wZS5kcmFmdHNfIVswXVxuXHRjb25zdCBpc1JlcGxhY2VkID0gcmVzdWx0ICE9PSB1bmRlZmluZWQgJiYgcmVzdWx0ICE9PSBiYXNlRHJhZnRcblx0aWYgKCFzY29wZS5pbW1lcl8udXNlUHJveGllc18pXG5cdFx0Z2V0UGx1Z2luKFwiRVM1XCIpLndpbGxGaW5hbGl6ZUVTNV8oc2NvcGUsIHJlc3VsdCwgaXNSZXBsYWNlZClcblx0aWYgKGlzUmVwbGFjZWQpIHtcblx0XHRpZiAoYmFzZURyYWZ0W0RSQUZUX1NUQVRFXS5tb2RpZmllZF8pIHtcblx0XHRcdHJldm9rZVNjb3BlKHNjb3BlKVxuXHRcdFx0ZGllKDQpXG5cdFx0fVxuXHRcdGlmIChpc0RyYWZ0YWJsZShyZXN1bHQpKSB7XG5cdFx0XHQvLyBGaW5hbGl6ZSB0aGUgcmVzdWx0IGluIGNhc2UgaXQgY29udGFpbnMgKG9yIGlzKSBhIHN1YnNldCBvZiB0aGUgZHJhZnQuXG5cdFx0XHRyZXN1bHQgPSBmaW5hbGl6ZShzY29wZSwgcmVzdWx0KVxuXHRcdFx0aWYgKCFzY29wZS5wYXJlbnRfKSBtYXliZUZyZWV6ZShzY29wZSwgcmVzdWx0KVxuXHRcdH1cblx0XHRpZiAoc2NvcGUucGF0Y2hlc18pIHtcblx0XHRcdGdldFBsdWdpbihcIlBhdGNoZXNcIikuZ2VuZXJhdGVSZXBsYWNlbWVudFBhdGNoZXNfKFxuXHRcdFx0XHRiYXNlRHJhZnRbRFJBRlRfU1RBVEVdLmJhc2VfLFxuXHRcdFx0XHRyZXN1bHQsXG5cdFx0XHRcdHNjb3BlLnBhdGNoZXNfLFxuXHRcdFx0XHRzY29wZS5pbnZlcnNlUGF0Y2hlc18hXG5cdFx0XHQpXG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdC8vIEZpbmFsaXplIHRoZSBiYXNlIGRyYWZ0LlxuXHRcdHJlc3VsdCA9IGZpbmFsaXplKHNjb3BlLCBiYXNlRHJhZnQsIFtdKVxuXHR9XG5cdHJldm9rZVNjb3BlKHNjb3BlKVxuXHRpZiAoc2NvcGUucGF0Y2hlc18pIHtcblx0XHRzY29wZS5wYXRjaExpc3RlbmVyXyEoc2NvcGUucGF0Y2hlc18sIHNjb3BlLmludmVyc2VQYXRjaGVzXyEpXG5cdH1cblx0cmV0dXJuIHJlc3VsdCAhPT0gTk9USElORyA/IHJlc3VsdCA6IHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiBmaW5hbGl6ZShyb290U2NvcGU6IEltbWVyU2NvcGUsIHZhbHVlOiBhbnksIHBhdGg/OiBQYXRjaFBhdGgpIHtcblx0Ly8gRG9uJ3QgcmVjdXJzZSBpbiB0aG8gcmVjdXJzaXZlIGRhdGEgc3RydWN0dXJlc1xuXHRpZiAoaXNGcm96ZW4odmFsdWUpKSByZXR1cm4gdmFsdWVcblxuXHRjb25zdCBzdGF0ZTogSW1tZXJTdGF0ZSA9IHZhbHVlW0RSQUZUX1NUQVRFXVxuXHQvLyBBIHBsYWluIG9iamVjdCwgbWlnaHQgbmVlZCBmcmVlemluZywgbWlnaHQgY29udGFpbiBkcmFmdHNcblx0aWYgKCFzdGF0ZSkge1xuXHRcdGVhY2goXG5cdFx0XHR2YWx1ZSxcblx0XHRcdChrZXksIGNoaWxkVmFsdWUpID0+XG5cdFx0XHRcdGZpbmFsaXplUHJvcGVydHkocm9vdFNjb3BlLCBzdGF0ZSwgdmFsdWUsIGtleSwgY2hpbGRWYWx1ZSwgcGF0aCksXG5cdFx0XHR0cnVlIC8vIFNlZSAjNTkwLCBkb24ndCByZWN1cnNlIGludG8gbm9uLWVudW1lcmFibGUgb2Ygbm9uIGRyYWZ0ZWQgb2JqZWN0c1xuXHRcdClcblx0XHRyZXR1cm4gdmFsdWVcblx0fVxuXHQvLyBOZXZlciBmaW5hbGl6ZSBkcmFmdHMgb3duZWQgYnkgYW5vdGhlciBzY29wZS5cblx0aWYgKHN0YXRlLnNjb3BlXyAhPT0gcm9vdFNjb3BlKSByZXR1cm4gdmFsdWVcblx0Ly8gVW5tb2RpZmllZCBkcmFmdCwgcmV0dXJuIHRoZSAoZnJvemVuKSBvcmlnaW5hbFxuXHRpZiAoIXN0YXRlLm1vZGlmaWVkXykge1xuXHRcdG1heWJlRnJlZXplKHJvb3RTY29wZSwgc3RhdGUuYmFzZV8sIHRydWUpXG5cdFx0cmV0dXJuIHN0YXRlLmJhc2VfXG5cdH1cblx0Ly8gTm90IGZpbmFsaXplZCB5ZXQsIGxldCdzIGRvIHRoYXQgbm93XG5cdGlmICghc3RhdGUuZmluYWxpemVkXykge1xuXHRcdHN0YXRlLmZpbmFsaXplZF8gPSB0cnVlXG5cdFx0c3RhdGUuc2NvcGVfLnVuZmluYWxpemVkRHJhZnRzXy0tXG5cdFx0Y29uc3QgcmVzdWx0ID1cblx0XHRcdC8vIEZvciBFUzUsIGNyZWF0ZSBhIGdvb2QgY29weSBmcm9tIHRoZSBkcmFmdCBmaXJzdCwgd2l0aCBhZGRlZCBrZXlzIGFuZCB3aXRob3V0IGRlbGV0ZWQga2V5cy5cblx0XHRcdHN0YXRlLnR5cGVfID09PSBQcm94eVR5cGUuRVM1T2JqZWN0IHx8IHN0YXRlLnR5cGVfID09PSBQcm94eVR5cGUuRVM1QXJyYXlcblx0XHRcdFx0PyAoc3RhdGUuY29weV8gPSBzaGFsbG93Q29weShzdGF0ZS5kcmFmdF8pKVxuXHRcdFx0XHQ6IHN0YXRlLmNvcHlfXG5cdFx0Ly8gRmluYWxpemUgYWxsIGNoaWxkcmVuIG9mIHRoZSBjb3B5XG5cdFx0Ly8gRm9yIHNldHMgd2UgY2xvbmUgYmVmb3JlIGl0ZXJhdGluZywgb3RoZXJ3aXNlIHdlIGNhbiBnZXQgaW4gZW5kbGVzcyBsb29wIGR1ZSB0byBtb2RpZnlpbmcgZHVyaW5nIGl0ZXJhdGlvbiwgc2VlICM2Mjhcblx0XHQvLyBBbHRob3VnaCB0aGUgb3JpZ2luYWwgdGVzdCBjYXNlIGRvZXNuJ3Qgc2VlbSB2YWxpZCBhbnl3YXksIHNvIGlmIHRoaXMgaW4gdGhlIHdheSB3ZSBjYW4gdHVybiB0aGUgbmV4dCBsaW5lXG5cdFx0Ly8gYmFjayB0byBlYWNoKHJlc3VsdCwgLi4uLilcblx0XHRlYWNoKFxuXHRcdFx0c3RhdGUudHlwZV8gPT09IFByb3h5VHlwZS5TZXQgPyBuZXcgU2V0KHJlc3VsdCkgOiByZXN1bHQsXG5cdFx0XHQoa2V5LCBjaGlsZFZhbHVlKSA9PlxuXHRcdFx0XHRmaW5hbGl6ZVByb3BlcnR5KHJvb3RTY29wZSwgc3RhdGUsIHJlc3VsdCwga2V5LCBjaGlsZFZhbHVlLCBwYXRoKVxuXHRcdClcblx0XHQvLyBldmVyeXRoaW5nIGluc2lkZSBpcyBmcm96ZW4sIHdlIGNhbiBmcmVlemUgaGVyZVxuXHRcdG1heWJlRnJlZXplKHJvb3RTY29wZSwgcmVzdWx0LCBmYWxzZSlcblx0XHQvLyBmaXJzdCB0aW1lIGZpbmFsaXppbmcsIGxldCdzIGNyZWF0ZSB0aG9zZSBwYXRjaGVzXG5cdFx0aWYgKHBhdGggJiYgcm9vdFNjb3BlLnBhdGNoZXNfKSB7XG5cdFx0XHRnZXRQbHVnaW4oXCJQYXRjaGVzXCIpLmdlbmVyYXRlUGF0Y2hlc18oXG5cdFx0XHRcdHN0YXRlLFxuXHRcdFx0XHRwYXRoLFxuXHRcdFx0XHRyb290U2NvcGUucGF0Y2hlc18sXG5cdFx0XHRcdHJvb3RTY29wZS5pbnZlcnNlUGF0Y2hlc18hXG5cdFx0XHQpXG5cdFx0fVxuXHR9XG5cdHJldHVybiBzdGF0ZS5jb3B5X1xufVxuXG5mdW5jdGlvbiBmaW5hbGl6ZVByb3BlcnR5KFxuXHRyb290U2NvcGU6IEltbWVyU2NvcGUsXG5cdHBhcmVudFN0YXRlOiB1bmRlZmluZWQgfCBJbW1lclN0YXRlLFxuXHR0YXJnZXRPYmplY3Q6IGFueSxcblx0cHJvcDogc3RyaW5nIHwgbnVtYmVyLFxuXHRjaGlsZFZhbHVlOiBhbnksXG5cdHJvb3RQYXRoPzogUGF0Y2hQYXRoXG4pIHtcblx0aWYgKF9fREVWX18gJiYgY2hpbGRWYWx1ZSA9PT0gdGFyZ2V0T2JqZWN0KSBkaWUoNSlcblx0aWYgKGlzRHJhZnQoY2hpbGRWYWx1ZSkpIHtcblx0XHRjb25zdCBwYXRoID1cblx0XHRcdHJvb3RQYXRoICYmXG5cdFx0XHRwYXJlbnRTdGF0ZSAmJlxuXHRcdFx0cGFyZW50U3RhdGUhLnR5cGVfICE9PSBQcm94eVR5cGUuU2V0ICYmIC8vIFNldCBvYmplY3RzIGFyZSBhdG9taWMgc2luY2UgdGhleSBoYXZlIG5vIGtleXMuXG5cdFx0XHQhaGFzKChwYXJlbnRTdGF0ZSBhcyBFeGNsdWRlPEltbWVyU3RhdGUsIFNldFN0YXRlPikuYXNzaWduZWRfISwgcHJvcCkgLy8gU2tpcCBkZWVwIHBhdGNoZXMgZm9yIGFzc2lnbmVkIGtleXMuXG5cdFx0XHRcdD8gcm9vdFBhdGghLmNvbmNhdChwcm9wKVxuXHRcdFx0XHQ6IHVuZGVmaW5lZFxuXHRcdC8vIERyYWZ0cyBvd25lZCBieSBgc2NvcGVgIGFyZSBmaW5hbGl6ZWQgaGVyZS5cblx0XHRjb25zdCByZXMgPSBmaW5hbGl6ZShyb290U2NvcGUsIGNoaWxkVmFsdWUsIHBhdGgpXG5cdFx0c2V0KHRhcmdldE9iamVjdCwgcHJvcCwgcmVzKVxuXHRcdC8vIERyYWZ0cyBmcm9tIGFub3RoZXIgc2NvcGUgbXVzdCBwcmV2ZW50ZWQgdG8gYmUgZnJvemVuXG5cdFx0Ly8gaWYgd2UgZ290IGEgZHJhZnQgYmFjayBmcm9tIGZpbmFsaXplLCB3ZSdyZSBpbiBhIG5lc3RlZCBwcm9kdWNlIGFuZCBzaG91bGRuJ3QgZnJlZXplXG5cdFx0aWYgKGlzRHJhZnQocmVzKSkge1xuXHRcdFx0cm9vdFNjb3BlLmNhbkF1dG9GcmVlemVfID0gZmFsc2Vcblx0XHR9IGVsc2UgcmV0dXJuXG5cdH1cblx0Ly8gU2VhcmNoIG5ldyBvYmplY3RzIGZvciB1bmZpbmFsaXplZCBkcmFmdHMuIEZyb3plbiBvYmplY3RzIHNob3VsZCBuZXZlciBjb250YWluIGRyYWZ0cy5cblx0aWYgKGlzRHJhZnRhYmxlKGNoaWxkVmFsdWUpICYmICFpc0Zyb3plbihjaGlsZFZhbHVlKSkge1xuXHRcdGlmICghcm9vdFNjb3BlLmltbWVyXy5hdXRvRnJlZXplXyAmJiByb290U2NvcGUudW5maW5hbGl6ZWREcmFmdHNfIDwgMSkge1xuXHRcdFx0Ly8gb3B0aW1pemF0aW9uOiBpZiBhbiBvYmplY3QgaXMgbm90IGEgZHJhZnQsIGFuZCB3ZSBkb24ndCBoYXZlIHRvXG5cdFx0XHQvLyBkZWVwZnJlZXplIGV2ZXJ5dGhpbmcsIGFuZCB3ZSBhcmUgc3VyZSB0aGF0IG5vIGRyYWZ0cyBhcmUgbGVmdCBpbiB0aGUgcmVtYWluaW5nIG9iamVjdFxuXHRcdFx0Ly8gY2F1c2Ugd2Ugc2F3IGFuZCBmaW5hbGl6ZWQgYWxsIGRyYWZ0cyBhbHJlYWR5OyB3ZSBjYW4gc3RvcCB2aXNpdGluZyB0aGUgcmVzdCBvZiB0aGUgdHJlZS5cblx0XHRcdC8vIFRoaXMgYmVuZWZpdHMgZXNwZWNpYWxseSBhZGRpbmcgbGFyZ2UgZGF0YSB0cmVlJ3Mgd2l0aG91dCBmdXJ0aGVyIHByb2Nlc3NpbmcuXG5cdFx0XHQvLyBTZWUgYWRkLWRhdGEuanMgcGVyZiB0ZXN0XG5cdFx0XHRyZXR1cm5cblx0XHR9XG5cdFx0ZmluYWxpemUocm9vdFNjb3BlLCBjaGlsZFZhbHVlKVxuXHRcdC8vIGltbWVyIGRlZXAgZnJlZXplcyBwbGFpbiBvYmplY3RzLCBzbyBpZiB0aGVyZSBpcyBubyBwYXJlbnQgc3RhdGUsIHdlIGZyZWV6ZSBhcyB3ZWxsXG5cdFx0aWYgKCFwYXJlbnRTdGF0ZSB8fCAhcGFyZW50U3RhdGUuc2NvcGVfLnBhcmVudF8pXG5cdFx0XHRtYXliZUZyZWV6ZShyb290U2NvcGUsIGNoaWxkVmFsdWUpXG5cdH1cbn1cblxuZnVuY3Rpb24gbWF5YmVGcmVlemUoc2NvcGU6IEltbWVyU2NvcGUsIHZhbHVlOiBhbnksIGRlZXAgPSBmYWxzZSkge1xuXHRpZiAoc2NvcGUuaW1tZXJfLmF1dG9GcmVlemVfICYmIHNjb3BlLmNhbkF1dG9GcmVlemVfKSB7XG5cdFx0ZnJlZXplKHZhbHVlLCBkZWVwKVxuXHR9XG59XG4iLCAiaW1wb3J0IHtcblx0ZWFjaCxcblx0aGFzLFxuXHRpcyxcblx0aXNEcmFmdGFibGUsXG5cdHNoYWxsb3dDb3B5LFxuXHRsYXRlc3QsXG5cdEltbWVyQmFzZVN0YXRlLFxuXHRJbW1lclN0YXRlLFxuXHREcmFmdGVkLFxuXHRBbnlPYmplY3QsXG5cdEFueUFycmF5LFxuXHRPYmplY3Rpc2gsXG5cdGdldEN1cnJlbnRTY29wZSxcblx0RFJBRlRfU1RBVEUsXG5cdGRpZSxcblx0Y3JlYXRlUHJveHksXG5cdFByb3h5VHlwZVxufSBmcm9tIFwiLi4vaW50ZXJuYWxcIlxuXG5pbnRlcmZhY2UgUHJveHlCYXNlU3RhdGUgZXh0ZW5kcyBJbW1lckJhc2VTdGF0ZSB7XG5cdGFzc2lnbmVkXzoge1xuXHRcdFtwcm9wZXJ0eTogc3RyaW5nXTogYm9vbGVhblxuXHR9XG5cdHBhcmVudF8/OiBJbW1lclN0YXRlXG5cdHJldm9rZV8oKTogdm9pZFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb3h5T2JqZWN0U3RhdGUgZXh0ZW5kcyBQcm94eUJhc2VTdGF0ZSB7XG5cdHR5cGVfOiBQcm94eVR5cGUuUHJveHlPYmplY3Rcblx0YmFzZV86IGFueVxuXHRjb3B5XzogYW55XG5cdGRyYWZ0XzogRHJhZnRlZDxBbnlPYmplY3QsIFByb3h5T2JqZWN0U3RhdGU+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJveHlBcnJheVN0YXRlIGV4dGVuZHMgUHJveHlCYXNlU3RhdGUge1xuXHR0eXBlXzogUHJveHlUeXBlLlByb3h5QXJyYXlcblx0YmFzZV86IEFueUFycmF5XG5cdGNvcHlfOiBBbnlBcnJheSB8IG51bGxcblx0ZHJhZnRfOiBEcmFmdGVkPEFueUFycmF5LCBQcm94eUFycmF5U3RhdGU+XG59XG5cbnR5cGUgUHJveHlTdGF0ZSA9IFByb3h5T2JqZWN0U3RhdGUgfCBQcm94eUFycmF5U3RhdGVcblxuLyoqXG4gKiBSZXR1cm5zIGEgbmV3IGRyYWZ0IG9mIHRoZSBgYmFzZWAgb2JqZWN0LlxuICpcbiAqIFRoZSBzZWNvbmQgYXJndW1lbnQgaXMgdGhlIHBhcmVudCBkcmFmdC1zdGF0ZSAodXNlZCBpbnRlcm5hbGx5KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVByb3h5UHJveHk8VCBleHRlbmRzIE9iamVjdGlzaD4oXG5cdGJhc2U6IFQsXG5cdHBhcmVudD86IEltbWVyU3RhdGVcbik6IERyYWZ0ZWQ8VCwgUHJveHlTdGF0ZT4ge1xuXHRjb25zdCBpc0FycmF5ID0gQXJyYXkuaXNBcnJheShiYXNlKVxuXHRjb25zdCBzdGF0ZTogUHJveHlTdGF0ZSA9IHtcblx0XHR0eXBlXzogaXNBcnJheSA/IFByb3h5VHlwZS5Qcm94eUFycmF5IDogKFByb3h5VHlwZS5Qcm94eU9iamVjdCBhcyBhbnkpLFxuXHRcdC8vIFRyYWNrIHdoaWNoIHByb2R1Y2UgY2FsbCB0aGlzIGlzIGFzc29jaWF0ZWQgd2l0aC5cblx0XHRzY29wZV86IHBhcmVudCA/IHBhcmVudC5zY29wZV8gOiBnZXRDdXJyZW50U2NvcGUoKSEsXG5cdFx0Ly8gVHJ1ZSBmb3IgYm90aCBzaGFsbG93IGFuZCBkZWVwIGNoYW5nZXMuXG5cdFx0bW9kaWZpZWRfOiBmYWxzZSxcblx0XHQvLyBVc2VkIGR1cmluZyBmaW5hbGl6YXRpb24uXG5cdFx0ZmluYWxpemVkXzogZmFsc2UsXG5cdFx0Ly8gVHJhY2sgd2hpY2ggcHJvcGVydGllcyBoYXZlIGJlZW4gYXNzaWduZWQgKHRydWUpIG9yIGRlbGV0ZWQgKGZhbHNlKS5cblx0XHRhc3NpZ25lZF86IHt9LFxuXHRcdC8vIFRoZSBwYXJlbnQgZHJhZnQgc3RhdGUuXG5cdFx0cGFyZW50XzogcGFyZW50LFxuXHRcdC8vIFRoZSBiYXNlIHN0YXRlLlxuXHRcdGJhc2VfOiBiYXNlLFxuXHRcdC8vIFRoZSBiYXNlIHByb3h5LlxuXHRcdGRyYWZ0XzogbnVsbCBhcyBhbnksIC8vIHNldCBiZWxvd1xuXHRcdC8vIFRoZSBiYXNlIGNvcHkgd2l0aCBhbnkgdXBkYXRlZCB2YWx1ZXMuXG5cdFx0Y29weV86IG51bGwsXG5cdFx0Ly8gQ2FsbGVkIGJ5IHRoZSBgcHJvZHVjZWAgZnVuY3Rpb24uXG5cdFx0cmV2b2tlXzogbnVsbCBhcyBhbnksXG5cdFx0aXNNYW51YWxfOiBmYWxzZVxuXHR9XG5cblx0Ly8gdGhlIHRyYXBzIG11c3QgdGFyZ2V0IHNvbWV0aGluZywgYSBiaXQgbGlrZSB0aGUgJ3JlYWwnIGJhc2UuXG5cdC8vIGJ1dCBhbHNvLCB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gZGV0ZXJtaW5lIGZyb20gdGhlIHRhcmdldCB3aGF0IHRoZSByZWxldmFudCBzdGF0ZSBpc1xuXHQvLyAodG8gYXZvaWQgY3JlYXRpbmcgdHJhcHMgcGVyIGluc3RhbmNlIHRvIGNhcHR1cmUgdGhlIHN0YXRlIGluIGNsb3N1cmUsXG5cdC8vIGFuZCB0byBhdm9pZCBjcmVhdGluZyB3ZWlyZCBoaWRkZW4gcHJvcGVydGllcyBhcyB3ZWxsKVxuXHQvLyBTbyB0aGUgdHJpY2sgaXMgdG8gdXNlICdzdGF0ZScgYXMgdGhlIGFjdHVhbCAndGFyZ2V0JyEgKGFuZCBtYWtlIHN1cmUgd2UgaW50ZXJjZXB0IGV2ZXJ5dGhpbmcpXG5cdC8vIE5vdGUgdGhhdCBpbiB0aGUgY2FzZSBvZiBhbiBhcnJheSwgd2UgcHV0IHRoZSBzdGF0ZSBpbiBhbiBhcnJheSB0byBoYXZlIGJldHRlciBSZWZsZWN0IGRlZmF1bHRzIG9vdGJcblx0bGV0IHRhcmdldDogVCA9IHN0YXRlIGFzIGFueVxuXHRsZXQgdHJhcHM6IFByb3h5SGFuZGxlcjxvYmplY3QgfCBBcnJheTxhbnk+PiA9IG9iamVjdFRyYXBzXG5cdGlmIChpc0FycmF5KSB7XG5cdFx0dGFyZ2V0ID0gW3N0YXRlXSBhcyBhbnlcblx0XHR0cmFwcyA9IGFycmF5VHJhcHNcblx0fVxuXG5cdGNvbnN0IHtyZXZva2UsIHByb3h5fSA9IFByb3h5LnJldm9jYWJsZSh0YXJnZXQsIHRyYXBzKVxuXHRzdGF0ZS5kcmFmdF8gPSBwcm94eSBhcyBhbnlcblx0c3RhdGUucmV2b2tlXyA9IHJldm9rZVxuXHRyZXR1cm4gcHJveHkgYXMgYW55XG59XG5cbi8qKlxuICogT2JqZWN0IGRyYWZ0c1xuICovXG5leHBvcnQgY29uc3Qgb2JqZWN0VHJhcHM6IFByb3h5SGFuZGxlcjxQcm94eVN0YXRlPiA9IHtcblx0Z2V0KHN0YXRlLCBwcm9wKSB7XG5cdFx0aWYgKHByb3AgPT09IERSQUZUX1NUQVRFKSByZXR1cm4gc3RhdGVcblxuXHRcdGNvbnN0IHNvdXJjZSA9IGxhdGVzdChzdGF0ZSlcblx0XHRpZiAoIWhhcyhzb3VyY2UsIHByb3ApKSB7XG5cdFx0XHQvLyBub24tZXhpc3Rpbmcgb3Igbm9uLW93biBwcm9wZXJ0eS4uLlxuXHRcdFx0cmV0dXJuIHJlYWRQcm9wRnJvbVByb3RvKHN0YXRlLCBzb3VyY2UsIHByb3ApXG5cdFx0fVxuXHRcdGNvbnN0IHZhbHVlID0gc291cmNlW3Byb3BdXG5cdFx0aWYgKHN0YXRlLmZpbmFsaXplZF8gfHwgIWlzRHJhZnRhYmxlKHZhbHVlKSkge1xuXHRcdFx0cmV0dXJuIHZhbHVlXG5cdFx0fVxuXHRcdC8vIENoZWNrIGZvciBleGlzdGluZyBkcmFmdCBpbiBtb2RpZmllZCBzdGF0ZS5cblx0XHQvLyBBc3NpZ25lZCB2YWx1ZXMgYXJlIG5ldmVyIGRyYWZ0ZWQuIFRoaXMgY2F0Y2hlcyBhbnkgZHJhZnRzIHdlIGNyZWF0ZWQsIHRvby5cblx0XHRpZiAodmFsdWUgPT09IHBlZWsoc3RhdGUuYmFzZV8sIHByb3ApKSB7XG5cdFx0XHRwcmVwYXJlQ29weShzdGF0ZSlcblx0XHRcdHJldHVybiAoc3RhdGUuY29weV8hW3Byb3AgYXMgYW55XSA9IGNyZWF0ZVByb3h5KFxuXHRcdFx0XHRzdGF0ZS5zY29wZV8uaW1tZXJfLFxuXHRcdFx0XHR2YWx1ZSxcblx0XHRcdFx0c3RhdGVcblx0XHRcdCkpXG5cdFx0fVxuXHRcdHJldHVybiB2YWx1ZVxuXHR9LFxuXHRoYXMoc3RhdGUsIHByb3ApIHtcblx0XHRyZXR1cm4gcHJvcCBpbiBsYXRlc3Qoc3RhdGUpXG5cdH0sXG5cdG93bktleXMoc3RhdGUpIHtcblx0XHRyZXR1cm4gUmVmbGVjdC5vd25LZXlzKGxhdGVzdChzdGF0ZSkpXG5cdH0sXG5cdHNldChcblx0XHRzdGF0ZTogUHJveHlPYmplY3RTdGF0ZSxcblx0XHRwcm9wOiBzdHJpbmcgLyogc3RyaWN0bHkgbm90LCBidXQgaGVscHMgVFMgKi8sXG5cdFx0dmFsdWVcblx0KSB7XG5cdFx0Y29uc3QgZGVzYyA9IGdldERlc2NyaXB0b3JGcm9tUHJvdG8obGF0ZXN0KHN0YXRlKSwgcHJvcClcblx0XHRpZiAoZGVzYz8uc2V0KSB7XG5cdFx0XHQvLyBzcGVjaWFsIGNhc2U6IGlmIHRoaXMgd3JpdGUgaXMgY2FwdHVyZWQgYnkgYSBzZXR0ZXIsIHdlIGhhdmVcblx0XHRcdC8vIHRvIHRyaWdnZXIgaXQgd2l0aCB0aGUgY29ycmVjdCBjb250ZXh0XG5cdFx0XHRkZXNjLnNldC5jYWxsKHN0YXRlLmRyYWZ0XywgdmFsdWUpXG5cdFx0XHRyZXR1cm4gdHJ1ZVxuXHRcdH1cblx0XHRpZiAoIXN0YXRlLm1vZGlmaWVkXykge1xuXHRcdFx0Ly8gdGhlIGxhc3QgY2hlY2sgaXMgYmVjYXVzZSB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gZGlzdGluZ3Vpc2ggc2V0dGluZyBhIG5vbi1leGlzdGluZyB0byB1bmRlZmluZWQgKHdoaWNoIGlzIGEgY2hhbmdlKVxuXHRcdFx0Ly8gZnJvbSBzZXR0aW5nIGFuIGV4aXN0aW5nIHByb3BlcnR5IHdpdGggdmFsdWUgdW5kZWZpbmVkIHRvIHVuZGVmaW5lZCAod2hpY2ggaXMgbm90IGEgY2hhbmdlKVxuXHRcdFx0Y29uc3QgY3VycmVudCA9IHBlZWsobGF0ZXN0KHN0YXRlKSwgcHJvcClcblx0XHRcdC8vIHNwZWNpYWwgY2FzZSwgaWYgd2UgYXNzaWduaW5nIHRoZSBvcmlnaW5hbCB2YWx1ZSB0byBhIGRyYWZ0LCB3ZSBjYW4gaWdub3JlIHRoZSBhc3NpZ25tZW50XG5cdFx0XHRjb25zdCBjdXJyZW50U3RhdGU6IFByb3h5T2JqZWN0U3RhdGUgPSBjdXJyZW50Py5bRFJBRlRfU1RBVEVdXG5cdFx0XHRpZiAoY3VycmVudFN0YXRlICYmIGN1cnJlbnRTdGF0ZS5iYXNlXyA9PT0gdmFsdWUpIHtcblx0XHRcdFx0c3RhdGUuY29weV8hW3Byb3BdID0gdmFsdWVcblx0XHRcdFx0c3RhdGUuYXNzaWduZWRfW3Byb3BdID0gZmFsc2Vcblx0XHRcdFx0cmV0dXJuIHRydWVcblx0XHRcdH1cblx0XHRcdGlmIChpcyh2YWx1ZSwgY3VycmVudCkgJiYgKHZhbHVlICE9PSB1bmRlZmluZWQgfHwgaGFzKHN0YXRlLmJhc2VfLCBwcm9wKSkpXG5cdFx0XHRcdHJldHVybiB0cnVlXG5cdFx0XHRwcmVwYXJlQ29weShzdGF0ZSlcblx0XHRcdG1hcmtDaGFuZ2VkKHN0YXRlKVxuXHRcdH1cblxuXHRcdGlmIChcblx0XHRcdHN0YXRlLmNvcHlfIVtwcm9wXSA9PT0gdmFsdWUgJiZcblx0XHRcdC8vIHNwZWNpYWwgY2FzZTogTmFOXG5cdFx0XHR0eXBlb2YgdmFsdWUgIT09IFwibnVtYmVyXCIgJiZcblx0XHRcdC8vIHNwZWNpYWwgY2FzZTogaGFuZGxlIG5ldyBwcm9wcyB3aXRoIHZhbHVlICd1bmRlZmluZWQnXG5cdFx0XHQodmFsdWUgIT09IHVuZGVmaW5lZCB8fCBwcm9wIGluIHN0YXRlLmNvcHlfKVxuXHRcdClcblx0XHRcdHJldHVybiB0cnVlXG5cblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0c3RhdGUuY29weV8hW3Byb3BdID0gdmFsdWVcblx0XHRzdGF0ZS5hc3NpZ25lZF9bcHJvcF0gPSB0cnVlXG5cdFx0cmV0dXJuIHRydWVcblx0fSxcblx0ZGVsZXRlUHJvcGVydHkoc3RhdGUsIHByb3A6IHN0cmluZykge1xuXHRcdC8vIFRoZSBgdW5kZWZpbmVkYCBjaGVjayBpcyBhIGZhc3QgcGF0aCBmb3IgcHJlLWV4aXN0aW5nIGtleXMuXG5cdFx0aWYgKHBlZWsoc3RhdGUuYmFzZV8sIHByb3ApICE9PSB1bmRlZmluZWQgfHwgcHJvcCBpbiBzdGF0ZS5iYXNlXykge1xuXHRcdFx0c3RhdGUuYXNzaWduZWRfW3Byb3BdID0gZmFsc2Vcblx0XHRcdHByZXBhcmVDb3B5KHN0YXRlKVxuXHRcdFx0bWFya0NoYW5nZWQoc3RhdGUpXG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIGlmIGFuIG9yaWdpbmFsbHkgbm90IGFzc2lnbmVkIHByb3BlcnR5IHdhcyBkZWxldGVkXG5cdFx0XHRkZWxldGUgc3RhdGUuYXNzaWduZWRfW3Byb3BdXG5cdFx0fVxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRpZiAoc3RhdGUuY29weV8pIGRlbGV0ZSBzdGF0ZS5jb3B5X1twcm9wXVxuXHRcdHJldHVybiB0cnVlXG5cdH0sXG5cdC8vIE5vdGU6IFdlIG5ldmVyIGNvZXJjZSBgZGVzYy52YWx1ZWAgaW50byBhbiBJbW1lciBkcmFmdCwgYmVjYXVzZSB3ZSBjYW4ndCBtYWtlXG5cdC8vIHRoZSBzYW1lIGd1YXJhbnRlZSBpbiBFUzUgbW9kZS5cblx0Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHN0YXRlLCBwcm9wKSB7XG5cdFx0Y29uc3Qgb3duZXIgPSBsYXRlc3Qoc3RhdGUpXG5cdFx0Y29uc3QgZGVzYyA9IFJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG93bmVyLCBwcm9wKVxuXHRcdGlmICghZGVzYykgcmV0dXJuIGRlc2Ncblx0XHRyZXR1cm4ge1xuXHRcdFx0d3JpdGFibGU6IHRydWUsXG5cdFx0XHRjb25maWd1cmFibGU6IHN0YXRlLnR5cGVfICE9PSBQcm94eVR5cGUuUHJveHlBcnJheSB8fCBwcm9wICE9PSBcImxlbmd0aFwiLFxuXHRcdFx0ZW51bWVyYWJsZTogZGVzYy5lbnVtZXJhYmxlLFxuXHRcdFx0dmFsdWU6IG93bmVyW3Byb3BdXG5cdFx0fVxuXHR9LFxuXHRkZWZpbmVQcm9wZXJ0eSgpIHtcblx0XHRkaWUoMTEpXG5cdH0sXG5cdGdldFByb3RvdHlwZU9mKHN0YXRlKSB7XG5cdFx0cmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZihzdGF0ZS5iYXNlXylcblx0fSxcblx0c2V0UHJvdG90eXBlT2YoKSB7XG5cdFx0ZGllKDEyKVxuXHR9XG59XG5cbi8qKlxuICogQXJyYXkgZHJhZnRzXG4gKi9cblxuY29uc3QgYXJyYXlUcmFwczogUHJveHlIYW5kbGVyPFtQcm94eUFycmF5U3RhdGVdPiA9IHt9XG5lYWNoKG9iamVjdFRyYXBzLCAoa2V5LCBmbikgPT4ge1xuXHQvLyBAdHMtaWdub3JlXG5cdGFycmF5VHJhcHNba2V5XSA9IGZ1bmN0aW9uKCkge1xuXHRcdGFyZ3VtZW50c1swXSA9IGFyZ3VtZW50c1swXVswXVxuXHRcdHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG5cdH1cbn0pXG5hcnJheVRyYXBzLmRlbGV0ZVByb3BlcnR5ID0gZnVuY3Rpb24oc3RhdGUsIHByb3ApIHtcblx0aWYgKF9fREVWX18gJiYgaXNOYU4ocGFyc2VJbnQocHJvcCBhcyBhbnkpKSkgZGllKDEzKVxuXHQvLyBAdHMtaWdub3JlXG5cdHJldHVybiBhcnJheVRyYXBzLnNldCEuY2FsbCh0aGlzLCBzdGF0ZSwgcHJvcCwgdW5kZWZpbmVkKVxufVxuYXJyYXlUcmFwcy5zZXQgPSBmdW5jdGlvbihzdGF0ZSwgcHJvcCwgdmFsdWUpIHtcblx0aWYgKF9fREVWX18gJiYgcHJvcCAhPT0gXCJsZW5ndGhcIiAmJiBpc05hTihwYXJzZUludChwcm9wIGFzIGFueSkpKSBkaWUoMTQpXG5cdHJldHVybiBvYmplY3RUcmFwcy5zZXQhLmNhbGwodGhpcywgc3RhdGVbMF0sIHByb3AsIHZhbHVlLCBzdGF0ZVswXSlcbn1cblxuLy8gQWNjZXNzIGEgcHJvcGVydHkgd2l0aG91dCBjcmVhdGluZyBhbiBJbW1lciBkcmFmdC5cbmZ1bmN0aW9uIHBlZWsoZHJhZnQ6IERyYWZ0ZWQsIHByb3A6IFByb3BlcnR5S2V5KSB7XG5cdGNvbnN0IHN0YXRlID0gZHJhZnRbRFJBRlRfU1RBVEVdXG5cdGNvbnN0IHNvdXJjZSA9IHN0YXRlID8gbGF0ZXN0KHN0YXRlKSA6IGRyYWZ0XG5cdHJldHVybiBzb3VyY2VbcHJvcF1cbn1cblxuZnVuY3Rpb24gcmVhZFByb3BGcm9tUHJvdG8oc3RhdGU6IEltbWVyU3RhdGUsIHNvdXJjZTogYW55LCBwcm9wOiBQcm9wZXJ0eUtleSkge1xuXHRjb25zdCBkZXNjID0gZ2V0RGVzY3JpcHRvckZyb21Qcm90byhzb3VyY2UsIHByb3ApXG5cdHJldHVybiBkZXNjXG5cdFx0PyBgdmFsdWVgIGluIGRlc2Ncblx0XHRcdD8gZGVzYy52YWx1ZVxuXHRcdFx0OiAvLyBUaGlzIGlzIGEgdmVyeSBzcGVjaWFsIGNhc2UsIGlmIHRoZSBwcm9wIGlzIGEgZ2V0dGVyIGRlZmluZWQgYnkgdGhlXG5cdFx0XHQgIC8vIHByb3RvdHlwZSwgd2Ugc2hvdWxkIGludm9rZSBpdCB3aXRoIHRoZSBkcmFmdCBhcyBjb250ZXh0IVxuXHRcdFx0ICBkZXNjLmdldD8uY2FsbChzdGF0ZS5kcmFmdF8pXG5cdFx0OiB1bmRlZmluZWRcbn1cblxuZnVuY3Rpb24gZ2V0RGVzY3JpcHRvckZyb21Qcm90byhcblx0c291cmNlOiBhbnksXG5cdHByb3A6IFByb3BlcnR5S2V5XG4pOiBQcm9wZXJ0eURlc2NyaXB0b3IgfCB1bmRlZmluZWQge1xuXHQvLyAnaW4nIGNoZWNrcyBwcm90byFcblx0aWYgKCEocHJvcCBpbiBzb3VyY2UpKSByZXR1cm4gdW5kZWZpbmVkXG5cdGxldCBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihzb3VyY2UpXG5cdHdoaWxlIChwcm90bykge1xuXHRcdGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCBwcm9wKVxuXHRcdGlmIChkZXNjKSByZXR1cm4gZGVzY1xuXHRcdHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHByb3RvKVxuXHR9XG5cdHJldHVybiB1bmRlZmluZWRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcmtDaGFuZ2VkKHN0YXRlOiBJbW1lclN0YXRlKSB7XG5cdGlmICghc3RhdGUubW9kaWZpZWRfKSB7XG5cdFx0c3RhdGUubW9kaWZpZWRfID0gdHJ1ZVxuXHRcdGlmIChzdGF0ZS5wYXJlbnRfKSB7XG5cdFx0XHRtYXJrQ2hhbmdlZChzdGF0ZS5wYXJlbnRfKVxuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZUNvcHkoc3RhdGU6IHtiYXNlXzogYW55OyBjb3B5XzogYW55fSkge1xuXHRpZiAoIXN0YXRlLmNvcHlfKSB7XG5cdFx0c3RhdGUuY29weV8gPSBzaGFsbG93Q29weShzdGF0ZS5iYXNlXylcblx0fVxufVxuIiwgImltcG9ydCB7XG5cdElQcm9kdWNlV2l0aFBhdGNoZXMsXG5cdElQcm9kdWNlLFxuXHRJbW1lclN0YXRlLFxuXHREcmFmdGVkLFxuXHRpc0RyYWZ0YWJsZSxcblx0cHJvY2Vzc1Jlc3VsdCxcblx0UGF0Y2gsXG5cdE9iamVjdGlzaCxcblx0RFJBRlRfU1RBVEUsXG5cdERyYWZ0LFxuXHRQYXRjaExpc3RlbmVyLFxuXHRpc0RyYWZ0LFxuXHRpc01hcCxcblx0aXNTZXQsXG5cdGNyZWF0ZVByb3h5UHJveHksXG5cdGdldFBsdWdpbixcblx0ZGllLFxuXHRoYXNQcm94aWVzLFxuXHRlbnRlclNjb3BlLFxuXHRyZXZva2VTY29wZSxcblx0bGVhdmVTY29wZSxcblx0dXNlUGF0Y2hlc0luU2NvcGUsXG5cdGdldEN1cnJlbnRTY29wZSxcblx0Tk9USElORyxcblx0ZnJlZXplLFxuXHRjdXJyZW50XG59IGZyb20gXCIuLi9pbnRlcm5hbFwiXG5cbmludGVyZmFjZSBQcm9kdWNlcnNGbnMge1xuXHRwcm9kdWNlOiBJUHJvZHVjZVxuXHRwcm9kdWNlV2l0aFBhdGNoZXM6IElQcm9kdWNlV2l0aFBhdGNoZXNcbn1cblxuZXhwb3J0IGNsYXNzIEltbWVyIGltcGxlbWVudHMgUHJvZHVjZXJzRm5zIHtcblx0dXNlUHJveGllc186IGJvb2xlYW4gPSBoYXNQcm94aWVzXG5cblx0YXV0b0ZyZWV6ZV86IGJvb2xlYW4gPSB0cnVlXG5cblx0Y29uc3RydWN0b3IoY29uZmlnPzoge3VzZVByb3hpZXM/OiBib29sZWFuOyBhdXRvRnJlZXplPzogYm9vbGVhbn0pIHtcblx0XHRpZiAodHlwZW9mIGNvbmZpZz8udXNlUHJveGllcyA9PT0gXCJib29sZWFuXCIpXG5cdFx0XHR0aGlzLnNldFVzZVByb3hpZXMoY29uZmlnIS51c2VQcm94aWVzKVxuXHRcdGlmICh0eXBlb2YgY29uZmlnPy5hdXRvRnJlZXplID09PSBcImJvb2xlYW5cIilcblx0XHRcdHRoaXMuc2V0QXV0b0ZyZWV6ZShjb25maWchLmF1dG9GcmVlemUpXG5cdH1cblxuXHQvKipcblx0ICogVGhlIGBwcm9kdWNlYCBmdW5jdGlvbiB0YWtlcyBhIHZhbHVlIGFuZCBhIFwicmVjaXBlIGZ1bmN0aW9uXCIgKHdob3NlXG5cdCAqIHJldHVybiB2YWx1ZSBvZnRlbiBkZXBlbmRzIG9uIHRoZSBiYXNlIHN0YXRlKS4gVGhlIHJlY2lwZSBmdW5jdGlvbiBpc1xuXHQgKiBmcmVlIHRvIG11dGF0ZSBpdHMgZmlyc3QgYXJndW1lbnQgaG93ZXZlciBpdCB3YW50cy4gQWxsIG11dGF0aW9ucyBhcmVcblx0ICogb25seSBldmVyIGFwcGxpZWQgdG8gYSBfX2NvcHlfXyBvZiB0aGUgYmFzZSBzdGF0ZS5cblx0ICpcblx0ICogUGFzcyBvbmx5IGEgZnVuY3Rpb24gdG8gY3JlYXRlIGEgXCJjdXJyaWVkIHByb2R1Y2VyXCIgd2hpY2ggcmVsaWV2ZXMgeW91XG5cdCAqIGZyb20gcGFzc2luZyB0aGUgcmVjaXBlIGZ1bmN0aW9uIGV2ZXJ5IHRpbWUuXG5cdCAqXG5cdCAqIE9ubHkgcGxhaW4gb2JqZWN0cyBhbmQgYXJyYXlzIGFyZSBtYWRlIG11dGFibGUuIEFsbCBvdGhlciBvYmplY3RzIGFyZVxuXHQgKiBjb25zaWRlcmVkIHVuY29weWFibGUuXG5cdCAqXG5cdCAqIE5vdGU6IFRoaXMgZnVuY3Rpb24gaXMgX19ib3VuZF9fIHRvIGl0cyBgSW1tZXJgIGluc3RhbmNlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge2FueX0gYmFzZSAtIHRoZSBpbml0aWFsIHN0YXRlXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IHByb2R1Y2VyIC0gZnVuY3Rpb24gdGhhdCByZWNlaXZlcyBhIHByb3h5IG9mIHRoZSBiYXNlIHN0YXRlIGFzIGZpcnN0IGFyZ3VtZW50IGFuZCB3aGljaCBjYW4gYmUgZnJlZWx5IG1vZGlmaWVkXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IHBhdGNoTGlzdGVuZXIgLSBvcHRpb25hbCBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIHdpdGggYWxsIHRoZSBwYXRjaGVzIHByb2R1Y2VkIGhlcmVcblx0ICogQHJldHVybnMge2FueX0gYSBuZXcgc3RhdGUsIG9yIHRoZSBpbml0aWFsIHN0YXRlIGlmIG5vdGhpbmcgd2FzIG1vZGlmaWVkXG5cdCAqL1xuXHRwcm9kdWNlOiBJUHJvZHVjZSA9IChiYXNlOiBhbnksIHJlY2lwZT86IGFueSwgcGF0Y2hMaXN0ZW5lcj86IGFueSkgPT4ge1xuXHRcdC8vIGN1cnJpZWQgaW52b2NhdGlvblxuXHRcdGlmICh0eXBlb2YgYmFzZSA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiByZWNpcGUgIT09IFwiZnVuY3Rpb25cIikge1xuXHRcdFx0Y29uc3QgZGVmYXVsdEJhc2UgPSByZWNpcGVcblx0XHRcdHJlY2lwZSA9IGJhc2VcblxuXHRcdFx0Y29uc3Qgc2VsZiA9IHRoaXNcblx0XHRcdHJldHVybiBmdW5jdGlvbiBjdXJyaWVkUHJvZHVjZShcblx0XHRcdFx0dGhpczogYW55LFxuXHRcdFx0XHRiYXNlID0gZGVmYXVsdEJhc2UsXG5cdFx0XHRcdC4uLmFyZ3M6IGFueVtdXG5cdFx0XHQpIHtcblx0XHRcdFx0cmV0dXJuIHNlbGYucHJvZHVjZShiYXNlLCAoZHJhZnQ6IERyYWZ0ZWQpID0+IHJlY2lwZS5jYWxsKHRoaXMsIGRyYWZ0LCAuLi5hcmdzKSkgLy8gcHJldHRpZXItaWdub3JlXG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHR5cGVvZiByZWNpcGUgIT09IFwiZnVuY3Rpb25cIikgZGllKDYpXG5cdFx0aWYgKHBhdGNoTGlzdGVuZXIgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgcGF0Y2hMaXN0ZW5lciAhPT0gXCJmdW5jdGlvblwiKVxuXHRcdFx0ZGllKDcpXG5cblx0XHRsZXQgcmVzdWx0XG5cblx0XHQvLyBPbmx5IHBsYWluIG9iamVjdHMsIGFycmF5cywgYW5kIFwiaW1tZXJhYmxlIGNsYXNzZXNcIiBhcmUgZHJhZnRlZC5cblx0XHRpZiAoaXNEcmFmdGFibGUoYmFzZSkpIHtcblx0XHRcdGNvbnN0IHNjb3BlID0gZW50ZXJTY29wZSh0aGlzKVxuXHRcdFx0Y29uc3QgcHJveHkgPSBjcmVhdGVQcm94eSh0aGlzLCBiYXNlLCB1bmRlZmluZWQpXG5cdFx0XHRsZXQgaGFzRXJyb3IgPSB0cnVlXG5cdFx0XHR0cnkge1xuXHRcdFx0XHRyZXN1bHQgPSByZWNpcGUocHJveHkpXG5cdFx0XHRcdGhhc0Vycm9yID0gZmFsc2Vcblx0XHRcdH0gZmluYWxseSB7XG5cdFx0XHRcdC8vIGZpbmFsbHkgaW5zdGVhZCBvZiBjYXRjaCArIHJldGhyb3cgYmV0dGVyIHByZXNlcnZlcyBvcmlnaW5hbCBzdGFja1xuXHRcdFx0XHRpZiAoaGFzRXJyb3IpIHJldm9rZVNjb3BlKHNjb3BlKVxuXHRcdFx0XHRlbHNlIGxlYXZlU2NvcGUoc2NvcGUpXG5cdFx0XHR9XG5cdFx0XHRpZiAodHlwZW9mIFByb21pc2UgIT09IFwidW5kZWZpbmVkXCIgJiYgcmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuXHRcdFx0XHRyZXR1cm4gcmVzdWx0LnRoZW4oXG5cdFx0XHRcdFx0cmVzdWx0ID0+IHtcblx0XHRcdFx0XHRcdHVzZVBhdGNoZXNJblNjb3BlKHNjb3BlLCBwYXRjaExpc3RlbmVyKVxuXHRcdFx0XHRcdFx0cmV0dXJuIHByb2Nlc3NSZXN1bHQocmVzdWx0LCBzY29wZSlcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGVycm9yID0+IHtcblx0XHRcdFx0XHRcdHJldm9rZVNjb3BlKHNjb3BlKVxuXHRcdFx0XHRcdFx0dGhyb3cgZXJyb3Jcblx0XHRcdFx0XHR9XG5cdFx0XHRcdClcblx0XHRcdH1cblx0XHRcdHVzZVBhdGNoZXNJblNjb3BlKHNjb3BlLCBwYXRjaExpc3RlbmVyKVxuXHRcdFx0cmV0dXJuIHByb2Nlc3NSZXN1bHQocmVzdWx0LCBzY29wZSlcblx0XHR9IGVsc2UgaWYgKCFiYXNlIHx8IHR5cGVvZiBiYXNlICE9PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRyZXN1bHQgPSByZWNpcGUoYmFzZSlcblx0XHRcdGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCkgcmVzdWx0ID0gYmFzZVxuXHRcdFx0aWYgKHJlc3VsdCA9PT0gTk9USElORykgcmVzdWx0ID0gdW5kZWZpbmVkXG5cdFx0XHRpZiAodGhpcy5hdXRvRnJlZXplXykgZnJlZXplKHJlc3VsdCwgdHJ1ZSlcblx0XHRcdGlmIChwYXRjaExpc3RlbmVyKSB7XG5cdFx0XHRcdGNvbnN0IHA6IFBhdGNoW10gPSBbXVxuXHRcdFx0XHRjb25zdCBpcDogUGF0Y2hbXSA9IFtdXG5cdFx0XHRcdGdldFBsdWdpbihcIlBhdGNoZXNcIikuZ2VuZXJhdGVSZXBsYWNlbWVudFBhdGNoZXNfKGJhc2UsIHJlc3VsdCwgcCwgaXApXG5cdFx0XHRcdHBhdGNoTGlzdGVuZXIocCwgaXApXG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmVzdWx0XG5cdFx0fSBlbHNlIGRpZSgyMSwgYmFzZSlcblx0fVxuXG5cdHByb2R1Y2VXaXRoUGF0Y2hlczogSVByb2R1Y2VXaXRoUGF0Y2hlcyA9IChcblx0XHRhcmcxOiBhbnksXG5cdFx0YXJnMj86IGFueSxcblx0XHRhcmczPzogYW55XG5cdCk6IGFueSA9PiB7XG5cdFx0aWYgKHR5cGVvZiBhcmcxID09PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRcdHJldHVybiAoc3RhdGU6IGFueSwgLi4uYXJnczogYW55W10pID0+XG5cdFx0XHRcdHRoaXMucHJvZHVjZVdpdGhQYXRjaGVzKHN0YXRlLCAoZHJhZnQ6IGFueSkgPT4gYXJnMShkcmFmdCwgLi4uYXJncykpXG5cdFx0fVxuXG5cdFx0bGV0IHBhdGNoZXM6IFBhdGNoW10sIGludmVyc2VQYXRjaGVzOiBQYXRjaFtdXG5cdFx0Y29uc3QgcmVzdWx0ID0gdGhpcy5wcm9kdWNlKGFyZzEsIGFyZzIsIChwOiBQYXRjaFtdLCBpcDogUGF0Y2hbXSkgPT4ge1xuXHRcdFx0cGF0Y2hlcyA9IHBcblx0XHRcdGludmVyc2VQYXRjaGVzID0gaXBcblx0XHR9KVxuXG5cdFx0aWYgKHR5cGVvZiBQcm9taXNlICE9PSBcInVuZGVmaW5lZFwiICYmIHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcblx0XHRcdHJldHVybiByZXN1bHQudGhlbihuZXh0U3RhdGUgPT4gW25leHRTdGF0ZSwgcGF0Y2hlcyEsIGludmVyc2VQYXRjaGVzIV0pXG5cdFx0fVxuXHRcdHJldHVybiBbcmVzdWx0LCBwYXRjaGVzISwgaW52ZXJzZVBhdGNoZXMhXVxuXHR9XG5cblx0Y3JlYXRlRHJhZnQ8VCBleHRlbmRzIE9iamVjdGlzaD4oYmFzZTogVCk6IERyYWZ0PFQ+IHtcblx0XHRpZiAoIWlzRHJhZnRhYmxlKGJhc2UpKSBkaWUoOClcblx0XHRpZiAoaXNEcmFmdChiYXNlKSkgYmFzZSA9IGN1cnJlbnQoYmFzZSlcblx0XHRjb25zdCBzY29wZSA9IGVudGVyU2NvcGUodGhpcylcblx0XHRjb25zdCBwcm94eSA9IGNyZWF0ZVByb3h5KHRoaXMsIGJhc2UsIHVuZGVmaW5lZClcblx0XHRwcm94eVtEUkFGVF9TVEFURV0uaXNNYW51YWxfID0gdHJ1ZVxuXHRcdGxlYXZlU2NvcGUoc2NvcGUpXG5cdFx0cmV0dXJuIHByb3h5IGFzIGFueVxuXHR9XG5cblx0ZmluaXNoRHJhZnQ8RCBleHRlbmRzIERyYWZ0PGFueT4+KFxuXHRcdGRyYWZ0OiBELFxuXHRcdHBhdGNoTGlzdGVuZXI/OiBQYXRjaExpc3RlbmVyXG5cdCk6IEQgZXh0ZW5kcyBEcmFmdDxpbmZlciBUPiA/IFQgOiBuZXZlciB7XG5cdFx0Y29uc3Qgc3RhdGU6IEltbWVyU3RhdGUgPSBkcmFmdCAmJiAoZHJhZnQgYXMgYW55KVtEUkFGVF9TVEFURV1cblx0XHRpZiAoX19ERVZfXykge1xuXHRcdFx0aWYgKCFzdGF0ZSB8fCAhc3RhdGUuaXNNYW51YWxfKSBkaWUoOSlcblx0XHRcdGlmIChzdGF0ZS5maW5hbGl6ZWRfKSBkaWUoMTApXG5cdFx0fVxuXHRcdGNvbnN0IHtzY29wZV86IHNjb3BlfSA9IHN0YXRlXG5cdFx0dXNlUGF0Y2hlc0luU2NvcGUoc2NvcGUsIHBhdGNoTGlzdGVuZXIpXG5cdFx0cmV0dXJuIHByb2Nlc3NSZXN1bHQodW5kZWZpbmVkLCBzY29wZSlcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXNzIHRydWUgdG8gYXV0b21hdGljYWxseSBmcmVlemUgYWxsIGNvcGllcyBjcmVhdGVkIGJ5IEltbWVyLlxuXHQgKlxuXHQgKiBCeSBkZWZhdWx0LCBhdXRvLWZyZWV6aW5nIGlzIGVuYWJsZWQuXG5cdCAqL1xuXHRzZXRBdXRvRnJlZXplKHZhbHVlOiBib29sZWFuKSB7XG5cdFx0dGhpcy5hdXRvRnJlZXplXyA9IHZhbHVlXG5cdH1cblxuXHQvKipcblx0ICogUGFzcyB0cnVlIHRvIHVzZSB0aGUgRVMyMDE1IGBQcm94eWAgY2xhc3Mgd2hlbiBjcmVhdGluZyBkcmFmdHMsIHdoaWNoIGlzXG5cdCAqIGFsd2F5cyBmYXN0ZXIgdGhhbiB1c2luZyBFUzUgcHJveGllcy5cblx0ICpcblx0ICogQnkgZGVmYXVsdCwgZmVhdHVyZSBkZXRlY3Rpb24gaXMgdXNlZCwgc28gY2FsbGluZyB0aGlzIGlzIHJhcmVseSBuZWNlc3NhcnkuXG5cdCAqL1xuXHRzZXRVc2VQcm94aWVzKHZhbHVlOiBib29sZWFuKSB7XG5cdFx0aWYgKHZhbHVlICYmICFoYXNQcm94aWVzKSB7XG5cdFx0XHRkaWUoMjApXG5cdFx0fVxuXHRcdHRoaXMudXNlUHJveGllc18gPSB2YWx1ZVxuXHR9XG5cblx0YXBwbHlQYXRjaGVzPFQgZXh0ZW5kcyBPYmplY3Rpc2g+KGJhc2U6IFQsIHBhdGNoZXM6IFBhdGNoW10pOiBUIHtcblx0XHQvLyBJZiBhIHBhdGNoIHJlcGxhY2VzIHRoZSBlbnRpcmUgc3RhdGUsIHRha2UgdGhhdCByZXBsYWNlbWVudCBhcyBiYXNlXG5cdFx0Ly8gYmVmb3JlIGFwcGx5aW5nIHBhdGNoZXNcblx0XHRsZXQgaTogbnVtYmVyXG5cdFx0Zm9yIChpID0gcGF0Y2hlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuXHRcdFx0Y29uc3QgcGF0Y2ggPSBwYXRjaGVzW2ldXG5cdFx0XHRpZiAocGF0Y2gucGF0aC5sZW5ndGggPT09IDAgJiYgcGF0Y2gub3AgPT09IFwicmVwbGFjZVwiKSB7XG5cdFx0XHRcdGJhc2UgPSBwYXRjaC52YWx1ZVxuXHRcdFx0XHRicmVha1xuXHRcdFx0fVxuXHRcdH1cblx0XHQvLyBJZiB0aGVyZSB3YXMgYSBwYXRjaCB0aGF0IHJlcGxhY2VkIHRoZSBlbnRpcmUgc3RhdGUsIHN0YXJ0IGZyb20gdGhlXG5cdFx0Ly8gcGF0Y2ggYWZ0ZXIgdGhhdC5cblx0XHRpZiAoaSA+IC0xKSB7XG5cdFx0XHRwYXRjaGVzID0gcGF0Y2hlcy5zbGljZShpICsgMSlcblx0XHR9XG5cblx0XHRjb25zdCBhcHBseVBhdGNoZXNJbXBsID0gZ2V0UGx1Z2luKFwiUGF0Y2hlc1wiKS5hcHBseVBhdGNoZXNfXG5cdFx0aWYgKGlzRHJhZnQoYmFzZSkpIHtcblx0XHRcdC8vIE4uQjogbmV2ZXIgaGl0cyBpZiBzb21lIHBhdGNoIGEgcmVwbGFjZW1lbnQsIHBhdGNoZXMgYXJlIG5ldmVyIGRyYWZ0c1xuXHRcdFx0cmV0dXJuIGFwcGx5UGF0Y2hlc0ltcGwoYmFzZSwgcGF0Y2hlcylcblx0XHR9XG5cdFx0Ly8gT3RoZXJ3aXNlLCBwcm9kdWNlIGEgY29weSBvZiB0aGUgYmFzZSBzdGF0ZS5cblx0XHRyZXR1cm4gdGhpcy5wcm9kdWNlKGJhc2UsIChkcmFmdDogRHJhZnRlZCkgPT5cblx0XHRcdGFwcGx5UGF0Y2hlc0ltcGwoZHJhZnQsIHBhdGNoZXMpXG5cdFx0KVxuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcm94eTxUIGV4dGVuZHMgT2JqZWN0aXNoPihcblx0aW1tZXI6IEltbWVyLFxuXHR2YWx1ZTogVCxcblx0cGFyZW50PzogSW1tZXJTdGF0ZVxuKTogRHJhZnRlZDxULCBJbW1lclN0YXRlPiB7XG5cdC8vIHByZWNvbmRpdGlvbjogY3JlYXRlUHJveHkgc2hvdWxkIGJlIGd1YXJkZWQgYnkgaXNEcmFmdGFibGUsIHNvIHdlIGtub3cgd2UgY2FuIHNhZmVseSBkcmFmdFxuXHRjb25zdCBkcmFmdDogRHJhZnRlZCA9IGlzTWFwKHZhbHVlKVxuXHRcdD8gZ2V0UGx1Z2luKFwiTWFwU2V0XCIpLnByb3h5TWFwXyh2YWx1ZSwgcGFyZW50KVxuXHRcdDogaXNTZXQodmFsdWUpXG5cdFx0PyBnZXRQbHVnaW4oXCJNYXBTZXRcIikucHJveHlTZXRfKHZhbHVlLCBwYXJlbnQpXG5cdFx0OiBpbW1lci51c2VQcm94aWVzX1xuXHRcdD8gY3JlYXRlUHJveHlQcm94eSh2YWx1ZSwgcGFyZW50KVxuXHRcdDogZ2V0UGx1Z2luKFwiRVM1XCIpLmNyZWF0ZUVTNVByb3h5Xyh2YWx1ZSwgcGFyZW50KVxuXG5cdGNvbnN0IHNjb3BlID0gcGFyZW50ID8gcGFyZW50LnNjb3BlXyA6IGdldEN1cnJlbnRTY29wZSgpXG5cdHNjb3BlLmRyYWZ0c18ucHVzaChkcmFmdClcblx0cmV0dXJuIGRyYWZ0XG59XG4iLCAiaW1wb3J0IHtcblx0ZGllLFxuXHRpc0RyYWZ0LFxuXHRzaGFsbG93Q29weSxcblx0ZWFjaCxcblx0RFJBRlRfU1RBVEUsXG5cdGdldCxcblx0c2V0LFxuXHRJbW1lclN0YXRlLFxuXHRpc0RyYWZ0YWJsZSxcblx0QXJjaHR5cGUsXG5cdGdldEFyY2h0eXBlLFxuXHRnZXRQbHVnaW5cbn0gZnJvbSBcIi4uL2ludGVybmFsXCJcblxuLyoqIFRha2VzIGEgc25hcHNob3Qgb2YgdGhlIGN1cnJlbnQgc3RhdGUgb2YgYSBkcmFmdCBhbmQgZmluYWxpemVzIGl0IChidXQgd2l0aG91dCBmcmVlemluZykuIFRoaXMgaXMgYSBncmVhdCB1dGlsaXR5IHRvIHByaW50IHRoZSBjdXJyZW50IHN0YXRlIGR1cmluZyBkZWJ1Z2dpbmcgKG5vIFByb3hpZXMgaW4gdGhlIHdheSkuIFRoZSBvdXRwdXQgb2YgY3VycmVudCBjYW4gYWxzbyBiZSBzYWZlbHkgbGVha2VkIG91dHNpZGUgdGhlIHByb2R1Y2VyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGN1cnJlbnQ8VD4odmFsdWU6IFQpOiBUXG5leHBvcnQgZnVuY3Rpb24gY3VycmVudCh2YWx1ZTogYW55KTogYW55IHtcblx0aWYgKCFpc0RyYWZ0KHZhbHVlKSkgZGllKDIyLCB2YWx1ZSlcblx0cmV0dXJuIGN1cnJlbnRJbXBsKHZhbHVlKVxufVxuXG5mdW5jdGlvbiBjdXJyZW50SW1wbCh2YWx1ZTogYW55KTogYW55IHtcblx0aWYgKCFpc0RyYWZ0YWJsZSh2YWx1ZSkpIHJldHVybiB2YWx1ZVxuXHRjb25zdCBzdGF0ZTogSW1tZXJTdGF0ZSB8IHVuZGVmaW5lZCA9IHZhbHVlW0RSQUZUX1NUQVRFXVxuXHRsZXQgY29weTogYW55XG5cdGNvbnN0IGFyY2hUeXBlID0gZ2V0QXJjaHR5cGUodmFsdWUpXG5cdGlmIChzdGF0ZSkge1xuXHRcdGlmIChcblx0XHRcdCFzdGF0ZS5tb2RpZmllZF8gJiZcblx0XHRcdChzdGF0ZS50eXBlXyA8IDQgfHwgIWdldFBsdWdpbihcIkVTNVwiKS5oYXNDaGFuZ2VzXyhzdGF0ZSBhcyBhbnkpKVxuXHRcdClcblx0XHRcdHJldHVybiBzdGF0ZS5iYXNlX1xuXHRcdC8vIE9wdGltaXphdGlvbjogYXZvaWQgZ2VuZXJhdGluZyBuZXcgZHJhZnRzIGR1cmluZyBjb3B5aW5nXG5cdFx0c3RhdGUuZmluYWxpemVkXyA9IHRydWVcblx0XHRjb3B5ID0gY29weUhlbHBlcih2YWx1ZSwgYXJjaFR5cGUpXG5cdFx0c3RhdGUuZmluYWxpemVkXyA9IGZhbHNlXG5cdH0gZWxzZSB7XG5cdFx0Y29weSA9IGNvcHlIZWxwZXIodmFsdWUsIGFyY2hUeXBlKVxuXHR9XG5cblx0ZWFjaChjb3B5LCAoa2V5LCBjaGlsZFZhbHVlKSA9PiB7XG5cdFx0aWYgKHN0YXRlICYmIGdldChzdGF0ZS5iYXNlXywga2V5KSA9PT0gY2hpbGRWYWx1ZSkgcmV0dXJuIC8vIG5vIG5lZWQgdG8gY29weSBvciBzZWFyY2ggaW4gc29tZXRoaW5nIHRoYXQgZGlkbid0IGNoYW5nZVxuXHRcdHNldChjb3B5LCBrZXksIGN1cnJlbnRJbXBsKGNoaWxkVmFsdWUpKVxuXHR9KVxuXHQvLyBJbiB0aGUgZnV0dXJlLCB3ZSBtaWdodCBjb25zaWRlciBmcmVlemluZyBoZXJlLCBiYXNlZCBvbiB0aGUgY3VycmVudCBzZXR0aW5nc1xuXHRyZXR1cm4gYXJjaFR5cGUgPT09IEFyY2h0eXBlLlNldCA/IG5ldyBTZXQoY29weSkgOiBjb3B5XG59XG5cbmZ1bmN0aW9uIGNvcHlIZWxwZXIodmFsdWU6IGFueSwgYXJjaFR5cGU6IG51bWJlcik6IGFueSB7XG5cdC8vIGNyZWF0ZXMgYSBzaGFsbG93IGNvcHksIGV2ZW4gaWYgaXQgaXMgYSBtYXAgb3Igc2V0XG5cdHN3aXRjaCAoYXJjaFR5cGUpIHtcblx0XHRjYXNlIEFyY2h0eXBlLk1hcDpcblx0XHRcdHJldHVybiBuZXcgTWFwKHZhbHVlKVxuXHRcdGNhc2UgQXJjaHR5cGUuU2V0OlxuXHRcdFx0Ly8gU2V0IHdpbGwgYmUgY2xvbmVkIGFzIGFycmF5IHRlbXBvcmFyaWx5LCBzbyB0aGF0IHdlIGNhbiByZXBsYWNlIGluZGl2aWR1YWwgaXRlbXNcblx0XHRcdHJldHVybiBBcnJheS5mcm9tKHZhbHVlKVxuXHR9XG5cdHJldHVybiBzaGFsbG93Q29weSh2YWx1ZSlcbn1cbiIsICJpbXBvcnQge1xuXHRJbW1lclN0YXRlLFxuXHREcmFmdGVkLFxuXHRFUzVBcnJheVN0YXRlLFxuXHRFUzVPYmplY3RTdGF0ZSxcblx0ZWFjaCxcblx0aGFzLFxuXHRpc0RyYWZ0LFxuXHRsYXRlc3QsXG5cdERSQUZUX1NUQVRFLFxuXHRpcyxcblx0bG9hZFBsdWdpbixcblx0SW1tZXJTY29wZSxcblx0UHJveHlUeXBlLFxuXHRnZXRDdXJyZW50U2NvcGUsXG5cdGRpZSxcblx0bWFya0NoYW5nZWQsXG5cdG9iamVjdFRyYXBzLFxuXHRvd25LZXlzLFxuXHRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzXG59IGZyb20gXCIuLi9pbnRlcm5hbFwiXG5cbnR5cGUgRVM1U3RhdGUgPSBFUzVBcnJheVN0YXRlIHwgRVM1T2JqZWN0U3RhdGVcblxuZXhwb3J0IGZ1bmN0aW9uIGVuYWJsZUVTNSgpIHtcblx0ZnVuY3Rpb24gd2lsbEZpbmFsaXplRVM1Xyhcblx0XHRzY29wZTogSW1tZXJTY29wZSxcblx0XHRyZXN1bHQ6IGFueSxcblx0XHRpc1JlcGxhY2VkOiBib29sZWFuXG5cdCkge1xuXHRcdGlmICghaXNSZXBsYWNlZCkge1xuXHRcdFx0aWYgKHNjb3BlLnBhdGNoZXNfKSB7XG5cdFx0XHRcdG1hcmtDaGFuZ2VzUmVjdXJzaXZlbHkoc2NvcGUuZHJhZnRzXyFbMF0pXG5cdFx0XHR9XG5cdFx0XHQvLyBUaGlzIGlzIGZhc3RlciB3aGVuIHdlIGRvbid0IGNhcmUgYWJvdXQgd2hpY2ggYXR0cmlidXRlcyBjaGFuZ2VkLlxuXHRcdFx0bWFya0NoYW5nZXNTd2VlcChzY29wZS5kcmFmdHNfKVxuXHRcdH1cblx0XHQvLyBXaGVuIGEgY2hpbGQgZHJhZnQgaXMgcmV0dXJuZWQsIGxvb2sgZm9yIGNoYW5nZXMuXG5cdFx0ZWxzZSBpZiAoXG5cdFx0XHRpc0RyYWZ0KHJlc3VsdCkgJiZcblx0XHRcdChyZXN1bHRbRFJBRlRfU1RBVEVdIGFzIEVTNVN0YXRlKS5zY29wZV8gPT09IHNjb3BlXG5cdFx0KSB7XG5cdFx0XHRtYXJrQ2hhbmdlc1N3ZWVwKHNjb3BlLmRyYWZ0c18pXG5cdFx0fVxuXHR9XG5cblx0ZnVuY3Rpb24gY3JlYXRlRVM1RHJhZnQoaXNBcnJheTogYm9vbGVhbiwgYmFzZTogYW55KSB7XG5cdFx0aWYgKGlzQXJyYXkpIHtcblx0XHRcdGNvbnN0IGRyYWZ0ID0gbmV3IEFycmF5KGJhc2UubGVuZ3RoKVxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBiYXNlLmxlbmd0aDsgaSsrKVxuXHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZHJhZnQsIFwiXCIgKyBpLCBwcm94eVByb3BlcnR5KGksIHRydWUpKVxuXHRcdFx0cmV0dXJuIGRyYWZ0XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IGRlc2NyaXB0b3JzID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhiYXNlKVxuXHRcdFx0ZGVsZXRlIGRlc2NyaXB0b3JzW0RSQUZUX1NUQVRFIGFzIGFueV1cblx0XHRcdGNvbnN0IGtleXMgPSBvd25LZXlzKGRlc2NyaXB0b3JzKVxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdGNvbnN0IGtleTogYW55ID0ga2V5c1tpXVxuXHRcdFx0XHRkZXNjcmlwdG9yc1trZXldID0gcHJveHlQcm9wZXJ0eShcblx0XHRcdFx0XHRrZXksXG5cdFx0XHRcdFx0aXNBcnJheSB8fCAhIWRlc2NyaXB0b3JzW2tleV0uZW51bWVyYWJsZVxuXHRcdFx0XHQpXG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YoYmFzZSksIGRlc2NyaXB0b3JzKVxuXHRcdH1cblx0fVxuXG5cdGZ1bmN0aW9uIGNyZWF0ZUVTNVByb3h5XzxUPihcblx0XHRiYXNlOiBULFxuXHRcdHBhcmVudD86IEltbWVyU3RhdGVcblx0KTogRHJhZnRlZDxULCBFUzVPYmplY3RTdGF0ZSB8IEVTNUFycmF5U3RhdGU+IHtcblx0XHRjb25zdCBpc0FycmF5ID0gQXJyYXkuaXNBcnJheShiYXNlKVxuXHRcdGNvbnN0IGRyYWZ0ID0gY3JlYXRlRVM1RHJhZnQoaXNBcnJheSwgYmFzZSlcblxuXHRcdGNvbnN0IHN0YXRlOiBFUzVPYmplY3RTdGF0ZSB8IEVTNUFycmF5U3RhdGUgPSB7XG5cdFx0XHR0eXBlXzogaXNBcnJheSA/IFByb3h5VHlwZS5FUzVBcnJheSA6IChQcm94eVR5cGUuRVM1T2JqZWN0IGFzIGFueSksXG5cdFx0XHRzY29wZV86IHBhcmVudCA/IHBhcmVudC5zY29wZV8gOiBnZXRDdXJyZW50U2NvcGUoKSxcblx0XHRcdG1vZGlmaWVkXzogZmFsc2UsXG5cdFx0XHRmaW5hbGl6ZWRfOiBmYWxzZSxcblx0XHRcdGFzc2lnbmVkXzoge30sXG5cdFx0XHRwYXJlbnRfOiBwYXJlbnQsXG5cdFx0XHQvLyBiYXNlIGlzIHRoZSBvYmplY3Qgd2UgYXJlIGRyYWZ0aW5nXG5cdFx0XHRiYXNlXzogYmFzZSxcblx0XHRcdC8vIGRyYWZ0IGlzIHRoZSBkcmFmdCBvYmplY3QgaXRzZWxmLCB0aGF0IHRyYXBzIGFsbCByZWFkcyBhbmQgcmVhZHMgZnJvbSBlaXRoZXIgdGhlIGJhc2UgKGlmIHVubW9kaWZpZWQpIG9yIGNvcHkgKGlmIG1vZGlmaWVkKVxuXHRcdFx0ZHJhZnRfOiBkcmFmdCxcblx0XHRcdGNvcHlfOiBudWxsLFxuXHRcdFx0cmV2b2tlZF86IGZhbHNlLFxuXHRcdFx0aXNNYW51YWxfOiBmYWxzZVxuXHRcdH1cblxuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkcmFmdCwgRFJBRlRfU1RBVEUsIHtcblx0XHRcdHZhbHVlOiBzdGF0ZSxcblx0XHRcdC8vIGVudW1lcmFibGU6IGZhbHNlIDwtIHRoZSBkZWZhdWx0XG5cdFx0XHR3cml0YWJsZTogdHJ1ZVxuXHRcdH0pXG5cdFx0cmV0dXJuIGRyYWZ0XG5cdH1cblxuXHQvLyBwcm9wZXJ0eSBkZXNjcmlwdG9ycyBhcmUgcmVjeWNsZWQgdG8gbWFrZSBzdXJlIHdlIGRvbid0IGNyZWF0ZSBhIGdldCBhbmQgc2V0IGNsb3N1cmUgcGVyIHByb3BlcnR5LFxuXHQvLyBidXQgc2hhcmUgdGhlbSBhbGwgaW5zdGVhZFxuXHRjb25zdCBkZXNjcmlwdG9yczoge1twcm9wOiBzdHJpbmddOiBQcm9wZXJ0eURlc2NyaXB0b3J9ID0ge31cblxuXHRmdW5jdGlvbiBwcm94eVByb3BlcnR5KFxuXHRcdHByb3A6IHN0cmluZyB8IG51bWJlcixcblx0XHRlbnVtZXJhYmxlOiBib29sZWFuXG5cdCk6IFByb3BlcnR5RGVzY3JpcHRvciB7XG5cdFx0bGV0IGRlc2MgPSBkZXNjcmlwdG9yc1twcm9wXVxuXHRcdGlmIChkZXNjKSB7XG5cdFx0XHRkZXNjLmVudW1lcmFibGUgPSBlbnVtZXJhYmxlXG5cdFx0fSBlbHNlIHtcblx0XHRcdGRlc2NyaXB0b3JzW3Byb3BdID0gZGVzYyA9IHtcblx0XHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlLFxuXHRcdFx0XHRlbnVtZXJhYmxlLFxuXHRcdFx0XHRnZXQodGhpczogYW55KSB7XG5cdFx0XHRcdFx0Y29uc3Qgc3RhdGUgPSB0aGlzW0RSQUZUX1NUQVRFXVxuXHRcdFx0XHRcdGlmIChfX0RFVl9fKSBhc3NlcnRVbnJldm9rZWQoc3RhdGUpXG5cdFx0XHRcdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdFx0XHRcdHJldHVybiBvYmplY3RUcmFwcy5nZXQoc3RhdGUsIHByb3ApXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHNldCh0aGlzOiBhbnksIHZhbHVlKSB7XG5cdFx0XHRcdFx0Y29uc3Qgc3RhdGUgPSB0aGlzW0RSQUZUX1NUQVRFXVxuXHRcdFx0XHRcdGlmIChfX0RFVl9fKSBhc3NlcnRVbnJldm9rZWQoc3RhdGUpXG5cdFx0XHRcdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdFx0XHRcdG9iamVjdFRyYXBzLnNldChzdGF0ZSwgcHJvcCwgdmFsdWUpXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGRlc2Ncblx0fVxuXG5cdC8vIFRoaXMgbG9va3MgZXhwZW5zaXZlLCBidXQgb25seSBwcm94aWVzIGFyZSB2aXNpdGVkLCBhbmQgb25seSBvYmplY3RzIHdpdGhvdXQga25vd24gY2hhbmdlcyBhcmUgc2Nhbm5lZC5cblx0ZnVuY3Rpb24gbWFya0NoYW5nZXNTd2VlcChkcmFmdHM6IERyYWZ0ZWQ8YW55LCBJbW1lclN0YXRlPltdKSB7XG5cdFx0Ly8gVGhlIG5hdHVyYWwgb3JkZXIgb2YgZHJhZnRzIGluIHRoZSBgc2NvcGVgIGFycmF5IGlzIGJhc2VkIG9uIHdoZW4gdGhleVxuXHRcdC8vIHdlcmUgYWNjZXNzZWQuIEJ5IHByb2Nlc3NpbmcgZHJhZnRzIGluIHJldmVyc2UgbmF0dXJhbCBvcmRlciwgd2UgaGF2ZSBhXG5cdFx0Ly8gYmV0dGVyIGNoYW5jZSBvZiBwcm9jZXNzaW5nIGxlYWYgbm9kZXMgZmlyc3QuIFdoZW4gYSBsZWFmIG5vZGUgaXMga25vd24gdG9cblx0XHQvLyBoYXZlIGNoYW5nZWQsIHdlIGNhbiBhdm9pZCBhbnkgdHJhdmVyc2FsIG9mIGl0cyBhbmNlc3RvciBub2Rlcy5cblx0XHRmb3IgKGxldCBpID0gZHJhZnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG5cdFx0XHRjb25zdCBzdGF0ZTogRVM1U3RhdGUgPSBkcmFmdHNbaV1bRFJBRlRfU1RBVEVdXG5cdFx0XHRpZiAoIXN0YXRlLm1vZGlmaWVkXykge1xuXHRcdFx0XHRzd2l0Y2ggKHN0YXRlLnR5cGVfKSB7XG5cdFx0XHRcdFx0Y2FzZSBQcm94eVR5cGUuRVM1QXJyYXk6XG5cdFx0XHRcdFx0XHRpZiAoaGFzQXJyYXlDaGFuZ2VzKHN0YXRlKSkgbWFya0NoYW5nZWQoc3RhdGUpXG5cdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdGNhc2UgUHJveHlUeXBlLkVTNU9iamVjdDpcblx0XHRcdFx0XHRcdGlmIChoYXNPYmplY3RDaGFuZ2VzKHN0YXRlKSkgbWFya0NoYW5nZWQoc3RhdGUpXG5cdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0ZnVuY3Rpb24gbWFya0NoYW5nZXNSZWN1cnNpdmVseShvYmplY3Q6IGFueSkge1xuXHRcdGlmICghb2JqZWN0IHx8IHR5cGVvZiBvYmplY3QgIT09IFwib2JqZWN0XCIpIHJldHVyblxuXHRcdGNvbnN0IHN0YXRlOiBFUzVTdGF0ZSB8IHVuZGVmaW5lZCA9IG9iamVjdFtEUkFGVF9TVEFURV1cblx0XHRpZiAoIXN0YXRlKSByZXR1cm5cblx0XHRjb25zdCB7YmFzZV8sIGRyYWZ0XywgYXNzaWduZWRfLCB0eXBlX30gPSBzdGF0ZVxuXHRcdGlmICh0eXBlXyA9PT0gUHJveHlUeXBlLkVTNU9iamVjdCkge1xuXHRcdFx0Ly8gTG9vayBmb3IgYWRkZWQga2V5cy5cblx0XHRcdC8vIHByb2JhYmx5IHRoZXJlIGlzIGEgZmFzdGVyIHdheSB0byBkZXRlY3QgY2hhbmdlcywgYXMgc3dlZXAgKyByZWN1cnNlIHNlZW1zIHRvIGRvIHNvbWVcblx0XHRcdC8vIHVubmVjZXNzYXJ5IHdvcmsuXG5cdFx0XHQvLyBhbHNvOiBwcm9iYWJseSB3ZSBjYW4gc3RvcmUgdGhlIGluZm9ybWF0aW9uIHdlIGRldGVjdCBoZXJlLCB0byBzcGVlZCB1cCB0cmVlIGZpbmFsaXphdGlvbiFcblx0XHRcdGVhY2goZHJhZnRfLCBrZXkgPT4ge1xuXHRcdFx0XHRpZiAoKGtleSBhcyBhbnkpID09PSBEUkFGVF9TVEFURSkgcmV0dXJuXG5cdFx0XHRcdC8vIFRoZSBgdW5kZWZpbmVkYCBjaGVjayBpcyBhIGZhc3QgcGF0aCBmb3IgcHJlLWV4aXN0aW5nIGtleXMuXG5cdFx0XHRcdGlmICgoYmFzZV8gYXMgYW55KVtrZXldID09PSB1bmRlZmluZWQgJiYgIWhhcyhiYXNlXywga2V5KSkge1xuXHRcdFx0XHRcdGFzc2lnbmVkX1trZXldID0gdHJ1ZVxuXHRcdFx0XHRcdG1hcmtDaGFuZ2VkKHN0YXRlKVxuXHRcdFx0XHR9IGVsc2UgaWYgKCFhc3NpZ25lZF9ba2V5XSkge1xuXHRcdFx0XHRcdC8vIE9ubHkgdW50b3VjaGVkIHByb3BlcnRpZXMgdHJpZ2dlciByZWN1cnNpb24uXG5cdFx0XHRcdFx0bWFya0NoYW5nZXNSZWN1cnNpdmVseShkcmFmdF9ba2V5XSlcblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHRcdC8vIExvb2sgZm9yIHJlbW92ZWQga2V5cy5cblx0XHRcdGVhY2goYmFzZV8sIGtleSA9PiB7XG5cdFx0XHRcdC8vIFRoZSBgdW5kZWZpbmVkYCBjaGVjayBpcyBhIGZhc3QgcGF0aCBmb3IgcHJlLWV4aXN0aW5nIGtleXMuXG5cdFx0XHRcdGlmIChkcmFmdF9ba2V5XSA9PT0gdW5kZWZpbmVkICYmICFoYXMoZHJhZnRfLCBrZXkpKSB7XG5cdFx0XHRcdFx0YXNzaWduZWRfW2tleV0gPSBmYWxzZVxuXHRcdFx0XHRcdG1hcmtDaGFuZ2VkKHN0YXRlKVxuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdH0gZWxzZSBpZiAodHlwZV8gPT09IFByb3h5VHlwZS5FUzVBcnJheSkge1xuXHRcdFx0aWYgKGhhc0FycmF5Q2hhbmdlcyhzdGF0ZSBhcyBFUzVBcnJheVN0YXRlKSkge1xuXHRcdFx0XHRtYXJrQ2hhbmdlZChzdGF0ZSlcblx0XHRcdFx0YXNzaWduZWRfLmxlbmd0aCA9IHRydWVcblx0XHRcdH1cblxuXHRcdFx0aWYgKGRyYWZ0Xy5sZW5ndGggPCBiYXNlXy5sZW5ndGgpIHtcblx0XHRcdFx0Zm9yIChsZXQgaSA9IGRyYWZ0Xy5sZW5ndGg7IGkgPCBiYXNlXy5sZW5ndGg7IGkrKykgYXNzaWduZWRfW2ldID0gZmFsc2Vcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGZvciAobGV0IGkgPSBiYXNlXy5sZW5ndGg7IGkgPCBkcmFmdF8ubGVuZ3RoOyBpKyspIGFzc2lnbmVkX1tpXSA9IHRydWVcblx0XHRcdH1cblxuXHRcdFx0Ly8gTWluaW11bSBjb3VudCBpcyBlbm91Z2gsIHRoZSBvdGhlciBwYXJ0cyBoYXMgYmVlbiBwcm9jZXNzZWQuXG5cdFx0XHRjb25zdCBtaW4gPSBNYXRoLm1pbihkcmFmdF8ubGVuZ3RoLCBiYXNlXy5sZW5ndGgpXG5cblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbWluOyBpKyspIHtcblx0XHRcdFx0Ly8gT25seSB1bnRvdWNoZWQgaW5kaWNlcyB0cmlnZ2VyIHJlY3Vyc2lvbi5cblx0XHRcdFx0aWYgKCFkcmFmdF8uaGFzT3duUHJvcGVydHkoaSkpIHtcblx0XHRcdFx0XHRhc3NpZ25lZF9baV0gPSB0cnVlXG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGFzc2lnbmVkX1tpXSA9PT0gdW5kZWZpbmVkKSBtYXJrQ2hhbmdlc1JlY3Vyc2l2ZWx5KGRyYWZ0X1tpXSlcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRmdW5jdGlvbiBoYXNPYmplY3RDaGFuZ2VzKHN0YXRlOiBFUzVPYmplY3RTdGF0ZSkge1xuXHRcdGNvbnN0IHtiYXNlXywgZHJhZnRffSA9IHN0YXRlXG5cblx0XHQvLyBTZWFyY2ggZm9yIGFkZGVkIGtleXMgYW5kIGNoYW5nZWQga2V5cy4gU3RhcnQgYXQgdGhlIGJhY2ssIGJlY2F1c2Vcblx0XHQvLyBub24tbnVtZXJpYyBrZXlzIGFyZSBvcmRlcmVkIGJ5IHRpbWUgb2YgZGVmaW5pdGlvbiBvbiB0aGUgb2JqZWN0LlxuXHRcdGNvbnN0IGtleXMgPSBvd25LZXlzKGRyYWZ0Xylcblx0XHRmb3IgKGxldCBpID0ga2V5cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuXHRcdFx0Y29uc3Qga2V5OiBhbnkgPSBrZXlzW2ldXG5cdFx0XHRpZiAoa2V5ID09PSBEUkFGVF9TVEFURSkgY29udGludWVcblx0XHRcdGNvbnN0IGJhc2VWYWx1ZSA9IGJhc2VfW2tleV1cblx0XHRcdC8vIFRoZSBgdW5kZWZpbmVkYCBjaGVjayBpcyBhIGZhc3QgcGF0aCBmb3IgcHJlLWV4aXN0aW5nIGtleXMuXG5cdFx0XHRpZiAoYmFzZVZhbHVlID09PSB1bmRlZmluZWQgJiYgIWhhcyhiYXNlXywga2V5KSkge1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZVxuXHRcdFx0fVxuXHRcdFx0Ly8gT25jZSBhIGJhc2Uga2V5IGlzIGRlbGV0ZWQsIGZ1dHVyZSBjaGFuZ2VzIGdvIHVuZGV0ZWN0ZWQsIGJlY2F1c2UgaXRzXG5cdFx0XHQvLyBkZXNjcmlwdG9yIGlzIGVyYXNlZC4gVGhpcyBicmFuY2ggZGV0ZWN0cyBhbnkgbWlzc2VkIGNoYW5nZXMuXG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0Y29uc3QgdmFsdWUgPSBkcmFmdF9ba2V5XVxuXHRcdFx0XHRjb25zdCBzdGF0ZTogSW1tZXJTdGF0ZSA9IHZhbHVlICYmIHZhbHVlW0RSQUZUX1NUQVRFXVxuXHRcdFx0XHRpZiAoc3RhdGUgPyBzdGF0ZS5iYXNlXyAhPT0gYmFzZVZhbHVlIDogIWlzKHZhbHVlLCBiYXNlVmFsdWUpKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWVcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIEF0IHRoaXMgcG9pbnQsIG5vIGtleXMgd2VyZSBhZGRlZCBvciBjaGFuZ2VkLlxuXHRcdC8vIENvbXBhcmUga2V5IGNvdW50IHRvIGRldGVybWluZSBpZiBrZXlzIHdlcmUgZGVsZXRlZC5cblx0XHRjb25zdCBiYXNlSXNEcmFmdCA9ICEhYmFzZV9bRFJBRlRfU1RBVEUgYXMgYW55XVxuXHRcdHJldHVybiBrZXlzLmxlbmd0aCAhPT0gb3duS2V5cyhiYXNlXykubGVuZ3RoICsgKGJhc2VJc0RyYWZ0ID8gMCA6IDEpIC8vICsgMSB0byBjb3JyZWN0IGZvciBEUkFGVF9TVEFURVxuXHR9XG5cblx0ZnVuY3Rpb24gaGFzQXJyYXlDaGFuZ2VzKHN0YXRlOiBFUzVBcnJheVN0YXRlKSB7XG5cdFx0Y29uc3Qge2RyYWZ0X30gPSBzdGF0ZVxuXHRcdGlmIChkcmFmdF8ubGVuZ3RoICE9PSBzdGF0ZS5iYXNlXy5sZW5ndGgpIHJldHVybiB0cnVlXG5cdFx0Ly8gU2VlICMxMTZcblx0XHQvLyBJZiB3ZSBmaXJzdCBzaG9ydGVuIHRoZSBsZW5ndGgsIG91ciBhcnJheSBpbnRlcmNlcHRvcnMgd2lsbCBiZSByZW1vdmVkLlxuXHRcdC8vIElmIGFmdGVyIHRoYXQgbmV3IGl0ZW1zIGFyZSBhZGRlZCwgcmVzdWx0IGluIHRoZSBzYW1lIG9yaWdpbmFsIGxlbmd0aCxcblx0XHQvLyB0aG9zZSBsYXN0IGl0ZW1zIHdpbGwgaGF2ZSBubyBpbnRlcmNlcHRpbmcgcHJvcGVydHkuXG5cdFx0Ly8gU28gaWYgdGhlcmUgaXMgbm8gb3duIGRlc2NyaXB0b3Igb24gdGhlIGxhc3QgcG9zaXRpb24sIHdlIGtub3cgdGhhdCBpdGVtcyB3ZXJlIHJlbW92ZWQgYW5kIGFkZGVkXG5cdFx0Ly8gTi5CLjogc3BsaWNlLCB1bnNoaWZ0LCBldGMgb25seSBzaGlmdCB2YWx1ZXMgYXJvdW5kLCBidXQgbm90IHByb3AgZGVzY3JpcHRvcnMsIHNvIHdlIG9ubHkgaGF2ZSB0byBjaGVja1xuXHRcdC8vIHRoZSBsYXN0IG9uZVxuXHRcdC8vIGxhc3QgZGVzY3JpcHRvciBjYW4gYmUgbm90IGEgdHJhcCwgaWYgdGhlIGFycmF5IHdhcyBleHRlbmRlZFxuXHRcdGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFxuXHRcdFx0ZHJhZnRfLFxuXHRcdFx0ZHJhZnRfLmxlbmd0aCAtIDFcblx0XHQpXG5cdFx0Ly8gZGVzY3JpcHRvciBjYW4gYmUgbnVsbCwgYnV0IG9ubHkgZm9yIG5ld2x5IGNyZWF0ZWQgc3BhcnNlIGFycmF5cywgZWcuIG5ldyBBcnJheSgxMClcblx0XHRpZiAoZGVzY3JpcHRvciAmJiAhZGVzY3JpcHRvci5nZXQpIHJldHVybiB0cnVlXG5cdFx0Ly8gaWYgd2UgbWlzcyBhIHByb3BlcnR5LCBpdCBoYXMgYmVlbiBkZWxldGVkLCBzbyBhcnJheSBwcm9ib2JhbHkgY2hhbmdlZFxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgZHJhZnRfLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRpZiAoIWRyYWZ0Xy5oYXNPd25Qcm9wZXJ0eShpKSkgcmV0dXJuIHRydWVcblx0XHR9XG5cdFx0Ly8gRm9yIGFsbCBvdGhlciBjYXNlcywgd2UgZG9uJ3QgaGF2ZSB0byBjb21wYXJlLCBhcyB0aGV5IHdvdWxkIGhhdmUgYmVlbiBwaWNrZWQgdXAgYnkgdGhlIGluZGV4IHNldHRlcnNcblx0XHRyZXR1cm4gZmFsc2Vcblx0fVxuXG5cdGZ1bmN0aW9uIGhhc0NoYW5nZXNfKHN0YXRlOiBFUzVTdGF0ZSkge1xuXHRcdHJldHVybiBzdGF0ZS50eXBlXyA9PT0gUHJveHlUeXBlLkVTNU9iamVjdFxuXHRcdFx0PyBoYXNPYmplY3RDaGFuZ2VzKHN0YXRlKVxuXHRcdFx0OiBoYXNBcnJheUNoYW5nZXMoc3RhdGUpXG5cdH1cblxuXHRmdW5jdGlvbiBhc3NlcnRVbnJldm9rZWQoc3RhdGU6IGFueSAvKkVTNVN0YXRlIHwgTWFwU3RhdGUgfCBTZXRTdGF0ZSovKSB7XG5cdFx0aWYgKHN0YXRlLnJldm9rZWRfKSBkaWUoMywgSlNPTi5zdHJpbmdpZnkobGF0ZXN0KHN0YXRlKSkpXG5cdH1cblxuXHRsb2FkUGx1Z2luKFwiRVM1XCIsIHtcblx0XHRjcmVhdGVFUzVQcm94eV8sXG5cdFx0d2lsbEZpbmFsaXplRVM1Xyxcblx0XHRoYXNDaGFuZ2VzX1xuXHR9KVxufVxuIiwgImltcG9ydCB7aW1tZXJhYmxlfSBmcm9tIFwiLi4vaW1tZXJcIlxuaW1wb3J0IHtcblx0SW1tZXJTdGF0ZSxcblx0UGF0Y2gsXG5cdFNldFN0YXRlLFxuXHRFUzVBcnJheVN0YXRlLFxuXHRQcm94eUFycmF5U3RhdGUsXG5cdE1hcFN0YXRlLFxuXHRFUzVPYmplY3RTdGF0ZSxcblx0UHJveHlPYmplY3RTdGF0ZSxcblx0UGF0Y2hQYXRoLFxuXHRnZXQsXG5cdGVhY2gsXG5cdGhhcyxcblx0Z2V0QXJjaHR5cGUsXG5cdGlzU2V0LFxuXHRpc01hcCxcblx0bG9hZFBsdWdpbixcblx0UHJveHlUeXBlLFxuXHRBcmNodHlwZSxcblx0ZGllLFxuXHRpc0RyYWZ0LFxuXHRpc0RyYWZ0YWJsZSxcblx0Tk9USElOR1xufSBmcm9tIFwiLi4vaW50ZXJuYWxcIlxuXG5leHBvcnQgZnVuY3Rpb24gZW5hYmxlUGF0Y2hlcygpIHtcblx0Y29uc3QgUkVQTEFDRSA9IFwicmVwbGFjZVwiXG5cdGNvbnN0IEFERCA9IFwiYWRkXCJcblx0Y29uc3QgUkVNT1ZFID0gXCJyZW1vdmVcIlxuXG5cdGZ1bmN0aW9uIGdlbmVyYXRlUGF0Y2hlc18oXG5cdFx0c3RhdGU6IEltbWVyU3RhdGUsXG5cdFx0YmFzZVBhdGg6IFBhdGNoUGF0aCxcblx0XHRwYXRjaGVzOiBQYXRjaFtdLFxuXHRcdGludmVyc2VQYXRjaGVzOiBQYXRjaFtdXG5cdCk6IHZvaWQge1xuXHRcdHN3aXRjaCAoc3RhdGUudHlwZV8pIHtcblx0XHRcdGNhc2UgUHJveHlUeXBlLlByb3h5T2JqZWN0OlxuXHRcdFx0Y2FzZSBQcm94eVR5cGUuRVM1T2JqZWN0OlxuXHRcdFx0Y2FzZSBQcm94eVR5cGUuTWFwOlxuXHRcdFx0XHRyZXR1cm4gZ2VuZXJhdGVQYXRjaGVzRnJvbUFzc2lnbmVkKFxuXHRcdFx0XHRcdHN0YXRlLFxuXHRcdFx0XHRcdGJhc2VQYXRoLFxuXHRcdFx0XHRcdHBhdGNoZXMsXG5cdFx0XHRcdFx0aW52ZXJzZVBhdGNoZXNcblx0XHRcdFx0KVxuXHRcdFx0Y2FzZSBQcm94eVR5cGUuRVM1QXJyYXk6XG5cdFx0XHRjYXNlIFByb3h5VHlwZS5Qcm94eUFycmF5OlxuXHRcdFx0XHRyZXR1cm4gZ2VuZXJhdGVBcnJheVBhdGNoZXMoc3RhdGUsIGJhc2VQYXRoLCBwYXRjaGVzLCBpbnZlcnNlUGF0Y2hlcylcblx0XHRcdGNhc2UgUHJveHlUeXBlLlNldDpcblx0XHRcdFx0cmV0dXJuIGdlbmVyYXRlU2V0UGF0Y2hlcyhcblx0XHRcdFx0XHQoc3RhdGUgYXMgYW55KSBhcyBTZXRTdGF0ZSxcblx0XHRcdFx0XHRiYXNlUGF0aCxcblx0XHRcdFx0XHRwYXRjaGVzLFxuXHRcdFx0XHRcdGludmVyc2VQYXRjaGVzXG5cdFx0XHRcdClcblx0XHR9XG5cdH1cblxuXHRmdW5jdGlvbiBnZW5lcmF0ZUFycmF5UGF0Y2hlcyhcblx0XHRzdGF0ZTogRVM1QXJyYXlTdGF0ZSB8IFByb3h5QXJyYXlTdGF0ZSxcblx0XHRiYXNlUGF0aDogUGF0Y2hQYXRoLFxuXHRcdHBhdGNoZXM6IFBhdGNoW10sXG5cdFx0aW52ZXJzZVBhdGNoZXM6IFBhdGNoW11cblx0KSB7XG5cdFx0bGV0IHtiYXNlXywgYXNzaWduZWRffSA9IHN0YXRlXG5cdFx0bGV0IGNvcHlfID0gc3RhdGUuY29weV8hXG5cblx0XHQvLyBSZWR1Y2UgY29tcGxleGl0eSBieSBlbnN1cmluZyBgYmFzZWAgaXMgbmV2ZXIgbG9uZ2VyLlxuXHRcdGlmIChjb3B5Xy5sZW5ndGggPCBiYXNlXy5sZW5ndGgpIHtcblx0XHRcdC8vIEB0cy1pZ25vcmVcblx0XHRcdDtbYmFzZV8sIGNvcHlfXSA9IFtjb3B5XywgYmFzZV9dXG5cdFx0XHQ7W3BhdGNoZXMsIGludmVyc2VQYXRjaGVzXSA9IFtpbnZlcnNlUGF0Y2hlcywgcGF0Y2hlc11cblx0XHR9XG5cblx0XHQvLyBQcm9jZXNzIHJlcGxhY2VkIGluZGljZXMuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBiYXNlXy5sZW5ndGg7IGkrKykge1xuXHRcdFx0aWYgKGFzc2lnbmVkX1tpXSAmJiBjb3B5X1tpXSAhPT0gYmFzZV9baV0pIHtcblx0XHRcdFx0Y29uc3QgcGF0aCA9IGJhc2VQYXRoLmNvbmNhdChbaV0pXG5cdFx0XHRcdHBhdGNoZXMucHVzaCh7XG5cdFx0XHRcdFx0b3A6IFJFUExBQ0UsXG5cdFx0XHRcdFx0cGF0aCxcblx0XHRcdFx0XHQvLyBOZWVkIHRvIG1heWJlIGNsb25lIGl0LCBhcyBpdCBjYW4gaW4gZmFjdCBiZSB0aGUgb3JpZ2luYWwgdmFsdWVcblx0XHRcdFx0XHQvLyBkdWUgdG8gdGhlIGJhc2UvY29weSBpbnZlcnNpb24gYXQgdGhlIHN0YXJ0IG9mIHRoaXMgZnVuY3Rpb25cblx0XHRcdFx0XHR2YWx1ZTogY2xvbmVQYXRjaFZhbHVlSWZOZWVkZWQoY29weV9baV0pXG5cdFx0XHRcdH0pXG5cdFx0XHRcdGludmVyc2VQYXRjaGVzLnB1c2goe1xuXHRcdFx0XHRcdG9wOiBSRVBMQUNFLFxuXHRcdFx0XHRcdHBhdGgsXG5cdFx0XHRcdFx0dmFsdWU6IGNsb25lUGF0Y2hWYWx1ZUlmTmVlZGVkKGJhc2VfW2ldKVxuXHRcdFx0XHR9KVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFByb2Nlc3MgYWRkZWQgaW5kaWNlcy5cblx0XHRmb3IgKGxldCBpID0gYmFzZV8ubGVuZ3RoOyBpIDwgY29weV8ubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IHBhdGggPSBiYXNlUGF0aC5jb25jYXQoW2ldKVxuXHRcdFx0cGF0Y2hlcy5wdXNoKHtcblx0XHRcdFx0b3A6IEFERCxcblx0XHRcdFx0cGF0aCxcblx0XHRcdFx0Ly8gTmVlZCB0byBtYXliZSBjbG9uZSBpdCwgYXMgaXQgY2FuIGluIGZhY3QgYmUgdGhlIG9yaWdpbmFsIHZhbHVlXG5cdFx0XHRcdC8vIGR1ZSB0byB0aGUgYmFzZS9jb3B5IGludmVyc2lvbiBhdCB0aGUgc3RhcnQgb2YgdGhpcyBmdW5jdGlvblxuXHRcdFx0XHR2YWx1ZTogY2xvbmVQYXRjaFZhbHVlSWZOZWVkZWQoY29weV9baV0pXG5cdFx0XHR9KVxuXHRcdH1cblx0XHRpZiAoYmFzZV8ubGVuZ3RoIDwgY29weV8ubGVuZ3RoKSB7XG5cdFx0XHRpbnZlcnNlUGF0Y2hlcy5wdXNoKHtcblx0XHRcdFx0b3A6IFJFUExBQ0UsXG5cdFx0XHRcdHBhdGg6IGJhc2VQYXRoLmNvbmNhdChbXCJsZW5ndGhcIl0pLFxuXHRcdFx0XHR2YWx1ZTogYmFzZV8ubGVuZ3RoXG5cdFx0XHR9KVxuXHRcdH1cblx0fVxuXG5cdC8vIFRoaXMgaXMgdXNlZCBmb3IgYm90aCBNYXAgb2JqZWN0cyBhbmQgbm9ybWFsIG9iamVjdHMuXG5cdGZ1bmN0aW9uIGdlbmVyYXRlUGF0Y2hlc0Zyb21Bc3NpZ25lZChcblx0XHRzdGF0ZTogTWFwU3RhdGUgfCBFUzVPYmplY3RTdGF0ZSB8IFByb3h5T2JqZWN0U3RhdGUsXG5cdFx0YmFzZVBhdGg6IFBhdGNoUGF0aCxcblx0XHRwYXRjaGVzOiBQYXRjaFtdLFxuXHRcdGludmVyc2VQYXRjaGVzOiBQYXRjaFtdXG5cdCkge1xuXHRcdGNvbnN0IHtiYXNlXywgY29weV99ID0gc3RhdGVcblx0XHRlYWNoKHN0YXRlLmFzc2lnbmVkXyEsIChrZXksIGFzc2lnbmVkVmFsdWUpID0+IHtcblx0XHRcdGNvbnN0IG9yaWdWYWx1ZSA9IGdldChiYXNlXywga2V5KVxuXHRcdFx0Y29uc3QgdmFsdWUgPSBnZXQoY29weV8hLCBrZXkpXG5cdFx0XHRjb25zdCBvcCA9ICFhc3NpZ25lZFZhbHVlID8gUkVNT1ZFIDogaGFzKGJhc2VfLCBrZXkpID8gUkVQTEFDRSA6IEFERFxuXHRcdFx0aWYgKG9yaWdWYWx1ZSA9PT0gdmFsdWUgJiYgb3AgPT09IFJFUExBQ0UpIHJldHVyblxuXHRcdFx0Y29uc3QgcGF0aCA9IGJhc2VQYXRoLmNvbmNhdChrZXkgYXMgYW55KVxuXHRcdFx0cGF0Y2hlcy5wdXNoKG9wID09PSBSRU1PVkUgPyB7b3AsIHBhdGh9IDoge29wLCBwYXRoLCB2YWx1ZX0pXG5cdFx0XHRpbnZlcnNlUGF0Y2hlcy5wdXNoKFxuXHRcdFx0XHRvcCA9PT0gQUREXG5cdFx0XHRcdFx0PyB7b3A6IFJFTU9WRSwgcGF0aH1cblx0XHRcdFx0XHQ6IG9wID09PSBSRU1PVkVcblx0XHRcdFx0XHQ/IHtvcDogQURELCBwYXRoLCB2YWx1ZTogY2xvbmVQYXRjaFZhbHVlSWZOZWVkZWQob3JpZ1ZhbHVlKX1cblx0XHRcdFx0XHQ6IHtvcDogUkVQTEFDRSwgcGF0aCwgdmFsdWU6IGNsb25lUGF0Y2hWYWx1ZUlmTmVlZGVkKG9yaWdWYWx1ZSl9XG5cdFx0XHQpXG5cdFx0fSlcblx0fVxuXG5cdGZ1bmN0aW9uIGdlbmVyYXRlU2V0UGF0Y2hlcyhcblx0XHRzdGF0ZTogU2V0U3RhdGUsXG5cdFx0YmFzZVBhdGg6IFBhdGNoUGF0aCxcblx0XHRwYXRjaGVzOiBQYXRjaFtdLFxuXHRcdGludmVyc2VQYXRjaGVzOiBQYXRjaFtdXG5cdCkge1xuXHRcdGxldCB7YmFzZV8sIGNvcHlffSA9IHN0YXRlXG5cblx0XHRsZXQgaSA9IDBcblx0XHRiYXNlXy5mb3JFYWNoKCh2YWx1ZTogYW55KSA9PiB7XG5cdFx0XHRpZiAoIWNvcHlfIS5oYXModmFsdWUpKSB7XG5cdFx0XHRcdGNvbnN0IHBhdGggPSBiYXNlUGF0aC5jb25jYXQoW2ldKVxuXHRcdFx0XHRwYXRjaGVzLnB1c2goe1xuXHRcdFx0XHRcdG9wOiBSRU1PVkUsXG5cdFx0XHRcdFx0cGF0aCxcblx0XHRcdFx0XHR2YWx1ZVxuXHRcdFx0XHR9KVxuXHRcdFx0XHRpbnZlcnNlUGF0Y2hlcy51bnNoaWZ0KHtcblx0XHRcdFx0XHRvcDogQURELFxuXHRcdFx0XHRcdHBhdGgsXG5cdFx0XHRcdFx0dmFsdWVcblx0XHRcdFx0fSlcblx0XHRcdH1cblx0XHRcdGkrK1xuXHRcdH0pXG5cdFx0aSA9IDBcblx0XHRjb3B5XyEuZm9yRWFjaCgodmFsdWU6IGFueSkgPT4ge1xuXHRcdFx0aWYgKCFiYXNlXy5oYXModmFsdWUpKSB7XG5cdFx0XHRcdGNvbnN0IHBhdGggPSBiYXNlUGF0aC5jb25jYXQoW2ldKVxuXHRcdFx0XHRwYXRjaGVzLnB1c2goe1xuXHRcdFx0XHRcdG9wOiBBREQsXG5cdFx0XHRcdFx0cGF0aCxcblx0XHRcdFx0XHR2YWx1ZVxuXHRcdFx0XHR9KVxuXHRcdFx0XHRpbnZlcnNlUGF0Y2hlcy51bnNoaWZ0KHtcblx0XHRcdFx0XHRvcDogUkVNT1ZFLFxuXHRcdFx0XHRcdHBhdGgsXG5cdFx0XHRcdFx0dmFsdWVcblx0XHRcdFx0fSlcblx0XHRcdH1cblx0XHRcdGkrK1xuXHRcdH0pXG5cdH1cblxuXHRmdW5jdGlvbiBnZW5lcmF0ZVJlcGxhY2VtZW50UGF0Y2hlc18oXG5cdFx0YmFzZVZhbHVlOiBhbnksXG5cdFx0cmVwbGFjZW1lbnQ6IGFueSxcblx0XHRwYXRjaGVzOiBQYXRjaFtdLFxuXHRcdGludmVyc2VQYXRjaGVzOiBQYXRjaFtdXG5cdCk6IHZvaWQge1xuXHRcdHBhdGNoZXMucHVzaCh7XG5cdFx0XHRvcDogUkVQTEFDRSxcblx0XHRcdHBhdGg6IFtdLFxuXHRcdFx0dmFsdWU6IHJlcGxhY2VtZW50ID09PSBOT1RISU5HID8gdW5kZWZpbmVkIDogcmVwbGFjZW1lbnRcblx0XHR9KVxuXHRcdGludmVyc2VQYXRjaGVzLnB1c2goe1xuXHRcdFx0b3A6IFJFUExBQ0UsXG5cdFx0XHRwYXRoOiBbXSxcblx0XHRcdHZhbHVlOiBiYXNlVmFsdWVcblx0XHR9KVxuXHR9XG5cblx0ZnVuY3Rpb24gYXBwbHlQYXRjaGVzXzxUPihkcmFmdDogVCwgcGF0Y2hlczogUGF0Y2hbXSk6IFQge1xuXHRcdHBhdGNoZXMuZm9yRWFjaChwYXRjaCA9PiB7XG5cdFx0XHRjb25zdCB7cGF0aCwgb3B9ID0gcGF0Y2hcblxuXHRcdFx0bGV0IGJhc2U6IGFueSA9IGRyYWZ0XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHBhdGgubGVuZ3RoIC0gMTsgaSsrKSB7XG5cdFx0XHRcdGNvbnN0IHBhcmVudFR5cGUgPSBnZXRBcmNodHlwZShiYXNlKVxuXHRcdFx0XHRjb25zdCBwID0gXCJcIiArIHBhdGhbaV1cblx0XHRcdFx0Ly8gU2VlICM3MzgsIGF2b2lkIHByb3RvdHlwZSBwb2xsdXRpb25cblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdChwYXJlbnRUeXBlID09PSBBcmNodHlwZS5PYmplY3QgfHwgcGFyZW50VHlwZSA9PT0gQXJjaHR5cGUuQXJyYXkpICYmXG5cdFx0XHRcdFx0KHAgPT09IFwiX19wcm90b19fXCIgfHwgcCA9PT0gXCJjb25zdHJ1Y3RvclwiKVxuXHRcdFx0XHQpXG5cdFx0XHRcdFx0ZGllKDI0KVxuXHRcdFx0XHRpZiAodHlwZW9mIGJhc2UgPT09IFwiZnVuY3Rpb25cIiAmJiBwID09PSBcInByb3RvdHlwZVwiKSBkaWUoMjQpXG5cdFx0XHRcdGJhc2UgPSBnZXQoYmFzZSwgcClcblx0XHRcdFx0aWYgKHR5cGVvZiBiYXNlICE9PSBcIm9iamVjdFwiKSBkaWUoMTUsIHBhdGguam9pbihcIi9cIikpXG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHR5cGUgPSBnZXRBcmNodHlwZShiYXNlKVxuXHRcdFx0Y29uc3QgdmFsdWUgPSBkZWVwQ2xvbmVQYXRjaFZhbHVlKHBhdGNoLnZhbHVlKSAvLyB1c2VkIHRvIGNsb25lIHBhdGNoIHRvIGVuc3VyZSBvcmlnaW5hbCBwYXRjaCBpcyBub3QgbW9kaWZpZWQsIHNlZSAjNDExXG5cdFx0XHRjb25zdCBrZXkgPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV1cblx0XHRcdHN3aXRjaCAob3ApIHtcblx0XHRcdFx0Y2FzZSBSRVBMQUNFOlxuXHRcdFx0XHRcdHN3aXRjaCAodHlwZSkge1xuXHRcdFx0XHRcdFx0Y2FzZSBBcmNodHlwZS5NYXA6XG5cdFx0XHRcdFx0XHRcdHJldHVybiBiYXNlLnNldChrZXksIHZhbHVlKVxuXHRcdFx0XHRcdFx0LyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cblx0XHRcdFx0XHRcdGNhc2UgQXJjaHR5cGUuU2V0OlxuXHRcdFx0XHRcdFx0XHRkaWUoMTYpXG5cdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHQvLyBpZiB2YWx1ZSBpcyBhbiBvYmplY3QsIHRoZW4gaXQncyBhc3NpZ25lZCBieSByZWZlcmVuY2Vcblx0XHRcdFx0XHRcdFx0Ly8gaW4gdGhlIGZvbGxvd2luZyBhZGQgb3IgcmVtb3ZlIG9wcywgdGhlIHZhbHVlIGZpZWxkIGluc2lkZSB0aGUgcGF0Y2ggd2lsbCBhbHNvIGJlIG1vZGlmeWVkXG5cdFx0XHRcdFx0XHRcdC8vIHNvIHdlIHVzZSB2YWx1ZSBmcm9tIHRoZSBjbG9uZWQgcGF0Y2hcblx0XHRcdFx0XHRcdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKGJhc2Vba2V5XSA9IHZhbHVlKVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0Y2FzZSBBREQ6XG5cdFx0XHRcdFx0c3dpdGNoICh0eXBlKSB7XG5cdFx0XHRcdFx0XHRjYXNlIEFyY2h0eXBlLkFycmF5OlxuXHRcdFx0XHRcdFx0XHRyZXR1cm4ga2V5ID09PSBcIi1cIlxuXHRcdFx0XHRcdFx0XHRcdD8gYmFzZS5wdXNoKHZhbHVlKVxuXHRcdFx0XHRcdFx0XHRcdDogYmFzZS5zcGxpY2Uoa2V5IGFzIGFueSwgMCwgdmFsdWUpXG5cdFx0XHRcdFx0XHRjYXNlIEFyY2h0eXBlLk1hcDpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGJhc2Uuc2V0KGtleSwgdmFsdWUpXG5cdFx0XHRcdFx0XHRjYXNlIEFyY2h0eXBlLlNldDpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGJhc2UuYWRkKHZhbHVlKVxuXHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChiYXNlW2tleV0gPSB2YWx1ZSlcblx0XHRcdFx0XHR9XG5cdFx0XHRcdGNhc2UgUkVNT1ZFOlxuXHRcdFx0XHRcdHN3aXRjaCAodHlwZSkge1xuXHRcdFx0XHRcdFx0Y2FzZSBBcmNodHlwZS5BcnJheTpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGJhc2Uuc3BsaWNlKGtleSBhcyBhbnksIDEpXG5cdFx0XHRcdFx0XHRjYXNlIEFyY2h0eXBlLk1hcDpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGJhc2UuZGVsZXRlKGtleSlcblx0XHRcdFx0XHRcdGNhc2UgQXJjaHR5cGUuU2V0OlxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gYmFzZS5kZWxldGUocGF0Y2gudmFsdWUpXG5cdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gZGVsZXRlIGJhc2Vba2V5XVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRkaWUoMTcsIG9wKVxuXHRcdFx0fVxuXHRcdH0pXG5cblx0XHRyZXR1cm4gZHJhZnRcblx0fVxuXG5cdC8vIG9wdGltaXplOiB0aGlzIGlzIHF1aXRlIGEgcGVyZm9ybWFuY2UgaGl0LCBjYW4gd2UgZGV0ZWN0IGludGVsbGlnZW50bHkgd2hlbiBpdCBpcyBuZWVkZWQ/XG5cdC8vIEUuZy4gYXV0by1kcmFmdCB3aGVuIG5ldyBvYmplY3RzIGZyb20gb3V0c2lkZSBhcmUgYXNzaWduZWQgYW5kIG1vZGlmaWVkP1xuXHQvLyAoU2VlIGZhaWxpbmcgdGVzdCB3aGVuIGRlZXBDbG9uZSBqdXN0IHJldHVybnMgb2JqKVxuXHRmdW5jdGlvbiBkZWVwQ2xvbmVQYXRjaFZhbHVlPFQ+KG9iajogVCk6IFRcblx0ZnVuY3Rpb24gZGVlcENsb25lUGF0Y2hWYWx1ZShvYmo6IGFueSkge1xuXHRcdGlmICghaXNEcmFmdGFibGUob2JqKSkgcmV0dXJuIG9ialxuXHRcdGlmIChBcnJheS5pc0FycmF5KG9iaikpIHJldHVybiBvYmoubWFwKGRlZXBDbG9uZVBhdGNoVmFsdWUpXG5cdFx0aWYgKGlzTWFwKG9iaikpXG5cdFx0XHRyZXR1cm4gbmV3IE1hcChcblx0XHRcdFx0QXJyYXkuZnJvbShvYmouZW50cmllcygpKS5tYXAoKFtrLCB2XSkgPT4gW2ssIGRlZXBDbG9uZVBhdGNoVmFsdWUodildKVxuXHRcdFx0KVxuXHRcdGlmIChpc1NldChvYmopKSByZXR1cm4gbmV3IFNldChBcnJheS5mcm9tKG9iaikubWFwKGRlZXBDbG9uZVBhdGNoVmFsdWUpKVxuXHRcdGNvbnN0IGNsb25lZCA9IE9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaikpXG5cdFx0Zm9yIChjb25zdCBrZXkgaW4gb2JqKSBjbG9uZWRba2V5XSA9IGRlZXBDbG9uZVBhdGNoVmFsdWUob2JqW2tleV0pXG5cdFx0aWYgKGhhcyhvYmosIGltbWVyYWJsZSkpIGNsb25lZFtpbW1lcmFibGVdID0gb2JqW2ltbWVyYWJsZV1cblx0XHRyZXR1cm4gY2xvbmVkXG5cdH1cblxuXHRmdW5jdGlvbiBjbG9uZVBhdGNoVmFsdWVJZk5lZWRlZDxUPihvYmo6IFQpOiBUIHtcblx0XHRpZiAoaXNEcmFmdChvYmopKSB7XG5cdFx0XHRyZXR1cm4gZGVlcENsb25lUGF0Y2hWYWx1ZShvYmopXG5cdFx0fSBlbHNlIHJldHVybiBvYmpcblx0fVxuXG5cdGxvYWRQbHVnaW4oXCJQYXRjaGVzXCIsIHtcblx0XHRhcHBseVBhdGNoZXNfLFxuXHRcdGdlbmVyYXRlUGF0Y2hlc18sXG5cdFx0Z2VuZXJhdGVSZXBsYWNlbWVudFBhdGNoZXNfXG5cdH0pXG59XG4iLCAiLy8gdHlwZXMgb25seSFcbmltcG9ydCB7XG5cdEltbWVyU3RhdGUsXG5cdEFueU1hcCxcblx0QW55U2V0LFxuXHRNYXBTdGF0ZSxcblx0U2V0U3RhdGUsXG5cdERSQUZUX1NUQVRFLFxuXHRnZXRDdXJyZW50U2NvcGUsXG5cdGxhdGVzdCxcblx0aXRlcmF0b3JTeW1ib2wsXG5cdGlzRHJhZnRhYmxlLFxuXHRjcmVhdGVQcm94eSxcblx0bG9hZFBsdWdpbixcblx0bWFya0NoYW5nZWQsXG5cdFByb3h5VHlwZSxcblx0ZGllLFxuXHRlYWNoXG59IGZyb20gXCIuLi9pbnRlcm5hbFwiXG5cbmV4cG9ydCBmdW5jdGlvbiBlbmFibGVNYXBTZXQoKSB7XG5cdC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5cdHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZDogYW55LCBiOiBhbnkpOiBhbnkge1xuXHRcdGV4dGVuZFN0YXRpY3MgPVxuXHRcdFx0T2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG5cdFx0XHQoe19fcHJvdG9fXzogW119IGluc3RhbmNlb2YgQXJyYXkgJiZcblx0XHRcdFx0ZnVuY3Rpb24oZCwgYikge1xuXHRcdFx0XHRcdGQuX19wcm90b19fID0gYlxuXHRcdFx0XHR9KSB8fFxuXHRcdFx0ZnVuY3Rpb24oZCwgYikge1xuXHRcdFx0XHRmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXVxuXHRcdFx0fVxuXHRcdHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpXG5cdH1cblxuXHQvLyBVZ2x5IGhhY2sgdG8gcmVzb2x2ZSAjNTAyIGFuZCBpbmhlcml0IGJ1aWx0IGluIE1hcCAvIFNldFxuXHRmdW5jdGlvbiBfX2V4dGVuZHMoZDogYW55LCBiOiBhbnkpOiBhbnkge1xuXHRcdGV4dGVuZFN0YXRpY3MoZCwgYilcblx0XHRmdW5jdGlvbiBfXyh0aGlzOiBhbnkpOiBhbnkge1xuXHRcdFx0dGhpcy5jb25zdHJ1Y3RvciA9IGRcblx0XHR9XG5cdFx0ZC5wcm90b3R5cGUgPVxuXHRcdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdFx0KChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSksIG5ldyBfXygpKVxuXHR9XG5cblx0Y29uc3QgRHJhZnRNYXAgPSAoZnVuY3Rpb24oX3N1cGVyKSB7XG5cdFx0X19leHRlbmRzKERyYWZ0TWFwLCBfc3VwZXIpXG5cdFx0Ly8gQ3JlYXRlIGNsYXNzIG1hbnVhbGx5LCBjYXVzZSAjNTAyXG5cdFx0ZnVuY3Rpb24gRHJhZnRNYXAodGhpczogYW55LCB0YXJnZXQ6IEFueU1hcCwgcGFyZW50PzogSW1tZXJTdGF0ZSk6IGFueSB7XG5cdFx0XHR0aGlzW0RSQUZUX1NUQVRFXSA9IHtcblx0XHRcdFx0dHlwZV86IFByb3h5VHlwZS5NYXAsXG5cdFx0XHRcdHBhcmVudF86IHBhcmVudCxcblx0XHRcdFx0c2NvcGVfOiBwYXJlbnQgPyBwYXJlbnQuc2NvcGVfIDogZ2V0Q3VycmVudFNjb3BlKCkhLFxuXHRcdFx0XHRtb2RpZmllZF86IGZhbHNlLFxuXHRcdFx0XHRmaW5hbGl6ZWRfOiBmYWxzZSxcblx0XHRcdFx0Y29weV86IHVuZGVmaW5lZCxcblx0XHRcdFx0YXNzaWduZWRfOiB1bmRlZmluZWQsXG5cdFx0XHRcdGJhc2VfOiB0YXJnZXQsXG5cdFx0XHRcdGRyYWZ0XzogdGhpcyBhcyBhbnksXG5cdFx0XHRcdGlzTWFudWFsXzogZmFsc2UsXG5cdFx0XHRcdHJldm9rZWRfOiBmYWxzZVxuXHRcdFx0fSBhcyBNYXBTdGF0ZVxuXHRcdFx0cmV0dXJuIHRoaXNcblx0XHR9XG5cdFx0Y29uc3QgcCA9IERyYWZ0TWFwLnByb3RvdHlwZVxuXG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHAsIFwic2l6ZVwiLCB7XG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gbGF0ZXN0KHRoaXNbRFJBRlRfU1RBVEVdKS5zaXplXG5cdFx0XHR9XG5cdFx0XHQvLyBlbnVtZXJhYmxlOiBmYWxzZSxcblx0XHRcdC8vIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuXHRcdH0pXG5cblx0XHRwLmhhcyA9IGZ1bmN0aW9uKGtleTogYW55KTogYm9vbGVhbiB7XG5cdFx0XHRyZXR1cm4gbGF0ZXN0KHRoaXNbRFJBRlRfU1RBVEVdKS5oYXMoa2V5KVxuXHRcdH1cblxuXHRcdHAuc2V0ID0gZnVuY3Rpb24oa2V5OiBhbnksIHZhbHVlOiBhbnkpIHtcblx0XHRcdGNvbnN0IHN0YXRlOiBNYXBTdGF0ZSA9IHRoaXNbRFJBRlRfU1RBVEVdXG5cdFx0XHRhc3NlcnRVbnJldm9rZWQoc3RhdGUpXG5cdFx0XHRpZiAoIWxhdGVzdChzdGF0ZSkuaGFzKGtleSkgfHwgbGF0ZXN0KHN0YXRlKS5nZXQoa2V5KSAhPT0gdmFsdWUpIHtcblx0XHRcdFx0cHJlcGFyZU1hcENvcHkoc3RhdGUpXG5cdFx0XHRcdG1hcmtDaGFuZ2VkKHN0YXRlKVxuXHRcdFx0XHRzdGF0ZS5hc3NpZ25lZF8hLnNldChrZXksIHRydWUpXG5cdFx0XHRcdHN0YXRlLmNvcHlfIS5zZXQoa2V5LCB2YWx1ZSlcblx0XHRcdFx0c3RhdGUuYXNzaWduZWRfIS5zZXQoa2V5LCB0cnVlKVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRoaXNcblx0XHR9XG5cblx0XHRwLmRlbGV0ZSA9IGZ1bmN0aW9uKGtleTogYW55KTogYm9vbGVhbiB7XG5cdFx0XHRpZiAoIXRoaXMuaGFzKGtleSkpIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlXG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHN0YXRlOiBNYXBTdGF0ZSA9IHRoaXNbRFJBRlRfU1RBVEVdXG5cdFx0XHRhc3NlcnRVbnJldm9rZWQoc3RhdGUpXG5cdFx0XHRwcmVwYXJlTWFwQ29weShzdGF0ZSlcblx0XHRcdG1hcmtDaGFuZ2VkKHN0YXRlKVxuXHRcdFx0aWYgKHN0YXRlLmJhc2VfLmhhcyhrZXkpKSB7XG5cdFx0XHRcdHN0YXRlLmFzc2lnbmVkXyEuc2V0KGtleSwgZmFsc2UpXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzdGF0ZS5hc3NpZ25lZF8hLmRlbGV0ZShrZXkpXG5cdFx0XHR9XG5cdFx0XHRzdGF0ZS5jb3B5XyEuZGVsZXRlKGtleSlcblx0XHRcdHJldHVybiB0cnVlXG5cdFx0fVxuXG5cdFx0cC5jbGVhciA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0Y29uc3Qgc3RhdGU6IE1hcFN0YXRlID0gdGhpc1tEUkFGVF9TVEFURV1cblx0XHRcdGFzc2VydFVucmV2b2tlZChzdGF0ZSlcblx0XHRcdGlmIChsYXRlc3Qoc3RhdGUpLnNpemUpIHtcblx0XHRcdFx0cHJlcGFyZU1hcENvcHkoc3RhdGUpXG5cdFx0XHRcdG1hcmtDaGFuZ2VkKHN0YXRlKVxuXHRcdFx0XHRzdGF0ZS5hc3NpZ25lZF8gPSBuZXcgTWFwKClcblx0XHRcdFx0ZWFjaChzdGF0ZS5iYXNlXywga2V5ID0+IHtcblx0XHRcdFx0XHRzdGF0ZS5hc3NpZ25lZF8hLnNldChrZXksIGZhbHNlKVxuXHRcdFx0XHR9KVxuXHRcdFx0XHRzdGF0ZS5jb3B5XyEuY2xlYXIoKVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHAuZm9yRWFjaCA9IGZ1bmN0aW9uKFxuXHRcdFx0Y2I6ICh2YWx1ZTogYW55LCBrZXk6IGFueSwgc2VsZjogYW55KSA9PiB2b2lkLFxuXHRcdFx0dGhpc0FyZz86IGFueVxuXHRcdCkge1xuXHRcdFx0Y29uc3Qgc3RhdGU6IE1hcFN0YXRlID0gdGhpc1tEUkFGVF9TVEFURV1cblx0XHRcdGxhdGVzdChzdGF0ZSkuZm9yRWFjaCgoX3ZhbHVlOiBhbnksIGtleTogYW55LCBfbWFwOiBhbnkpID0+IHtcblx0XHRcdFx0Y2IuY2FsbCh0aGlzQXJnLCB0aGlzLmdldChrZXkpLCBrZXksIHRoaXMpXG5cdFx0XHR9KVxuXHRcdH1cblxuXHRcdHAuZ2V0ID0gZnVuY3Rpb24oa2V5OiBhbnkpOiBhbnkge1xuXHRcdFx0Y29uc3Qgc3RhdGU6IE1hcFN0YXRlID0gdGhpc1tEUkFGVF9TVEFURV1cblx0XHRcdGFzc2VydFVucmV2b2tlZChzdGF0ZSlcblx0XHRcdGNvbnN0IHZhbHVlID0gbGF0ZXN0KHN0YXRlKS5nZXQoa2V5KVxuXHRcdFx0aWYgKHN0YXRlLmZpbmFsaXplZF8gfHwgIWlzRHJhZnRhYmxlKHZhbHVlKSkge1xuXHRcdFx0XHRyZXR1cm4gdmFsdWVcblx0XHRcdH1cblx0XHRcdGlmICh2YWx1ZSAhPT0gc3RhdGUuYmFzZV8uZ2V0KGtleSkpIHtcblx0XHRcdFx0cmV0dXJuIHZhbHVlIC8vIGVpdGhlciBhbHJlYWR5IGRyYWZ0ZWQgb3IgcmVhc3NpZ25lZFxuXHRcdFx0fVxuXHRcdFx0Ly8gZGVzcGl0ZSB3aGF0IGl0IGxvb2tzLCB0aGlzIGNyZWF0ZXMgYSBkcmFmdCBvbmx5IG9uY2UsIHNlZSBhYm92ZSBjb25kaXRpb25cblx0XHRcdGNvbnN0IGRyYWZ0ID0gY3JlYXRlUHJveHkoc3RhdGUuc2NvcGVfLmltbWVyXywgdmFsdWUsIHN0YXRlKVxuXHRcdFx0cHJlcGFyZU1hcENvcHkoc3RhdGUpXG5cdFx0XHRzdGF0ZS5jb3B5XyEuc2V0KGtleSwgZHJhZnQpXG5cdFx0XHRyZXR1cm4gZHJhZnRcblx0XHR9XG5cblx0XHRwLmtleXMgPSBmdW5jdGlvbigpOiBJdGVyYWJsZUl0ZXJhdG9yPGFueT4ge1xuXHRcdFx0cmV0dXJuIGxhdGVzdCh0aGlzW0RSQUZUX1NUQVRFXSkua2V5cygpXG5cdFx0fVxuXG5cdFx0cC52YWx1ZXMgPSBmdW5jdGlvbigpOiBJdGVyYWJsZUl0ZXJhdG9yPGFueT4ge1xuXHRcdFx0Y29uc3QgaXRlcmF0b3IgPSB0aGlzLmtleXMoKVxuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0W2l0ZXJhdG9yU3ltYm9sXTogKCkgPT4gdGhpcy52YWx1ZXMoKSxcblx0XHRcdFx0bmV4dDogKCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHIgPSBpdGVyYXRvci5uZXh0KClcblx0XHRcdFx0XHQvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuXHRcdFx0XHRcdGlmIChyLmRvbmUpIHJldHVybiByXG5cdFx0XHRcdFx0Y29uc3QgdmFsdWUgPSB0aGlzLmdldChyLnZhbHVlKVxuXHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRkb25lOiBmYWxzZSxcblx0XHRcdFx0XHRcdHZhbHVlXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9IGFzIGFueVxuXHRcdH1cblxuXHRcdHAuZW50cmllcyA9IGZ1bmN0aW9uKCk6IEl0ZXJhYmxlSXRlcmF0b3I8W2FueSwgYW55XT4ge1xuXHRcdFx0Y29uc3QgaXRlcmF0b3IgPSB0aGlzLmtleXMoKVxuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0W2l0ZXJhdG9yU3ltYm9sXTogKCkgPT4gdGhpcy5lbnRyaWVzKCksXG5cdFx0XHRcdG5leHQ6ICgpID0+IHtcblx0XHRcdFx0XHRjb25zdCByID0gaXRlcmF0b3IubmV4dCgpXG5cdFx0XHRcdFx0LyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cblx0XHRcdFx0XHRpZiAoci5kb25lKSByZXR1cm4gclxuXHRcdFx0XHRcdGNvbnN0IHZhbHVlID0gdGhpcy5nZXQoci52YWx1ZSlcblx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0ZG9uZTogZmFsc2UsXG5cdFx0XHRcdFx0XHR2YWx1ZTogW3IudmFsdWUsIHZhbHVlXVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSBhcyBhbnlcblx0XHR9XG5cblx0XHRwW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZW50cmllcygpXG5cdFx0fVxuXG5cdFx0cmV0dXJuIERyYWZ0TWFwXG5cdH0pKE1hcClcblxuXHRmdW5jdGlvbiBwcm94eU1hcF88VCBleHRlbmRzIEFueU1hcD4odGFyZ2V0OiBULCBwYXJlbnQ/OiBJbW1lclN0YXRlKTogVCB7XG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdHJldHVybiBuZXcgRHJhZnRNYXAodGFyZ2V0LCBwYXJlbnQpXG5cdH1cblxuXHRmdW5jdGlvbiBwcmVwYXJlTWFwQ29weShzdGF0ZTogTWFwU3RhdGUpIHtcblx0XHRpZiAoIXN0YXRlLmNvcHlfKSB7XG5cdFx0XHRzdGF0ZS5hc3NpZ25lZF8gPSBuZXcgTWFwKClcblx0XHRcdHN0YXRlLmNvcHlfID0gbmV3IE1hcChzdGF0ZS5iYXNlXylcblx0XHR9XG5cdH1cblxuXHRjb25zdCBEcmFmdFNldCA9IChmdW5jdGlvbihfc3VwZXIpIHtcblx0XHRfX2V4dGVuZHMoRHJhZnRTZXQsIF9zdXBlcilcblx0XHQvLyBDcmVhdGUgY2xhc3MgbWFudWFsbHksIGNhdXNlICM1MDJcblx0XHRmdW5jdGlvbiBEcmFmdFNldCh0aGlzOiBhbnksIHRhcmdldDogQW55U2V0LCBwYXJlbnQ/OiBJbW1lclN0YXRlKSB7XG5cdFx0XHR0aGlzW0RSQUZUX1NUQVRFXSA9IHtcblx0XHRcdFx0dHlwZV86IFByb3h5VHlwZS5TZXQsXG5cdFx0XHRcdHBhcmVudF86IHBhcmVudCxcblx0XHRcdFx0c2NvcGVfOiBwYXJlbnQgPyBwYXJlbnQuc2NvcGVfIDogZ2V0Q3VycmVudFNjb3BlKCkhLFxuXHRcdFx0XHRtb2RpZmllZF86IGZhbHNlLFxuXHRcdFx0XHRmaW5hbGl6ZWRfOiBmYWxzZSxcblx0XHRcdFx0Y29weV86IHVuZGVmaW5lZCxcblx0XHRcdFx0YmFzZV86IHRhcmdldCxcblx0XHRcdFx0ZHJhZnRfOiB0aGlzLFxuXHRcdFx0XHRkcmFmdHNfOiBuZXcgTWFwKCksXG5cdFx0XHRcdHJldm9rZWRfOiBmYWxzZSxcblx0XHRcdFx0aXNNYW51YWxfOiBmYWxzZVxuXHRcdFx0fSBhcyBTZXRTdGF0ZVxuXHRcdFx0cmV0dXJuIHRoaXNcblx0XHR9XG5cdFx0Y29uc3QgcCA9IERyYWZ0U2V0LnByb3RvdHlwZVxuXG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHAsIFwic2l6ZVwiLCB7XG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gbGF0ZXN0KHRoaXNbRFJBRlRfU1RBVEVdKS5zaXplXG5cdFx0XHR9XG5cdFx0XHQvLyBlbnVtZXJhYmxlOiB0cnVlLFxuXHRcdH0pXG5cblx0XHRwLmhhcyA9IGZ1bmN0aW9uKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcblx0XHRcdGNvbnN0IHN0YXRlOiBTZXRTdGF0ZSA9IHRoaXNbRFJBRlRfU1RBVEVdXG5cdFx0XHRhc3NlcnRVbnJldm9rZWQoc3RhdGUpXG5cdFx0XHQvLyBiaXQgb2YgdHJpY2tlcnkgaGVyZSwgdG8gYmUgYWJsZSB0byByZWNvZ25pemUgYm90aCB0aGUgdmFsdWUsIGFuZCB0aGUgZHJhZnQgb2YgaXRzIHZhbHVlXG5cdFx0XHRpZiAoIXN0YXRlLmNvcHlfKSB7XG5cdFx0XHRcdHJldHVybiBzdGF0ZS5iYXNlXy5oYXModmFsdWUpXG5cdFx0XHR9XG5cdFx0XHRpZiAoc3RhdGUuY29weV8uaGFzKHZhbHVlKSkgcmV0dXJuIHRydWVcblx0XHRcdGlmIChzdGF0ZS5kcmFmdHNfLmhhcyh2YWx1ZSkgJiYgc3RhdGUuY29weV8uaGFzKHN0YXRlLmRyYWZ0c18uZ2V0KHZhbHVlKSkpXG5cdFx0XHRcdHJldHVybiB0cnVlXG5cdFx0XHRyZXR1cm4gZmFsc2Vcblx0XHR9XG5cblx0XHRwLmFkZCA9IGZ1bmN0aW9uKHZhbHVlOiBhbnkpOiBhbnkge1xuXHRcdFx0Y29uc3Qgc3RhdGU6IFNldFN0YXRlID0gdGhpc1tEUkFGVF9TVEFURV1cblx0XHRcdGFzc2VydFVucmV2b2tlZChzdGF0ZSlcblx0XHRcdGlmICghdGhpcy5oYXModmFsdWUpKSB7XG5cdFx0XHRcdHByZXBhcmVTZXRDb3B5KHN0YXRlKVxuXHRcdFx0XHRtYXJrQ2hhbmdlZChzdGF0ZSlcblx0XHRcdFx0c3RhdGUuY29weV8hLmFkZCh2YWx1ZSlcblx0XHRcdH1cblx0XHRcdHJldHVybiB0aGlzXG5cdFx0fVxuXG5cdFx0cC5kZWxldGUgPSBmdW5jdGlvbih2YWx1ZTogYW55KTogYW55IHtcblx0XHRcdGlmICghdGhpcy5oYXModmFsdWUpKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZVxuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBzdGF0ZTogU2V0U3RhdGUgPSB0aGlzW0RSQUZUX1NUQVRFXVxuXHRcdFx0YXNzZXJ0VW5yZXZva2VkKHN0YXRlKVxuXHRcdFx0cHJlcGFyZVNldENvcHkoc3RhdGUpXG5cdFx0XHRtYXJrQ2hhbmdlZChzdGF0ZSlcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdHN0YXRlLmNvcHlfIS5kZWxldGUodmFsdWUpIHx8XG5cdFx0XHRcdChzdGF0ZS5kcmFmdHNfLmhhcyh2YWx1ZSlcblx0XHRcdFx0XHQ/IHN0YXRlLmNvcHlfIS5kZWxldGUoc3RhdGUuZHJhZnRzXy5nZXQodmFsdWUpKVxuXHRcdFx0XHRcdDogLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8gZmFsc2UpXG5cdFx0XHQpXG5cdFx0fVxuXG5cdFx0cC5jbGVhciA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0Y29uc3Qgc3RhdGU6IFNldFN0YXRlID0gdGhpc1tEUkFGVF9TVEFURV1cblx0XHRcdGFzc2VydFVucmV2b2tlZChzdGF0ZSlcblx0XHRcdGlmIChsYXRlc3Qoc3RhdGUpLnNpemUpIHtcblx0XHRcdFx0cHJlcGFyZVNldENvcHkoc3RhdGUpXG5cdFx0XHRcdG1hcmtDaGFuZ2VkKHN0YXRlKVxuXHRcdFx0XHRzdGF0ZS5jb3B5XyEuY2xlYXIoKVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHAudmFsdWVzID0gZnVuY3Rpb24oKTogSXRlcmFibGVJdGVyYXRvcjxhbnk+IHtcblx0XHRcdGNvbnN0IHN0YXRlOiBTZXRTdGF0ZSA9IHRoaXNbRFJBRlRfU1RBVEVdXG5cdFx0XHRhc3NlcnRVbnJldm9rZWQoc3RhdGUpXG5cdFx0XHRwcmVwYXJlU2V0Q29weShzdGF0ZSlcblx0XHRcdHJldHVybiBzdGF0ZS5jb3B5XyEudmFsdWVzKClcblx0XHR9XG5cblx0XHRwLmVudHJpZXMgPSBmdW5jdGlvbiBlbnRyaWVzKCk6IEl0ZXJhYmxlSXRlcmF0b3I8W2FueSwgYW55XT4ge1xuXHRcdFx0Y29uc3Qgc3RhdGU6IFNldFN0YXRlID0gdGhpc1tEUkFGVF9TVEFURV1cblx0XHRcdGFzc2VydFVucmV2b2tlZChzdGF0ZSlcblx0XHRcdHByZXBhcmVTZXRDb3B5KHN0YXRlKVxuXHRcdFx0cmV0dXJuIHN0YXRlLmNvcHlfIS5lbnRyaWVzKClcblx0XHR9XG5cblx0XHRwLmtleXMgPSBmdW5jdGlvbigpOiBJdGVyYWJsZUl0ZXJhdG9yPGFueT4ge1xuXHRcdFx0cmV0dXJuIHRoaXMudmFsdWVzKClcblx0XHR9XG5cblx0XHRwW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIHRoaXMudmFsdWVzKClcblx0XHR9XG5cblx0XHRwLmZvckVhY2ggPSBmdW5jdGlvbiBmb3JFYWNoKGNiOiBhbnksIHRoaXNBcmc/OiBhbnkpIHtcblx0XHRcdGNvbnN0IGl0ZXJhdG9yID0gdGhpcy52YWx1ZXMoKVxuXHRcdFx0bGV0IHJlc3VsdCA9IGl0ZXJhdG9yLm5leHQoKVxuXHRcdFx0d2hpbGUgKCFyZXN1bHQuZG9uZSkge1xuXHRcdFx0XHRjYi5jYWxsKHRoaXNBcmcsIHJlc3VsdC52YWx1ZSwgcmVzdWx0LnZhbHVlLCB0aGlzKVxuXHRcdFx0XHRyZXN1bHQgPSBpdGVyYXRvci5uZXh0KClcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gRHJhZnRTZXRcblx0fSkoU2V0KVxuXG5cdGZ1bmN0aW9uIHByb3h5U2V0XzxUIGV4dGVuZHMgQW55U2V0Pih0YXJnZXQ6IFQsIHBhcmVudD86IEltbWVyU3RhdGUpOiBUIHtcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0cmV0dXJuIG5ldyBEcmFmdFNldCh0YXJnZXQsIHBhcmVudClcblx0fVxuXG5cdGZ1bmN0aW9uIHByZXBhcmVTZXRDb3B5KHN0YXRlOiBTZXRTdGF0ZSkge1xuXHRcdGlmICghc3RhdGUuY29weV8pIHtcblx0XHRcdC8vIGNyZWF0ZSBkcmFmdHMgZm9yIGFsbCBlbnRyaWVzIHRvIHByZXNlcnZlIGluc2VydGlvbiBvcmRlclxuXHRcdFx0c3RhdGUuY29weV8gPSBuZXcgU2V0KClcblx0XHRcdHN0YXRlLmJhc2VfLmZvckVhY2godmFsdWUgPT4ge1xuXHRcdFx0XHRpZiAoaXNEcmFmdGFibGUodmFsdWUpKSB7XG5cdFx0XHRcdFx0Y29uc3QgZHJhZnQgPSBjcmVhdGVQcm94eShzdGF0ZS5zY29wZV8uaW1tZXJfLCB2YWx1ZSwgc3RhdGUpXG5cdFx0XHRcdFx0c3RhdGUuZHJhZnRzXy5zZXQodmFsdWUsIGRyYWZ0KVxuXHRcdFx0XHRcdHN0YXRlLmNvcHlfIS5hZGQoZHJhZnQpXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0c3RhdGUuY29weV8hLmFkZCh2YWx1ZSlcblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHR9XG5cdH1cblxuXHRmdW5jdGlvbiBhc3NlcnRVbnJldm9rZWQoc3RhdGU6IGFueSAvKkVTNVN0YXRlIHwgTWFwU3RhdGUgfCBTZXRTdGF0ZSovKSB7XG5cdFx0aWYgKHN0YXRlLnJldm9rZWRfKSBkaWUoMywgSlNPTi5zdHJpbmdpZnkobGF0ZXN0KHN0YXRlKSkpXG5cdH1cblxuXHRsb2FkUGx1Z2luKFwiTWFwU2V0XCIsIHtwcm94eU1hcF8sIHByb3h5U2V0X30pXG59XG4iLCAiaW1wb3J0IHtlbmFibGVFUzV9IGZyb20gXCIuL2VzNVwiXG5pbXBvcnQge2VuYWJsZU1hcFNldH0gZnJvbSBcIi4vbWFwc2V0XCJcbmltcG9ydCB7ZW5hYmxlUGF0Y2hlc30gZnJvbSBcIi4vcGF0Y2hlc1wiXG5cbmV4cG9ydCBmdW5jdGlvbiBlbmFibGVBbGxQbHVnaW5zKCkge1xuXHRlbmFibGVFUzUoKVxuXHRlbmFibGVNYXBTZXQoKVxuXHRlbmFibGVQYXRjaGVzKClcbn1cbiIsICJpbXBvcnQge1xuXHRJUHJvZHVjZSxcblx0SVByb2R1Y2VXaXRoUGF0Y2hlcyxcblx0SW1tZXIsXG5cdERyYWZ0LFxuXHRJbW11dGFibGVcbn0gZnJvbSBcIi4vaW50ZXJuYWxcIlxuXG5leHBvcnQge1xuXHREcmFmdCxcblx0SW1tdXRhYmxlLFxuXHRQYXRjaCxcblx0UGF0Y2hMaXN0ZW5lcixcblx0b3JpZ2luYWwsXG5cdGN1cnJlbnQsXG5cdGlzRHJhZnQsXG5cdGlzRHJhZnRhYmxlLFxuXHROT1RISU5HIGFzIG5vdGhpbmcsXG5cdERSQUZUQUJMRSBhcyBpbW1lcmFibGUsXG5cdGZyZWV6ZVxufSBmcm9tIFwiLi9pbnRlcm5hbFwiXG5cbmNvbnN0IGltbWVyID0gbmV3IEltbWVyKClcblxuLyoqXG4gKiBUaGUgYHByb2R1Y2VgIGZ1bmN0aW9uIHRha2VzIGEgdmFsdWUgYW5kIGEgXCJyZWNpcGUgZnVuY3Rpb25cIiAod2hvc2VcbiAqIHJldHVybiB2YWx1ZSBvZnRlbiBkZXBlbmRzIG9uIHRoZSBiYXNlIHN0YXRlKS4gVGhlIHJlY2lwZSBmdW5jdGlvbiBpc1xuICogZnJlZSB0byBtdXRhdGUgaXRzIGZpcnN0IGFyZ3VtZW50IGhvd2V2ZXIgaXQgd2FudHMuIEFsbCBtdXRhdGlvbnMgYXJlXG4gKiBvbmx5IGV2ZXIgYXBwbGllZCB0byBhIF9fY29weV9fIG9mIHRoZSBiYXNlIHN0YXRlLlxuICpcbiAqIFBhc3Mgb25seSBhIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIFwiY3VycmllZCBwcm9kdWNlclwiIHdoaWNoIHJlbGlldmVzIHlvdVxuICogZnJvbSBwYXNzaW5nIHRoZSByZWNpcGUgZnVuY3Rpb24gZXZlcnkgdGltZS5cbiAqXG4gKiBPbmx5IHBsYWluIG9iamVjdHMgYW5kIGFycmF5cyBhcmUgbWFkZSBtdXRhYmxlLiBBbGwgb3RoZXIgb2JqZWN0cyBhcmVcbiAqIGNvbnNpZGVyZWQgdW5jb3B5YWJsZS5cbiAqXG4gKiBOb3RlOiBUaGlzIGZ1bmN0aW9uIGlzIF9fYm91bmRfXyB0byBpdHMgYEltbWVyYCBpbnN0YW5jZS5cbiAqXG4gKiBAcGFyYW0ge2FueX0gYmFzZSAtIHRoZSBpbml0aWFsIHN0YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcm9kdWNlciAtIGZ1bmN0aW9uIHRoYXQgcmVjZWl2ZXMgYSBwcm94eSBvZiB0aGUgYmFzZSBzdGF0ZSBhcyBmaXJzdCBhcmd1bWVudCBhbmQgd2hpY2ggY2FuIGJlIGZyZWVseSBtb2RpZmllZFxuICogQHBhcmFtIHtGdW5jdGlvbn0gcGF0Y2hMaXN0ZW5lciAtIG9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2l0aCBhbGwgdGhlIHBhdGNoZXMgcHJvZHVjZWQgaGVyZVxuICogQHJldHVybnMge2FueX0gYSBuZXcgc3RhdGUsIG9yIHRoZSBpbml0aWFsIHN0YXRlIGlmIG5vdGhpbmcgd2FzIG1vZGlmaWVkXG4gKi9cbmV4cG9ydCBjb25zdCBwcm9kdWNlOiBJUHJvZHVjZSA9IGltbWVyLnByb2R1Y2VcbmV4cG9ydCBkZWZhdWx0IHByb2R1Y2VcblxuLyoqXG4gKiBMaWtlIGBwcm9kdWNlYCwgYnV0IGBwcm9kdWNlV2l0aFBhdGNoZXNgIGFsd2F5cyByZXR1cm5zIGEgdHVwbGVcbiAqIFtuZXh0U3RhdGUsIHBhdGNoZXMsIGludmVyc2VQYXRjaGVzXSAoaW5zdGVhZCBvZiBqdXN0IHRoZSBuZXh0IHN0YXRlKVxuICovXG5leHBvcnQgY29uc3QgcHJvZHVjZVdpdGhQYXRjaGVzOiBJUHJvZHVjZVdpdGhQYXRjaGVzID0gaW1tZXIucHJvZHVjZVdpdGhQYXRjaGVzLmJpbmQoXG5cdGltbWVyXG4pXG5cbi8qKlxuICogUGFzcyB0cnVlIHRvIGF1dG9tYXRpY2FsbHkgZnJlZXplIGFsbCBjb3BpZXMgY3JlYXRlZCBieSBJbW1lci5cbiAqXG4gKiBBbHdheXMgZnJlZXplIGJ5IGRlZmF1bHQsIGV2ZW4gaW4gcHJvZHVjdGlvbiBtb2RlXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRBdXRvRnJlZXplID0gaW1tZXIuc2V0QXV0b0ZyZWV6ZS5iaW5kKGltbWVyKVxuXG4vKipcbiAqIFBhc3MgdHJ1ZSB0byB1c2UgdGhlIEVTMjAxNSBgUHJveHlgIGNsYXNzIHdoZW4gY3JlYXRpbmcgZHJhZnRzLCB3aGljaCBpc1xuICogYWx3YXlzIGZhc3RlciB0aGFuIHVzaW5nIEVTNSBwcm94aWVzLlxuICpcbiAqIEJ5IGRlZmF1bHQsIGZlYXR1cmUgZGV0ZWN0aW9uIGlzIHVzZWQsIHNvIGNhbGxpbmcgdGhpcyBpcyByYXJlbHkgbmVjZXNzYXJ5LlxuICovXG5leHBvcnQgY29uc3Qgc2V0VXNlUHJveGllcyA9IGltbWVyLnNldFVzZVByb3hpZXMuYmluZChpbW1lcilcblxuLyoqXG4gKiBBcHBseSBhbiBhcnJheSBvZiBJbW1lciBwYXRjaGVzIHRvIHRoZSBmaXJzdCBhcmd1bWVudC5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGEgcHJvZHVjZXIsIHdoaWNoIG1lYW5zIGNvcHktb24td3JpdGUgaXMgaW4gZWZmZWN0LlxuICovXG5leHBvcnQgY29uc3QgYXBwbHlQYXRjaGVzID0gaW1tZXIuYXBwbHlQYXRjaGVzLmJpbmQoaW1tZXIpXG5cbi8qKlxuICogQ3JlYXRlIGFuIEltbWVyIGRyYWZ0IGZyb20gdGhlIGdpdmVuIGJhc2Ugc3RhdGUsIHdoaWNoIG1heSBiZSBhIGRyYWZ0IGl0c2VsZi5cbiAqIFRoZSBkcmFmdCBjYW4gYmUgbW9kaWZpZWQgdW50aWwgeW91IGZpbmFsaXplIGl0IHdpdGggdGhlIGBmaW5pc2hEcmFmdGAgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVEcmFmdCA9IGltbWVyLmNyZWF0ZURyYWZ0LmJpbmQoaW1tZXIpXG5cbi8qKlxuICogRmluYWxpemUgYW4gSW1tZXIgZHJhZnQgZnJvbSBhIGBjcmVhdGVEcmFmdGAgY2FsbCwgcmV0dXJuaW5nIHRoZSBiYXNlIHN0YXRlXG4gKiAoaWYgbm8gY2hhbmdlcyB3ZXJlIG1hZGUpIG9yIGEgbW9kaWZpZWQgY29weS4gVGhlIGRyYWZ0IG11c3QgKm5vdCogYmVcbiAqIG11dGF0ZWQgYWZ0ZXJ3YXJkcy5cbiAqXG4gKiBQYXNzIGEgZnVuY3Rpb24gYXMgdGhlIDJuZCBhcmd1bWVudCB0byBnZW5lcmF0ZSBJbW1lciBwYXRjaGVzIGJhc2VkIG9uIHRoZVxuICogY2hhbmdlcyB0aGF0IHdlcmUgbWFkZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGZpbmlzaERyYWZ0ID0gaW1tZXIuZmluaXNoRHJhZnQuYmluZChpbW1lcilcblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGEgbm8tb3AsIGJ1dCBjYW4gYmUgdXNlZCB0byBjYXN0IGFuIGltbXV0YWJsZSB0eXBlXG4gKiB0byBhbiBkcmFmdCB0eXBlIGFuZCBtYWtlIFR5cGVTY3JpcHQgaGFwcHlcbiAqXG4gKiBAcGFyYW0gdmFsdWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhc3REcmFmdDxUPih2YWx1ZTogVCk6IERyYWZ0PFQ+IHtcblx0cmV0dXJuIHZhbHVlIGFzIGFueVxufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgYSBuby1vcCwgYnV0IGNhbiBiZSB1c2VkIHRvIGNhc3QgYSBtdXRhYmxlIHR5cGVcbiAqIHRvIGFuIGltbXV0YWJsZSB0eXBlIGFuZCBtYWtlIFR5cGVTY3JpcHQgaGFwcHlcbiAqIEBwYXJhbSB2YWx1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FzdEltbXV0YWJsZTxUPih2YWx1ZTogVCk6IEltbXV0YWJsZTxUPiB7XG5cdHJldHVybiB2YWx1ZSBhcyBhbnlcbn1cblxuZXhwb3J0IHtJbW1lcn1cblxuZXhwb3J0IHtlbmFibGVFUzV9IGZyb20gXCIuL3BsdWdpbnMvZXM1XCJcbmV4cG9ydCB7ZW5hYmxlUGF0Y2hlc30gZnJvbSBcIi4vcGx1Z2lucy9wYXRjaGVzXCJcbmV4cG9ydCB7ZW5hYmxlTWFwU2V0fSBmcm9tIFwiLi9wbHVnaW5zL21hcHNldFwiXG5leHBvcnQge2VuYWJsZUFsbFBsdWdpbnN9IGZyb20gXCIuL3BsdWdpbnMvYWxsXCJcbiIsICIvLyBTaG91bGQgYmUgbm8gaW1wb3J0cyBoZXJlIVxuXG4vLyBTb21lIHRoaW5ncyB0aGF0IHNob3VsZCBiZSBldmFsdWF0ZWQgYmVmb3JlIGFsbCBlbHNlLi4uXG5cbi8vIFdlIG9ubHkgd2FudCB0byBrbm93IGlmIG5vbi1wb2x5ZmlsbGVkIHN5bWJvbHMgYXJlIGF2YWlsYWJsZVxuY29uc3QgaGFzU3ltYm9sID1cblx0dHlwZW9mIFN5bWJvbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2YgU3ltYm9sKFwieFwiKSA9PT0gXCJzeW1ib2xcIlxuZXhwb3J0IGNvbnN0IGhhc01hcCA9IHR5cGVvZiBNYXAgIT09IFwidW5kZWZpbmVkXCJcbmV4cG9ydCBjb25zdCBoYXNTZXQgPSB0eXBlb2YgU2V0ICE9PSBcInVuZGVmaW5lZFwiXG5leHBvcnQgY29uc3QgaGFzUHJveGllcyA9XG5cdHR5cGVvZiBQcm94eSAhPT0gXCJ1bmRlZmluZWRcIiAmJlxuXHR0eXBlb2YgUHJveHkucmV2b2NhYmxlICE9PSBcInVuZGVmaW5lZFwiICYmXG5cdHR5cGVvZiBSZWZsZWN0ICE9PSBcInVuZGVmaW5lZFwiXG5cbi8qKlxuICogVGhlIHNlbnRpbmVsIHZhbHVlIHJldHVybmVkIGJ5IHByb2R1Y2VycyB0byByZXBsYWNlIHRoZSBkcmFmdCB3aXRoIHVuZGVmaW5lZC5cbiAqL1xuZXhwb3J0IGNvbnN0IE5PVEhJTkc6IE5vdGhpbmcgPSBoYXNTeW1ib2xcblx0PyBTeW1ib2wuZm9yKFwiaW1tZXItbm90aGluZ1wiKVxuXHQ6ICh7W1wiaW1tZXItbm90aGluZ1wiXTogdHJ1ZX0gYXMgYW55KVxuXG4vKipcbiAqIFRvIGxldCBJbW1lciB0cmVhdCB5b3VyIGNsYXNzIGluc3RhbmNlcyBhcyBwbGFpbiBpbW11dGFibGUgb2JqZWN0c1xuICogKGFsYmVpdCB3aXRoIGEgY3VzdG9tIHByb3RvdHlwZSksIHlvdSBtdXN0IGRlZmluZSBlaXRoZXIgYW4gaW5zdGFuY2UgcHJvcGVydHlcbiAqIG9yIGEgc3RhdGljIHByb3BlcnR5IG9uIGVhY2ggb2YgeW91ciBjdXN0b20gY2xhc3Nlcy5cbiAqXG4gKiBPdGhlcndpc2UsIHlvdXIgY2xhc3MgaW5zdGFuY2Ugd2lsbCBuZXZlciBiZSBkcmFmdGVkLCB3aGljaCBtZWFucyBpdCB3b24ndCBiZVxuICogc2FmZSB0byBtdXRhdGUgaW4gYSBwcm9kdWNlIGNhbGxiYWNrLlxuICovXG5leHBvcnQgY29uc3QgRFJBRlRBQkxFOiB1bmlxdWUgc3ltYm9sID0gaGFzU3ltYm9sXG5cdD8gU3ltYm9sLmZvcihcImltbWVyLWRyYWZ0YWJsZVwiKVxuXHQ6IChcIl9fJGltbWVyX2RyYWZ0YWJsZVwiIGFzIGFueSlcblxuZXhwb3J0IGNvbnN0IERSQUZUX1NUQVRFOiB1bmlxdWUgc3ltYm9sID0gaGFzU3ltYm9sXG5cdD8gU3ltYm9sLmZvcihcImltbWVyLXN0YXRlXCIpXG5cdDogKFwiX18kaW1tZXJfc3RhdGVcIiBhcyBhbnkpXG5cbi8vIEV2ZW4gYSBwb2x5ZmlsbGVkIFN5bWJvbCBtaWdodCBwcm92aWRlIFN5bWJvbC5pdGVyYXRvclxuZXhwb3J0IGNvbnN0IGl0ZXJhdG9yU3ltYm9sOiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID1cblx0KHR5cGVvZiBTeW1ib2wgIT0gXCJ1bmRlZmluZWRcIiAmJiBTeW1ib2wuaXRlcmF0b3IpIHx8IChcIkBAaXRlcmF0b3JcIiBhcyBhbnkpXG5cbi8qKiBVc2UgYSBjbGFzcyB0eXBlIGZvciBgbm90aGluZ2Agc28gaXRzIHR5cGUgaXMgdW5pcXVlICovXG5leHBvcnQgY2xhc3MgTm90aGluZyB7XG5cdC8vIFRoaXMgbGV0cyB1cyBkbyBgRXhjbHVkZTxULCBOb3RoaW5nPmBcblx0Ly8gQHRzLWlnbm9yZVxuXHRwcml2YXRlIF8hOiB1bmlxdWUgc3ltYm9sXG59XG4iLCAiaW1wb3J0IFwiLi9pY29uLW1hbmFnZXIubGVzc1wiO1xuXG5pbXBvcnQgeyBlbmFibGVNYXBTZXQgfSBmcm9tIFwiaW1tZXJcIjtcbmltcG9ydCB7IE1vZGFsLCBzZXRJY29uIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgUmVhY3QsIHtcbiAgY3JlYXRlQ29udGV4dCxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUmVhY3RET00gZnJvbSBcInJlYWN0LWRvbVwiO1xuaW1wb3J0IHsgdXNlSW1tZXIgfSBmcm9tIFwidXNlLWltbWVyXCI7XG5cbmltcG9ydCBQYWNrTWFuYWdlciBmcm9tIFwiLi4vaWNvbi1wYWNrcy9wYWNrLW1hbmFnZXJcIjtcbmltcG9ydCB7IEZpbGVJY29uSW5mbywgSWNvbkluZm8gfSBmcm9tIFwiLi4vaWNvbi1wYWNrcy90eXBlc1wiO1xuaW1wb3J0IEljb25TQyBmcm9tIFwiLi4vaXNjLW1haW5cIjtcbmltcG9ydCBJY29uUHJldmlldyBmcm9tIFwiLi9pY29uLXByZXZpZXdcIjtcblxuZW5hYmxlTWFwU2V0KCk7XG5cbnR5cGUgaWNvbnMgPSBSZWNvcmQ8XCJ0cmFzaFwiIHwgXCJwZW5jaWxcIiB8IFwic3RhclwiIHwgXCJjaGVja21hcmtcIiwgc3RyaW5nPjtcbmNvbnN0IGdldEljb25zID0gKCk6IGljb25zID0+IHtcbiAgY29uc3QgdGVtcEVsID0gY3JlYXRlRGl2KCksXG4gICAgcmV0dXJuczogUGFydGlhbDxpY29ucz4gPSB7fTtcbiAgZm9yIChjb25zdCBpY29uIG9mIFtcInRyYXNoXCIsIFwicGVuY2lsXCIsIFwic3RhclwiLCBcImNoZWNrbWFya1wiXSBhcyBjb25zdCkge1xuICAgIHRlbXBFbC5lbXB0eSgpO1xuICAgIHNldEljb24odGVtcEVsLCBpY29uLCAxNCk7XG4gICAgcmV0dXJuc1tpY29uXSA9IHRlbXBFbC5pbm5lckhUTUw7XG4gIH1cbiAgcmV0dXJuIHJldHVybnMgYXMgaWNvbnM7XG59O1xuXG5leHBvcnQgY29uc3QgQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8eyBwYWNrczogUGFja01hbmFnZXI7IGljb25zOiBpY29ucyB9PihcbiAgbnVsbCBhcyBhbnksXG4pO1xuXG5jb25zdCBBTExfVVBEQVRFX0tFWSA9IFwiJUFMTCVcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSWNvbk1hbmFnZXIgZXh0ZW5kcyBNb2RhbCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwbHVnaW46IEljb25TQywgcHVibGljIHBhY2s6IHN0cmluZykge1xuICAgIHN1cGVyKHBsdWdpbi5hcHApO1xuICAgIHRoaXMudGl0bGVFbC5zZXRUZXh0KGAke3BhY2t9IEljb25zYCk7XG4gICAgdGhpcy5tb2RhbEVsLmFkZENsYXNzZXMoW1wiaXNjLWljb24tbWFuYWdlclwiLCBcIm1vZC1jb21tdW5pdHktdGhlbWVcIl0pO1xuICB9XG5cbiAgYXN5bmMgb25PcGVuKCkge1xuICAgIHRoaXMuY29udGVudEVsLmVtcHR5KCk7XG4gICAgUmVhY3RET00ucmVuZGVyKFxuICAgICAgPENvbnRleHQuUHJvdmlkZXJcbiAgICAgICAgdmFsdWU9e3sgcGFja3M6IHRoaXMucGx1Z2luLnBhY2tNYW5hZ2VyLCBpY29uczogZ2V0SWNvbnMoKSB9fVxuICAgICAgPlxuICAgICAgICA8SWNvbnMgcGFjaz17dGhpcy5wYWNrfSAvPlxuICAgICAgPC9Db250ZXh0LlByb3ZpZGVyPixcbiAgICAgIHRoaXMuY29udGVudEVsLFxuICAgICk7XG4gIH1cbiAgb25DbG9zZSgpIHtcbiAgICBSZWFjdERPTS51bm1vdW50Q29tcG9uZW50QXROb2RlKHRoaXMuY29udGVudEVsKTtcbiAgfVxufVxuY29uc3QgY29tcGFyZUljb25JZCA9IChhOiBJY29uSW5mbywgYjogSWNvbkluZm8pOiBudW1iZXIgPT5cbiAgYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKTtcbmNvbnN0IEljb25zID0gKHsgcGFjayB9OiB7IHBhY2s6IHN0cmluZyB9KSA9PiB7XG4gIGlmIChwYWNrID09PSBcImVtb2ppXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJFbW9qaSBub3Qgc3VwcG9ydGVkXCIpO1xuXG4gIGNvbnN0IHsgcGFja3MgfSA9IHVzZUNvbnRleHQoQ29udGV4dCk7XG4gIGNvbnN0IFtmaWx0ZXIsIHNldEZpbHRlcl0gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW2FmZmVjdGVkLCBzZXRBZmZlY3RlZF0gPSB1c2VJbW1lcihuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpKTtcbiAgY29uc3QgaWRzID0gdXNlTWVtbyhcbiAgICAoKSA9PiB7XG4gICAgICBsZXQgYXJyID0gcGFja3NcbiAgICAgICAgLnNlYXJjaChmaWx0ZXIgPyBmaWx0ZXIudHJpbSgpLnNwbGl0KFwiIFwiKSA6IFtdLCBbcGFja10sIEluZmluaXR5KVxuICAgICAgICAvLyBhZGQgYW4gdXBkYXRlZCBwcm9wZXJ0eSB0byBmb3JjZSBhbiBpY29uIHVwZGF0ZSBpbnRlcm5hbGx5XG4gICAgICAgIC5tYXAoKHsgaXRlbSB9KSA9PiBpdGVtIGFzIEZpbGVJY29uSW5mbyk7XG4gICAgICBpZiAoIWZpbHRlcikgYXJyLnNvcnQoY29tcGFyZUljb25JZCk7XG4gICAgICByZXR1cm4gYXJyO1xuICAgIH0sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICAgIFtmaWx0ZXIsIHBhY2ssIGFmZmVjdGVkXSxcbiAgKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBldmVudFJlZiA9IHBhY2tzLm9uKFwiY2hhbmdlZFwiLCAoX2FwaSwgYWZmZWN0ZWQpID0+XG4gICAgICBzZXRBZmZlY3RlZCgoZHJhZnQpID0+IHtcbiAgICAgICAgaWYgKGFmZmVjdGVkKVxuICAgICAgICAgIGFmZmVjdGVkLmZvckVhY2goKGlkOiBzdHJpbmcpID0+XG4gICAgICAgICAgICBkcmFmdC5zZXQoaWQsIChkcmFmdC5nZXQoaWQpIHx8IDApICsgMSksXG4gICAgICAgICAgKTtcbiAgICAgICAgZWxzZSBkcmFmdC5zZXQoQUxMX1VQREFURV9LRVksIChkcmFmdC5nZXQoQUxMX1VQREFURV9LRVkpIHx8IDApICsgMSk7XG4gICAgICB9KSxcbiAgICApO1xuICAgIHJldHVybiAoKSA9PiBwYWNrcy5vZmZyZWYoZXZlbnRSZWYpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW3BhY2tzXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWx0ZXJcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRmlsdGVyXCJcbiAgICAgICAgICB2YWx1ZT17ZmlsdGVyfVxuICAgICAgICAgIG9uQ2hhbmdlPXsoZXZ0KSA9PiBzZXRGaWx0ZXIoZXZ0LnRhcmdldC52YWx1ZSl9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaWNvbnNcIj5cbiAgICAgICAge2lkcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICBjb25zdCB1cGRhdGVkID1cbiAgICAgICAgICAgIChhZmZlY3RlZC5nZXQoaXRlbS5pZCkgPz8gMCkgKyAoYWZmZWN0ZWQuZ2V0KEFMTF9VUERBVEVfS0VZKSA/PyAwKTtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEljb25QcmV2aWV3XG4gICAgICAgICAgICAgIGljb25JbmZvPXtpdGVtfVxuICAgICAgICAgICAgICB1cGRhdGVkPXt1cGRhdGVkfVxuICAgICAgICAgICAgICBrZXk9e2l0ZW0uaWQgKyB1cGRhdGVkfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApO1xuICAgICAgICB9KX1cbiAgICAgIDwvZGl2PlxuICAgIDwvPlxuICApO1xufTtcbiIsICJpbXBvcnQgcHJvZHVjZSwgeyBEcmFmdCwgbm90aGluZywgZnJlZXplIH0gZnJvbSBcImltbWVyXCI7XG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlUmVkdWNlciwgdXNlQ2FsbGJhY2ssIHVzZU1lbW8sIERpc3BhdGNoIH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCB0eXBlIFJlZHVjZXI8UyA9IGFueSwgQSA9IGFueT4gPSAoXG4gIGRyYWZ0U3RhdGU6IERyYWZ0PFM+LFxuICBhY3Rpb246IEFcbikgPT4gdm9pZCB8IChTIGV4dGVuZHMgdW5kZWZpbmVkID8gdHlwZW9mIG5vdGhpbmcgOiBTKTtcbmV4cG9ydCB0eXBlIERyYWZ0RnVuY3Rpb248Uz4gPSAoZHJhZnQ6IERyYWZ0PFM+KSA9PiB2b2lkO1xuZXhwb3J0IHR5cGUgVXBkYXRlcjxTPiA9IChhcmc6IFMgfCBEcmFmdEZ1bmN0aW9uPFM+KSA9PiB2b2lkO1xuZXhwb3J0IHR5cGUgSW1tZXJIb29rPFM+ID0gW1MsIFVwZGF0ZXI8Uz5dO1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUltbWVyPFMgPSBhbnk+KGluaXRpYWxWYWx1ZTogUyB8ICgoKSA9PiBTKSk6IEltbWVySG9vazxTPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUltbWVyKGluaXRpYWxWYWx1ZTogYW55KSB7XG4gIGNvbnN0IFt2YWwsIHVwZGF0ZVZhbHVlXSA9IHVzZVN0YXRlKCgpID0+XG4gICAgZnJlZXplKFxuICAgICAgdHlwZW9mIGluaXRpYWxWYWx1ZSA9PT0gXCJmdW5jdGlvblwiID8gaW5pdGlhbFZhbHVlKCkgOiBpbml0aWFsVmFsdWUsXG4gICAgICB0cnVlXG4gICAgKVxuICApO1xuICByZXR1cm4gW1xuICAgIHZhbCxcbiAgICB1c2VDYWxsYmFjaygodXBkYXRlcikgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB1cGRhdGVyID09PSBcImZ1bmN0aW9uXCIpIHVwZGF0ZVZhbHVlKHByb2R1Y2UodXBkYXRlcikpO1xuICAgICAgZWxzZSB1cGRhdGVWYWx1ZShmcmVlemUodXBkYXRlcikpO1xuICAgIH0sIFtdKSxcbiAgXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUltbWVyUmVkdWNlcjxTID0gYW55LCBBID0gYW55PihcbiAgcmVkdWNlcjogUmVkdWNlcjxTLCBBPixcbiAgaW5pdGlhbFN0YXRlOiBTLFxuICBpbml0aWFsQWN0aW9uPzogKGluaXRpYWw6IGFueSkgPT4gU1xuKTogW1MsIERpc3BhdGNoPEE+XTtcbmV4cG9ydCBmdW5jdGlvbiB1c2VJbW1lclJlZHVjZXIoXG4gIHJlZHVjZXI6IGFueSxcbiAgaW5pdGlhbFN0YXRlOiBhbnksXG4gIGluaXRpYWxBY3Rpb246IGFueVxuKSB7XG4gIGNvbnN0IGNhY2hlZFJlZHVjZXIgPSB1c2VNZW1vKCgpID0+IHByb2R1Y2UocmVkdWNlciksIFtyZWR1Y2VyXSk7XG4gIHJldHVybiB1c2VSZWR1Y2VyKGNhY2hlZFJlZHVjZXIsIGluaXRpYWxTdGF0ZSBhcyBhbnksIGluaXRpYWxBY3Rpb24pO1xufVxuIiwgImltcG9ydCBcIi4uL2ludmFsaWQubGVzc1wiO1xuXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XG5pbXBvcnQgeyBOb3RpY2UgfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCBSZWFjdCwge1xuICBIVE1MQXR0cmlidXRlcyxcbiAgVGV4dGFyZWFIVE1MQXR0cmlidXRlcyxcbiAgdXNlQ29udGV4dCxcbiAgdXNlTWVtbyxcbiAgdXNlU3RhdGUsXG59IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBGaWxlSWNvbkluZm8gfSBmcm9tIFwiLi4vaWNvbi1wYWNrcy90eXBlc1wiO1xuaW1wb3J0IHsgc2FuaXRpemVOYW1lIH0gZnJvbSBcIi4uL2ljb24tcGFja3MvdXRpbHNcIjtcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tIFwiLi9pY29uLW1hbmFnZXJcIjtcblxuaW50ZXJmYWNlIEljb25QcmV2aWV3UHJvcHMge1xuICBpY29uSW5mbzogRmlsZUljb25JbmZvO1xuICB1cGRhdGVkOiBudW1iZXI7XG59XG5cbmNvbnN0IEljb25QcmV2aWV3ID0gKHsgaWNvbkluZm8sIHVwZGF0ZWQgfTogSWNvblByZXZpZXdQcm9wcykgPT4ge1xuICBjb25zdCB7IHBhY2tzLCBpY29ucyB9ID0gdXNlQ29udGV4dChDb250ZXh0KSxcbiAgICB7IHRyYXNoLCBwZW5jaWwsIHN0YXIsIGNoZWNrbWFyayB9ID0gaWNvbnM7XG5cbiAgY29uc3QgW2lucHV0LCBzZXRJbnB1dF0gPSB1c2VTdGF0ZShpY29uSW5mby5uYW1lLnJlcGxhY2UoL1stX10vZywgXCIgXCIpKSxcbiAgICBbaXNFZGl0aW5nLCBzZXRJc0VkaXRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IGlucHV0SWQgPSBgJHtpY29uSW5mby5wYWNrfV8ke3Nhbml0aXplTmFtZShpbnB1dCl9YCxcbiAgICBpc0lucHV0VmFpbGQgPSBpbnB1dElkID09PSBpY29uSW5mby5pZCB8fCAhcGFja3MuaGFzSWNvbihpbnB1dElkKTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIGNvbnN0IGljb25TcmMgPSB1c2VNZW1vKFxuICAgICgpID0+IHBhY2tzLmdldEljb24oaWNvbkluZm8uaWQsIHRydWUpLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgICBbaWNvbkluZm8uaWQsIHVwZGF0ZWRdLFxuICApO1xuICBjb25zdCByZW5hbWVJY29uID0gYXN5bmMgKHJlbmFtZVRvOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBuZXdOYW1lID0gYXdhaXQgcGFja3MucmVuYW1lKGljb25JbmZvLmlkLCByZW5hbWVUbyk7XG4gICAgaWYgKCFuZXdOYW1lKVxuICAgICAgbmV3IE5vdGljZShgRmFpbGVkIHRvIHJlbmFtZSB0byAke2lucHV0fSwgY2hlY2sgbG9nIGZvciBkZXRhaWxzYCk7XG4gICAgZWxzZSB7XG4gICAgICBuZXcgTm90aWNlKGBUaGUgaWNvbiBpcyByZW5hbWVkIHRvICR7bmV3TmFtZX1gKTtcbiAgICAgIHNldElzRWRpdGluZyhmYWxzZSk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJpdGVtXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImljb25cIj5cbiAgICAgICAgPGltZyBjbGFzc05hbWU9XCJpc2MtaWNvblwiIHNyYz17aWNvblNyYyA/PyB1bmRlZmluZWR9IC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibmFtZVwiPlxuICAgICAgICB7aXNFZGl0aW5nID8gKFxuICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICBjbGFzc05hbWU9e2Nscyh7IGludmFsaWQ6ICFpc0lucHV0VmFpbGQgfSl9XG4gICAgICAgICAgICBvbkNoYW5nZT17KGV2dCkgPT4gc2V0SW5wdXQoZXZ0LnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICB2YWx1ZT17aW5wdXR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8c3Bhbj57aW5wdXR9PC9zcGFuPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImJ1dHRvbnNcIj5cbiAgICAgICAgPE9iQnV0dG9uXG4gICAgICAgICAgYnRuVHlwZT1cImN0YVwiXG4gICAgICAgICAgaWNvbj17c3Rhcn1cbiAgICAgICAgICBvbkNsaWNrPXthc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBsZXQgbmV3TmFtZTtcbiAgICAgICAgICAgIGlmICgobmV3TmFtZSA9IGF3YWl0IHBhY2tzLnN0YXIoaWNvbkluZm8uaWQpKSkge1xuICAgICAgICAgICAgICBuZXcgTm90aWNlKGAke2ljb25JbmZvLmlkfSBpcyBub3cgJHtuZXdOYW1lfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICAgIDxPYkJ1dHRvblxuICAgICAgICAgIGJ0blR5cGU9XCJjdGFcIlxuICAgICAgICAgIGljb249e2lzRWRpdGluZyA/IGNoZWNrbWFyayA6IHBlbmNpbH1cbiAgICAgICAgICBvbkNsaWNrPXthc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNFZGl0aW5nKSB7XG4gICAgICAgICAgICAgIGlmIChpc0lucHV0VmFpbGQpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXRJZCAhPT0gaWNvbkluZm8uaWQpIHtcbiAgICAgICAgICAgICAgICAgIGF3YWl0IHJlbmFtZUljb24oaW5wdXRJZCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHNldElzRWRpdGluZyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5ldyBOb3RpY2UoYFVuYWJsZSB0byByZW5hbWUgdG8gJHtpbnB1dH0sIGdpdmVuIGlkIGludmFsaWRgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc2V0SXNFZGl0aW5nKHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICAgIDxPYkJ1dHRvblxuICAgICAgICAgIGJ0blR5cGU9XCJ3YXJuaW5nXCJcbiAgICAgICAgICBpY29uPXt0cmFzaH1cbiAgICAgICAgICBvbkNsaWNrPXthc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGFja3MuZGVsZXRlKGljb25JbmZvLmlkKSkge1xuICAgICAgICAgICAgICBuZXcgTm90aWNlKGAke2ljb25JbmZvLmlkfSBpcyByZW1vdmVkIGZyb20gdGhlIHBhY2tgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBJY29uUHJldmlldztcblxuY29uc3QgT2JCdXR0b24gPSAoXG4gIHByb3BzOiBIVE1MQXR0cmlidXRlczxIVE1MQnV0dG9uRWxlbWVudD4gJiB7XG4gICAgYnRuVHlwZT86IFwid2FybmluZ1wiIHwgXCJjdGFcIjtcbiAgICBpbnZhbGlkPzogYm9vbGVhbjtcbiAgICBpY29uOiBzdHJpbmc7XG4gIH0sXG4pID0+IHtcbiAgY29uc3QgeyBidG5UeXBlLCBpY29uLCAuLi5yZXN0IH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8YnV0dG9uXG4gICAgICB7Li4ucmVzdH1cbiAgICAgIGNsYXNzTmFtZT17Y2xzKHsgW1wibW9kLVwiICsgYnRuVHlwZV06ICEhYnRuVHlwZSB9KX1cbiAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7IF9faHRtbDogaWNvbiB9fVxuICAgIC8+XG4gICk7XG59O1xuXG5jb25zdCBUZXh0ID0gKFxuICBwcm9wczogUGljazxcbiAgICBUZXh0YXJlYUhUTUxBdHRyaWJ1dGVzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+LFxuICAgIFwib25DaGFuZ2VcIiB8IFwidmFsdWVcIiB8IFwiY2xhc3NOYW1lXCJcbiAgPixcbikgPT4gPHRleHRhcmVhIHNwZWxsQ2hlY2s9XCJmYWxzZVwiIHJvd3M9ezJ9IHsuLi5wcm9wc30gLz47XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7OzswMHRJQUFBLG1CQVdBLEdBQU8sUUFBVSxPQ1hqQixnQ0EwQkEsWUFBb0IsRUFBTSxDQUN4QixHQUFJLE1BQU8sSUFBUyxTQUNsQixLQUFNLElBQUksV0FBVSxtQ0FBcUMsS0FBSyxVQUFVLENBQUksQ0FBQyxDQUVqRixDQUdBLFlBQThCLEVBQU0sRUFBZ0IsQ0FNbEQsT0FMSSxHQUFNLEdBQ04sRUFBb0IsRUFDcEIsRUFBWSxHQUNaLEVBQU8sRUFDUCxFQUNLLEVBQUksRUFBRyxHQUFLLEVBQUssT0FBUSxFQUFFLEVBQUcsQ0FDckMsR0FBSSxFQUFJLEVBQUssT0FDWCxFQUFPLEVBQUssV0FBVyxDQUFDLE1BQ3JCLElBQUksSUFBUyxHQUNoQixNQUVBLEVBQU8sR0FDVCxHQUFJLElBQVMsR0FBVSxDQUNyQixHQUFJLE1BQWMsRUFBSSxHQUFLLElBQVMsR0FFN0IsR0FBSSxJQUFjLEVBQUksR0FBSyxJQUFTLEVBQUcsQ0FDNUMsR0FBSSxFQUFJLE9BQVMsR0FBSyxJQUFzQixHQUFLLEVBQUksV0FBVyxFQUFJLE9BQVMsQ0FBQyxJQUFNLElBQVksRUFBSSxXQUFXLEVBQUksT0FBUyxDQUFDLElBQU0sSUFDakksR0FBSSxFQUFJLE9BQVMsRUFBRyxDQUNsQixHQUFJLEdBQWlCLEVBQUksWUFBWSxHQUFHLEVBQ3hDLEdBQUksSUFBbUIsRUFBSSxPQUFTLEVBQUcsQ0FDckMsQUFBSSxJQUFtQixHQUNyQixHQUFNLEdBQ04s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TUFBTyxHQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTyxHQUFFLEdBQUcsT0FBTyxDQUFDLE9BQVEsR0FBRSxBQUFZLE1BQU8sVUFBbkIsWUFBNEIsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU8sRUFBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLEdBQUksR0FBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsb0VBQW9FLEVBQUUsT0FBTyxTQUFTLEVBQUUsQ0FBQyxPQUFRLEdBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEFBQVcsRUFBRSxVQUFVLENBQUMsSUFBeEIsU0FBMEIsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFHLEdBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssR0FBSSxHQUFFLEVBQUUsV0FBVyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxXQUFXLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFdBQVcsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRyxHQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUcsSUFBRyxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsRUFBRSxNQUFPLEdBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLE9BQU8sU0FBUyxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsTUFBTSxJQUFJLEVBQUUsS0FBTSxJQUFJLE9BQU0saURBQWlELEVBQUUsR0FBSSxHQUFFLEVBQUUsRUFBRyxHQUFFLEVBQUUsUUFBUSxzQkFBc0IsRUFBRSxHQUFHLE9BQU8sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBTSxJQUFJLE9BQU0sMkNBQTJDLEVBQUUsSUFBSSxFQUFFLEVBQUUsV0FBVyxHQUFJLFlBQVcsRUFBRSxDQUFDLEVBQUUsR0FBSSxPQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxHQUFHLENBQUMsR0FBRyxFQUFHLEdBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUcsSUFBRyxJQUFJLEVBQUcsR0FBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRyxHQUFFLElBQUksRUFBRyxHQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsQUFBSyxJQUFMLElBQVMsR0FBRSxLQUFLLEdBQUcsQUFBSyxJQUFMLElBQVMsR0FBRSxLQUFLLEdBQUcsTUFBTyxFQUFDLENBQUMsRUFBRSxDQUFDLFlBQVksR0FBRyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsYUFBYSxHQUFJLEdBQUUsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLHFCQUFxQixFQUFFLEVBQUUsRUFBRSxxQkFBcUIsRUFBRSxFQUFFLEVBQUUsMEJBQTBCLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLGVBQWUsRUFBRSxLQUFLLGlCQUFpQixFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssWUFBWSxFQUFFLEtBQUssa0JBQWtCLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxpQkFBaUIsVUFBVSxDQUFDLEdBQUksR0FBRSxHQUFJLEdBQUUsRUFBRSxRQUFRLFFBQVEsS0FBSyxpQkFBaUIsQ0FBQyxFQUFFLEtBQUssS0FBSyxZQUFZLGlCQUFpQixDQUFDLEVBQUUsS0FBSyxHQUFJLEdBQUUsYUFBYSxDQUFDLEVBQUUsRUFBRSxLQUFLLE1BQU8sR0FBRSxHQUFHLE1BQU0sVUFBVSxDQUFDLEdBQUcsS0FBSyxXQUFXLGNBQWMsRUFBRSxpQkFBaUIsS0FBTSxJQUFJLE9BQU0sdUNBQXVDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxvQkFBb0IsVUFBVSxDQUFDLE1BQU8sSUFBSSxHQUFFLEVBQUUsUUFBUSxRQUFRLEtBQUssaUJBQWlCLENBQUMsRUFBRSxlQUFlLGlCQUFpQixLQUFLLGNBQWMsRUFBRSxlQUFlLG1CQUFtQixLQUFLLGdCQUFnQixFQUFFLGVBQWUsUUFBUSxLQUFLLEtBQUssRUFBRSxlQUFlLGNBQWMsS0FBSyxXQUFXLENBQUMsQ0FBQyxFQUFFLEVBQUUsaUJBQWlCLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxNQUFPLEdBQUUsS0FBSyxHQUFJLEVBQUMsRUFBRSxLQUFLLEdBQUksR0FBRSxrQkFBa0IsQ0FBQyxFQUFFLEtBQUssRUFBRSxlQUFlLENBQUMsQ0FBQyxFQUFFLEtBQUssR0FBSSxHQUFFLGdCQUFnQixDQUFDLEVBQUUsZUFBZSxjQUFjLENBQUMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsc0JBQXNCLEdBQUcsMkJBQTJCLEdBQUcsc0JBQXNCLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsYUFBYSxHQUFJLEdBQUUsRUFBRSx3QkFBd0IsRUFBRSxFQUFFLE1BQU0sQ0FBQyxNQUFNLE9BQU8sZUFBZSxTQUFTLEVBQUUsQ0FBQyxNQUFPLElBQUksR0FBRSxtQkFBbUIsQ0FBQyxFQUFFLGlCQUFpQixVQUFVLENBQUMsTUFBTyxJQUFJLEdBQUUscUJBQXFCLENBQUMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLHlCQUF5QixFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBSSxHQUFFLEVBQUUsU0FBUyxFQUFNLEVBQUUsVUFBVSxDQUFDLE9BQVEsR0FBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUUsT0FBUSxHQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsV0FBVyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTyxFQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsU0FBUyxFQUFFLEVBQUUsQ0FBQyxNQUFPLEFBQVMsS0FBVCxRQUFZLEVBQUUsT0FBTyxBQUFXLEVBQUUsVUFBVSxDQUFDLElBQXhCLFNBQTBCLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUksR0FBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxPQUFRLEdBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLElBQUssR0FBRSxFQUFFLEtBQUssTUFBTSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUksR0FBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxPQUFRLEdBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLElBQUssR0FBRSxFQUFFLFdBQVcsQ0FBQyxJQUFJLE1BQU0sR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLEVBQUUsT0FBTyxHQUFHLEVBQUUsT0FBTyxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsY0FBYyxHQUFHLEVBQUUsS0FBSyxLQUFLLEVBQUUsWUFBWSxLQUFLLEVBQUUsbUJBQW1CLEtBQUssRUFBRSxRQUFRLEtBQUssRUFBRSxnQkFBZ0IsS0FBSyxFQUFFLGVBQWUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsYUFBYSxHQUFJLEdBQUUsS0FBSyxFQUFFLEFBQWEsTUFBTyxTQUFwQixJQUE0QixRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsYUFBYSxHQUFJLEdBQUUsQUFBYSxNQUFPLFlBQXBCLEtBQWdDLEFBQWEsTUFBTyxhQUFwQixLQUFpQyxBQUFhLE1BQU8sYUFBcEIsSUFBZ0MsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSx3QkFBd0IsRUFBRSxFQUFFLEVBQUUsYUFBYSxRQUFRLFdBQVcsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLEtBQUssZUFBZSxDQUFDLEVBQUUsS0FBSyxNQUFNLEtBQUssS0FBSyxZQUFZLEVBQUUsS0FBSyxhQUFhLEVBQUUsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsYUFBYSxTQUFTLEVBQUUsQ0FBQyxLQUFLLEtBQUssRUFBRSxLQUFLLEFBQU8sS0FBSyxRQUFaLE1BQW1CLEtBQUssWUFBWSxFQUFFLEtBQUssTUFBTSxLQUFLLEVBQUUsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxNQUFNLFVBQVUsQ0FBQyxFQUFFLFVBQVUsTUFBTSxLQUFLLElBQUksRUFBRSxBQUFPLEtBQUssUUFBWixNQUFtQixLQUFLLFlBQVksRUFBRSxLQUFLLE1BQU0sS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLFFBQVEsVUFBVSxDQUFDLEVBQUUsVUFBVSxRQUFRLEtBQUssSUFBSSxFQUFFLEtBQUssTUFBTSxJQUFJLEVBQUUsRUFBRSxVQUFVLFlBQVksVUFBVSxDQUFDLEtBQUssTUFBTSxHQUFJLEdBQUUsS0FBSyxhQUFhLENBQUMsSUFBSSxHQUFHLE1BQU0sS0FBSyxhQUFhLE9BQU8sRUFBRSxDQUFDLEVBQUUsR0FBSSxHQUFFLEtBQUssS0FBSyxNQUFNLE9BQU8sU0FBUyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxlQUFlLFNBQVMsRUFBRSxDQUFDLE1BQU8sSUFBSSxHQUFFLFVBQVUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxpQkFBaUIsVUFBVSxDQUFDLE1BQU8sSUFBSSxHQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMseUJBQXlCLEdBQUcsVUFBVSxHQUFHLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLFdBQVcsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxHQUFHLE9BQU8sYUFBYSxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTyxFQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUksR0FBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLFlBQVksU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLFlBQVksU0FBUyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsWUFBWSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLFlBQVksU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxLQUFLLEdBQUUsQ0FBQyxNQUFNLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUksSUFBRSxNQUFNLEVBQUUsTUFBTSxHQUFFLGVBQWUsRUFBRSxlQUFlLEdBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEdBQUksR0FBRSxFQUFFLEdBQUksSUFBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBSSxJQUFHLE1BQU0sR0FBSSxHQUFFLEVBQUUsR0FBRSxFQUFFLElBQUksSUFBRyxJQUFJLEFBQVMsSUFBVCxPQUFZLElBQUUsSUFBSSxHQUFHLFNBQVMsRUFBRSxHQUFFLENBQUMsR0FBSSxJQUFFLEVBQUUsTUFBTyxJQUFJLElBQUUsR0FBRSxNQUFNLE9BQVEsT0FBTSxLQUFJLEVBQUUsRUFBRSxFQUFFLGdCQUFnQixFQUFDLEdBQUksSUFBRSxHQUFHLEdBQUcsU0FBUyxFQUFFLENBQUMsTUFBTyxJQUFJLElBQUcsRUFBRSxFQUFFLEVBQUUsY0FBYyxHQUFHLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZSxFQUFFLEtBQUssSUFBSSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxHQUFJLEdBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUUsR0FBRyxHQUFJLEdBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUUsR0FBRyxHQUFJLEdBQUUsR0FBRyxNQUFPLElBQUc7QUFBQSxJQUFPLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFFLE1BQU0sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFFLGVBQWUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFFLGlCQUFpQixDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxvQkFBb0IsRUFBRSxHQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBSSxHQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSx5QkFBeUIsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssS0FBSyxlQUFlLEVBQUUsS0FBSyxhQUFhLEVBQUUsS0FBSyxXQUFXLEVBQUUsS0FBSyxZQUFZLEVBQUUsS0FBSyxlQUFlLEVBQUUsS0FBSyxZQUFZLEVBQUUsS0FBSyxXQUFXLEdBQUcsS0FBSyxjQUFjLENBQUMsRUFBRSxLQUFLLFdBQVcsQ0FBQyxFQUFFLEtBQUssb0JBQW9CLEVBQUUsS0FBSyxhQUFhLEVBQUUsS0FBSyxZQUFZLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsS0FBSyxTQUFTLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxLQUFLLFNBQVMsRUFBRSxFQUFFLEtBQUssYUFBYSxFQUFFLEtBQUssU0FBUyxPQUFPLEtBQUssV0FBVyxLQUFLLGNBQWMsS0FBSyxDQUFDLEVBQUcsTUFBSyxjQUFjLEVBQUUsS0FBSyxPQUFPLEVBQUUsVUFBVSxLQUFLLEtBQUssS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLEtBQUssQ0FBQyxZQUFZLEtBQUssWUFBWSxRQUFRLEVBQUcsR0FBRSxJQUFLLEdBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsVUFBVSxhQUFhLFNBQVMsRUFBRSxDQUFDLEtBQUssb0JBQW9CLEtBQUssYUFBYSxLQUFLLFlBQVksRUFBRSxLQUFLLEtBQUssR0FBSSxHQUFFLEtBQUssYUFBYSxDQUFDLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUksR0FBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEtBQUssb0JBQW9CLEtBQUssWUFBWSxLQUFLLGNBQWMsRUFBRSxLQUFLLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQU0sTUFBSyxXQUFXLEVBQUUsRUFBRSxFQUFFLFVBQVUsYUFBYSxTQUFTLEVBQUUsQ0FBQyxLQUFLLFdBQVcsR0FBRyxHQUFJLEdBQUUsS0FBSyxhQUFhLENBQUMsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEtBQUssb0JBQW9CLEtBQUssWUFBWSxLQUFLLGNBQWMsRUFBRSxHQUFHLEtBQUssV0FBVyxLQUFLLEVBQUUsU0FBUyxFQUFFLEVBQUUsS0FBSyxLQUFLLENBQUMsS0FBSyxTQUFTLEVBQUUsQ0FBQyxNQUFPLEdBQUUsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsZUFBZSxDQUFDLEVBQUUsRUFBRSxFQUFFLGlCQUFpQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsTUFBTyxLQUFJLEtBQUssS0FBSyxDQUFDLEtBQUssRUFBRSxXQUFXLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxjQUFjLFFBQVEsS0FBSyxLQUFLLEtBQUssY0FBYyxNQUFNLENBQUMsRUFBRSxLQUFLLFlBQVksSUFBSSxFQUFFLEVBQUUsVUFBVSxNQUFNLFVBQVUsQ0FBQyxPQUFRLEdBQUUsS0FBSyxhQUFhLEVBQUUsRUFBRSxFQUFFLEtBQUssV0FBVyxPQUFPLElBQUksS0FBSyxLQUFLLENBQUMsS0FBSyxLQUFLLFdBQVcsR0FBRyxLQUFLLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUksR0FBRSxLQUFLLGFBQWEsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsWUFBWSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTyxHQUFFLHNCQUFzQixXQUFXLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLFdBQVcsT0FBTyxFQUFFLEVBQUUsS0FBSyxXQUFXLEtBQUssY0FBYyxFQUFFLEtBQUssS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxVQUFVLGtCQUFrQixVQUFVLENBQUMsS0FBSyxTQUFTLEtBQUssU0FBUyxNQUFNLEVBQUUsS0FBSyxhQUFhLEtBQUssU0FBUyxVQUFVLEVBQUUsS0FBSyxTQUFTLEtBQUssU0FBUyxNQUFNLEVBQUUsS0FBSyxTQUFTLE9BQU8sQ0FBQyxFQUFFLEVBQUUsVUFBVSxpQkFBaUIsU0FBUyxFQUFFLENBQUMsS0FBSyxTQUFTLEtBQUssQ0FBQyxFQUFFLEdBQUksR0FBRSxLQUFLLE1BQU8sR0FBRSxHQUFHLE9BQU8sU0FBUyxFQUFFLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLE1BQU0sVUFBVSxDQUFDLEVBQUUsYUFBYSxFQUFFLFNBQVMsVUFBVSxFQUFFLEVBQUUsU0FBUyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxRQUFRLFNBQVMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLFVBQVUsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxVQUFVLE9BQU8sS0FBSyxJQUFJLEdBQUksRUFBQyxLQUFLLFVBQVUsS0FBSyxTQUFTLE9BQVEsTUFBSyxrQkFBa0IsRUFBRSxJQUFJLEtBQUssVUFBVSxLQUFLLFNBQVMsUUFBUSxLQUFLLGVBQWUsT0FBUSxNQUFLLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxVQUFVLE1BQU0sU0FBUyxFQUFFLENBQUMsR0FBSSxHQUFFLEtBQUssU0FBUyxHQUFHLENBQUMsRUFBRSxVQUFVLE1BQU0sS0FBSyxLQUFLLENBQUMsRUFBRSxNQUFNLEdBQUcsT0FBUSxHQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sSUFBSSxHQUFHLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLE1BQUMsQ0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsVUFBVSxLQUFLLFVBQVUsQ0FBQyxFQUFFLFVBQVUsS0FBSyxLQUFLLElBQUksRUFBRSxPQUFRLEdBQUUsS0FBSyxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLGVBQWUsR0FBRywwQkFBMEIsR0FBRyxVQUFVLEdBQUcsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBSSxHQUFFLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLGlCQUFpQixFQUFFLEVBQUUsZUFBZSxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLEdBQUksR0FBRSxFQUFFLFlBQVksRUFBRSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLFFBQVEsU0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEdBQUksR0FBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLEdBQUksR0FBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsS0FBTSxJQUFJLE9BQU0sRUFBRSxzQ0FBc0MsRUFBRSxNQUFPLEVBQUMsRUFBRSxFQUFFLFFBQVEsWUFBWSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsUUFBUSxvQkFBb0IsRUFBRSxvQkFBb0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLGVBQWUsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxTQUFTLEdBQUcsZ0JBQWdCLEVBQUUsZ0JBQWdCLGVBQWUsRUFBRSxjQUFjLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsT0FBTyxFQUFOLENBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU8sRUFBQyxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLFlBQVksQ0FBQyxHQUFHLENBQUUsZ0JBQWdCLElBQUcsTUFBTyxJQUFJLEdBQUUsR0FBRyxVQUFVLE9BQU8sS0FBTSxJQUFJLE9BQU0sZ0dBQWdHLEVBQUUsS0FBSyxNQUFNLE9BQU8sT0FBTyxJQUFJLEVBQUUsS0FBSyxRQUFRLEtBQUssS0FBSyxLQUFLLEdBQUcsS0FBSyxNQUFNLFVBQVUsQ0FBQyxHQUFJLEdBQUUsR0FBSSxHQUFFLE9BQVEsS0FBSyxNQUFLLEFBQVksTUFBTyxNQUFLLElBQXhCLFlBQTZCLEdBQUUsR0FBRyxLQUFLLElBQUksTUFBTyxFQUFDLENBQUMsQ0FBQyxBQUFDLEdBQUUsVUFBVSxFQUFFLFVBQVUsR0FBRyxVQUFVLEVBQUUsUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsRUFBRSxRQUFRLFNBQVMsRUFBRSxVQUFVLFNBQVMsRUFBRSxFQUFFLENBQUMsTUFBTyxJQUFJLEtBQUcsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLGFBQWEsRUFBRSxTQUFTLEdBQUcsV0FBVyxHQUFHLFlBQVksRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLEdBQUksR0FBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUscUJBQXFCLEVBQUUsRUFBRSxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxNQUFPLElBQUksR0FBRSxRQUFRLFNBQVMsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsYUFBYSxpQkFBaUIsRUFBRSxLQUFLLEdBQUksRUFBQyxFQUFFLEVBQUUsR0FBRyxRQUFRLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE1BQU0sVUFBVSxDQUFDLEVBQUUsV0FBVyxRQUFRLEVBQUUsYUFBYSxNQUFNLEVBQUUsR0FBSSxPQUFNLGdDQUFnQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLFNBQVMsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLEtBQUssTUFBTyxHQUFFLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sR0FBRyxXQUFXLEdBQUcsc0JBQXNCLEdBQUcsY0FBYyxHQUFHLGVBQWUsRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFLFFBQVEsT0FBTyxHQUFJLE9BQU0sc0RBQXNELENBQUMsRUFBRSxFQUFFLGVBQWUsc0JBQXNCLEVBQUUsR0FBRyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sRUFBRSxLQUFLLFNBQVMsRUFBRSxDQUFDLEdBQUksR0FBRSxHQUFJLEdBQUUsQ0FBQyxFQUFFLE1BQU8sR0FBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLFNBQVMsRUFBRSxDQUFDLEdBQUksR0FBRSxDQUFDLEVBQUUsUUFBUSxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLEdBQUcsRUFBRSxXQUFXLE9BQVEsR0FBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxNQUFPLEdBQUUsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxTQUFTLEVBQUUsQ0FBQyxPQUFRLEdBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLElBQUksQ0FBQyxHQUFJLEdBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxZQUFZLEVBQUUsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsYUFBYSxDQUFDLE9BQU8sR0FBRyxzQkFBc0IsR0FBRyxLQUFLLEVBQUUsS0FBSyxJQUFJLEVBQUUsSUFBSSxRQUFRLEVBQUUsZUFBZSxPQUFPLEVBQUUsZUFBZSxLQUFLLGdCQUFnQixFQUFFLGdCQUFnQixlQUFlLEVBQUUsZUFBZSxjQUFjLEVBQUUsYUFBYSxDQUFDLEVBQUUsRUFBRSxLQUFNLEdBQUUsS0FBSyxDQUFDLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxNQUFPLEdBQUUsV0FBVyxRQUFTLEdBQUUsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLGdCQUFnQixHQUFHLHNCQUFzQixHQUFHLFNBQVMsR0FBRyxVQUFVLEdBQUcsZUFBZSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBSSxHQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSx5QkFBeUIsRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxLQUFLLG1DQUFtQyxDQUFDLEVBQUUsS0FBSyxlQUFlLEdBQUcsS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsWUFBWSxTQUFTLEVBQUUsQ0FBQyxHQUFJLEdBQUUsS0FBSyxBQUFDLE1BQUssUUFBUSxHQUFHLE1BQU0sRUFBRSxFQUFFLEdBQUcsT0FBTyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxRQUFRLFNBQVMsRUFBRSxDQUFDLEVBQUUsU0FBUyxLQUFLLGVBQWUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE1BQU0sVUFBVSxDQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLFVBQVUsTUFBTSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxVQUFVLE1BQU0sS0FBSyxJQUFJLEdBQUksTUFBSyxRQUFRLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxVQUFVLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsVUFBVSxPQUFPLEtBQUssSUFBSSxHQUFJLE1BQUssZUFBZSxLQUFLLElBQUksRUFBRSxLQUFLLFFBQVEsT0FBTyxFQUFFLEdBQUcsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsMEJBQTBCLEdBQUcsV0FBVyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBSSxHQUFFLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLEtBQUssQ0FBQyxFQUFFLEtBQUssUUFBUSxFQUFFLEdBQUksR0FBRSxLQUFLLEVBQUUsR0FBRyxPQUFPLFNBQVMsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLFFBQVEsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsUUFBUSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsTUFBTSxVQUFVLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxNQUFNLFVBQVUsQ0FBQyxLQUFLLFFBQVEsT0FBTyxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFdBQVcsR0FBRyxrQkFBa0IsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLEVB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QUcsRUFBRSxNQUFPLEdBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsTUFBTSxBQUFNLEdBQUUsTUFBTSxFQUFFLElBQWhCLEtBQW9CLElBQUcsS0FBSyxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLE1BQU8sR0FBRSxBQUFTLElBQVQsT0FBVyxFQUFFLEVBQUUsY0FBYyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssTUFBTSxJQUFJLEVBQUUsS0FBSyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksR0FBRyxjQUFjLENBQUMsQ0FBQyxFQUFFLEtBQUssTUFBTSxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsTUFBTSxBQUFvQixRQUFPLFVBQVUsU0FBUyxLQUFLLENBQUMsSUFBcEQsaUJBQXFELENBQUMsR0FBSSxHQUFFLENBQUMsS0FBSyxVQUFVLENBQUMsS0FBTSxJQUFJLE9BQU0sNEVBQTRFLENBQUMsRUFBRSxRQUFRLFNBQVMsRUFBRSxDQUFDLEdBQUksR0FBRSxFQUFFLEVBQUUsSUFBSSxJQUFLLE1BQUssTUFBTSxFQUFFLEtBQUssTUFBTSxHQUFJLEdBQUUsRUFBRSxNQUFNLEtBQUssS0FBSyxPQUFPLEVBQUUsTUFBTSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssS0FBSyxNQUFNLElBQUksS0FBSyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLFNBQVMsRUFBRSxDQUFDLEdBQUksR0FBRSxDQUFDLEVBQUUsTUFBTyxNQUFLLFFBQVEsU0FBUyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEFBQUksVUFBVSxTQUFkLEVBQXFCLE1BQU8sR0FBRSxLQUFLLEtBQUssRUFBRSxFQUFFLEtBQUssS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUksR0FBRSxFQUFFLE1BQU8sTUFBSyxPQUFPLFNBQVMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUksR0FBRSxLQUFLLE1BQU0sS0FBSyxLQUFLLEdBQUcsTUFBTyxJQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTyxNQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsTUFBTyxNQUFLLE9BQU8sU0FBUyxFQUFFLEVBQUUsQ0FBQyxNQUFPLEdBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFJLEdBQUUsS0FBSyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLE1BQU0sRUFBRSxNQUFPLEdBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sU0FBUyxFQUFFLENBQUMsRUFBRSxLQUFLLEtBQUssRUFBRSxHQUFJLEdBQUUsS0FBSyxNQUFNLEdBQUcsR0FBRyxHQUFJLENBQU0sRUFBRSxNQUFNLEVBQUUsSUFBaEIsS0FBb0IsSUFBRyxLQUFLLEVBQUUsS0FBSyxNQUFNLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxNQUFPLE1BQUssTUFBTSxPQUFRLFFBQVEsR0FBRSxLQUFLLE9BQU8sU0FBUyxFQUFFLEVBQUUsQ0FBQyxNQUFPLEdBQUUsS0FBSyxNQUFNLEVBQUUsRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLElBQUksTUFBTyxNQUFLLE1BQU0sRUFBRSxHQUFHLE1BQU0sTUFBTyxLQUFJLEVBQUUsU0FBUyxTQUFTLEVBQUUsQ0FBQyxLQUFNLElBQUksT0FBTSw0RUFBNEUsQ0FBQyxFQUFFLHVCQUF1QixTQUFTLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUksR0FBRSxFQUFFLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQyxZQUFZLEdBQUcsWUFBWSxRQUFRLG1CQUFtQixLQUFLLEtBQUssR0FBRyxTQUFTLE1BQU0sUUFBUSxLQUFLLFNBQVMsa0JBQWtCLGVBQWUsRUFBRSxVQUFVLENBQUMsR0FBRyxLQUFLLEVBQUUsS0FBSyxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsWUFBWSxZQUFZLEVBQUUsQUFBaUIsRUFBRSxPQUFuQixnQkFBMEIsR0FBRSxLQUFLLFVBQVUsQ0FBQyxFQUFFLEtBQUssS0FBTSxJQUFJLE9BQU0sMkJBQTJCLEVBQUUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLEFBQVcsRUFBRSxXQUFiLFVBQXVCLEFBQVksRUFBRSxXQUFkLFdBQXdCLEFBQVUsRUFBRSxXQUFaLFNBQXNCLEFBQVUsRUFBRSxXQUFaLFNBQXVCLEdBQUUsU0FBUyxRQUFRLEFBQVUsRUFBRSxXQUFaLFNBQXVCLEdBQUUsU0FBUyxPQUFPLEdBQUksR0FBRSxFQUFFLFNBQVMsS0FBSyxTQUFTLEdBQUcsRUFBRSxFQUFFLGVBQWUsS0FBSyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQU4sQ0FBUyxBQUFDLEdBQUUsR0FBSSxHQUFFLE9BQU8sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU8sSUFBSSxHQUFFLEVBQUUsRUFBRSxNQUFNLFNBQVMsRUFBRSxRQUFRLENBQUMsRUFBRSxjQUFjLFNBQVMsRUFBRSxFQUFFLENBQUMsTUFBTyxNQUFLLHVCQUF1QixDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsRUFBRSxtQkFBbUIsU0FBUyxFQUFFLEVBQUUsQ0FBQyxNQUFPLEdBQUUsR0FBRyxDQUFDLEdBQUcsTUFBTyxHQUFFLEtBQUssY0FBYyxLQUFLLHVCQUF1QixDQUFDLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLG9DQUFvQyxHQUFHLGdCQUFnQixHQUFHLHlCQUF5QixHQUFHLHdCQUF3QixHQUFHLFNBQVMsR0FBRyxVQUFVLEdBQUcsY0FBYyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsT0FBTyxNQUFNLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBSSxHQUFFLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsRUFBRSxPQUFRLEdBQUUsRUFBRSxFQUFFLEtBQUssS0FBSyxPQUFPLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsT0FBTyxTQUFTLEVBQUUsQ0FBQyxNQUFPLE1BQUssS0FBSyxLQUFLLEtBQUssRUFBRSxFQUFFLEVBQUUsVUFBVSxxQkFBcUIsU0FBUyxFQUFFLENBQUMsT0FBUSxHQUFFLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRSxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRSxLQUFLLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsS0FBSyxLQUFLLEtBQUssR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFPLEdBQUUsS0FBSyxLQUFLLE1BQU0sRUFBRSxFQUFFLEVBQUUsVUFBVSxzQkFBc0IsU0FBUyxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRSxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRSxLQUFLLFNBQVMsQ0FBQyxFQUFFLE1BQU8sS0FBSSxFQUFFLElBQUksSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLFVBQVUsU0FBUyxTQUFTLEVBQUUsQ0FBQyxHQUFHLEtBQUssWUFBWSxDQUFDLEVBQUUsQUFBSSxJQUFKLEVBQU0sTUFBTSxDQUFDLEVBQUUsR0FBSSxHQUFFLEtBQUssS0FBSyxNQUFNLEtBQUssS0FBSyxLQUFLLE1BQU0sS0FBSyxLQUFLLEtBQUssTUFBTSxDQUFDLEVBQUUsTUFBTyxNQUFLLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFdBQVcsR0FBRyxlQUFlLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsYUFBYSxHQUFJLEdBQUUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLENBQUMsS0FBSyxLQUFLLEVBQUUsS0FBSyxPQUFPLEVBQUUsT0FBTyxLQUFLLE1BQU0sRUFBRSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLFlBQVksU0FBUyxFQUFFLENBQUMsS0FBSyxXQUFXLEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxXQUFXLFNBQVMsRUFBRSxDQUFDLEdBQUcsS0FBSyxPQUFPLEtBQUssS0FBSyxHQUFHLEVBQUUsRUFBRSxLQUFNLElBQUksT0FBTSxzQ0FBc0MsS0FBSyxPQUFPLG1CQUFtQixFQUFFLG9CQUFvQixDQUFDLEVBQUUsU0FBUyxTQUFTLEVBQUUsQ0FBQyxLQUFLLFdBQVcsQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLEVBQUUsS0FBSyxTQUFTLEVBQUUsQ0FBQyxLQUFLLFNBQVMsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLE9BQU8sU0FBUyxFQUFFLENBQUMsRUFBRSxRQUFRLFNBQVMsRUFBRSxDQUFDLEdBQUksR0FBRSxFQUFFLEVBQUUsSUFBSSxLQUFLLFlBQVksQ0FBQyxFQUFFLEVBQUUsS0FBSyxNQUFNLEVBQUUsRUFBRSxHQUFHLEtBQUssTUFBTSxJQUFJLEVBQUcsSUFBRyxHQUFHLEtBQUssT0FBTyxDQUFDLEVBQUUsTUFBTyxNQUFLLE9BQU8sRUFBRSxDQUFDLEVBQUUsV0FBVyxTQUFTLEVBQUUsQ0FBQyxNQUFPLEdBQUUsWUFBWSxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsU0FBUyxFQUFFLENBQUMsRUFBRSxxQkFBcUIsU0FBUyxFQUFFLENBQUMsRUFBRSxzQkFBc0IsU0FBUyxFQUFFLENBQUMsRUFBRSxTQUFTLFVBQVUsQ0FBQyxHQUFJLEdBQUUsS0FBSyxRQUFRLENBQUMsRUFBRSxNQUFPLElBQUksTUFBSyxLQUFLLElBQUksS0FBTSxJQUFHLEdBQUcsS0FBTSxJQUFHLEdBQUcsSUFBSSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFJLElBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLEdBQUksR0FBRSxFQUFFLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLFNBQVMsU0FBUyxFQUFFLENBQUMsS0FBSyxZQUFZLENBQUMsRUFBRSxHQUFJLEdBQUUsS0FBSyxLQUFLLE1BQU0sS0FBSyxLQUFLLEtBQUssTUFBTSxLQUFLLEtBQUssS0FBSyxNQUFNLENBQUMsRUFBRSxNQUFPLE1BQUssT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsV0FBVyxHQUFHLHFCQUFxQixFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBSSxHQUFFLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLE9BQU8sU0FBUyxFQUFFLENBQUMsTUFBTyxNQUFLLEtBQUssV0FBVyxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxVQUFVLHFCQUFxQixTQUFTLEVBQUUsQ0FBQyxNQUFPLE1BQUssS0FBSyxZQUFZLENBQUMsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLFVBQVUsc0JBQXNCLFNBQVMsRUFBRSxDQUFDLE1BQU8sS0FBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxVQUFVLFNBQVMsU0FBUyxFQUFFLENBQUMsS0FBSyxZQUFZLENBQUMsRUFBRSxHQUFJLEdBQUUsS0FBSyxLQUFLLE1BQU0sS0FBSyxLQUFLLEtBQUssTUFBTSxLQUFLLEtBQUssS0FBSyxNQUFNLENBQUMsRUFBRSxNQUFPLE1BQUssT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsV0FBVyxHQUFHLGVBQWUsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLEdBQUksR0FBRSxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxTQUFTLFNBQVMsRUFBRSxDQUFDLEdBQUcsS0FBSyxZQUFZLENBQUMsRUFBRSxBQUFJLElBQUosRUFBTSxNQUFPLElBQUksWUFBVyxDQUFDLEVBQUUsR0FBSSxHQUFFLEtBQUssS0FBSyxTQUFTLEtBQUssS0FBSyxLQUFLLE1BQU0sS0FBSyxLQUFLLEtBQUssTUFBTSxDQUFDLEVBQUUsTUFBTyxNQUFLLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFdBQVcsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLEdBQUksR0FBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFLGdCQUFnQixFQUFFLEVBQUUsRUFBRSxvQkFBb0IsRUFBRSxFQUFFLEVBQUUsb0JBQW9CLEVBQUUsRUFBRSxRQUFRLFNBQVMsRUFBRSxDQUFDLEdBQUksR0FBRSxFQUFFLFVBQVUsQ0FBQyxFQUFFLE1BQU8sR0FBRSxhQUFhLENBQUMsRUFBRSxBQUFXLElBQVgsVUFBYyxFQUFFLFdBQVcsQUFBZSxJQUFmLGFBQWlCLEdBQUksR0FBRSxDQUFDLEVBQUUsRUFBRSxXQUFXLEdBQUksR0FBRSxFQUFFLFlBQVksYUFBYSxDQUFDLENBQUMsRUFBRSxHQUFJLEdBQUUsRUFBRSxZQUFZLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBSSxHQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxhQUFhLEdBQUcsV0FBVyxHQUFHLGdCQUFnQixHQUFHLHFCQUFxQixHQUFHLGlCQUFpQixHQUFHLHFCQUFxQixFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLGFBQWEsRUFBRSxrQkFBa0IsT0FBTyxFQUFFLG9CQUFvQixPQUFPLEVBQUUsc0JBQXNCLE9BQU8sRUFBRSxnQ0FBZ0MsVUFBTyxFQUFFLDRCQUE0QixPQUFPLEVBQUUsZ0JBQWdCLFVBQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBSSxHQUFFLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLEtBQUssS0FBSyxvQkFBb0IsQ0FBQyxFQUFFLEtBQUssU0FBUyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxhQUFhLFNBQVMsRUFBRSxDQUFDLEtBQUssS0FBSyxDQUFDLEtBQUssRUFBRSxZQUFZLEtBQUssU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsV0FBVyxHQUFHLGtCQUFrQixFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBSSxHQUFFLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxZQUFZLENBQUMsRUFBRSxLQUFLLEtBQUssWUFBWSxFQUFFLEtBQUssZUFBZSxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLGFBQWEsU0FBUyxFQUFFLENBQUMsS0FBSyxXQUFXLE1BQU0sRUFBRSxFQUFFLEtBQUssS0FBSyxXQUFXLE9BQU8sQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLFdBQVcsR0FBRyxrQkFBa0IsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLEdBQUksR0FBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxLQUFLLEtBQUssdUJBQXVCLENBQUMsRUFBRSxLQUFLLFNBQVMsRUFBRSxLQUFLLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLGFBQWEsU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBSSxHQUFFLEtBQUssV0FBVyxLQUFLLFdBQVcsRUFBRSxLQUFLLFdBQVcsS0FBSyxVQUFVLEVBQUUsRUFBRSxLQUFLLE1BQU0sQ0FBQyxFQUFFLFVBQVUsYUFBYSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFdBQVcsR0FBRyxrQkFBa0IsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLEdBQUksR0FBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxLQUFLLEtBQUssWUFBWSxFQUFFLEdBQUksR0FBRSxLQUFLLEtBQUssWUFBWSxHQUFHLEtBQUssTUFBTSxFQUFFLEtBQUssSUFBSSxFQUFFLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLEtBQUssZUFBZSxHQUFHLEVBQUUsS0FBSyxTQUFTLEVBQUUsQ0FBQyxFQUFFLFlBQVksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxlQUFlLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsUUFBUSxVQUFVLENBQUMsRUFBRSxVQUFVLFFBQVEsS0FBSyxJQUFJLEVBQUUsS0FBSyxLQUFLLElBQUksRUFBRSxFQUFFLFVBQVUsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxVQUFVLE9BQU8sS0FBSyxJQUFJLEdBQUksRUFBQyxLQUFLLGdCQUFnQixLQUFLLGFBQWMsTUFBSyxlQUFlLEdBQUcsRUFBRSxNQUFNLEtBQUssZUFBZSxDQUFDLEVBQUUsSUFBSSxHQUFHLEdBQUcsRUFBRSxFQUFFLFVBQVUsZUFBZSxVQUFVLENBQUMsS0FBSyxlQUFlLEdBQUcsS0FBSyxVQUFVLEtBQUssWUFBYSxNQUFLLE1BQU0sRUFBRSxLQUFLLFlBQWEsR0FBRSxNQUFNLEtBQUssZUFBZSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssZUFBZSxJQUFJLEVBQUUsRUFBRSxVQUFVLE1BQU0sVUFBVSxDQUFDLEdBQUcsS0FBSyxVQUFVLEtBQUssV0FBVyxNQUFNLEdBQUcsR0FBSSxHQUFFLEtBQUssRUFBRSxLQUFLLElBQUksS0FBSyxJQUFJLEtBQUssTUFBTSxLQUFLLEVBQUUsR0FBRyxLQUFLLE9BQU8sS0FBSyxJQUFJLE1BQU8sTUFBSyxJQUFJLEVBQUUsT0FBTyxLQUFLLFVBQVUsU0FBUyxFQUFFLEtBQUssS0FBSyxVQUFVLEtBQUssTUFBTSxDQUFDLEVBQUUsVUFBVSxhQUFhLEVBQUUsS0FBSyxLQUFLLFNBQVMsS0FBSyxNQUFNLENBQUMsRUFBRSxVQUFVLFlBQVksYUFBYSxFQUFFLEtBQUssS0FBSyxNQUFNLEtBQUssTUFBTSxDQUFDLEVBQUUsTUFBTyxNQUFLLE1BQU0sRUFBRSxLQUFLLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFFBQVEsS0FBSyxJQUFJLEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFdBQVcsR0FBRyxrQkFBa0IsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLFdBQVcsRUFBRSxDQUFDLEtBQUssS0FBSyxHQUFHLFVBQVUsS0FBSyxXQUFXLENBQUMsRUFBRSxLQUFLLGVBQWUsS0FBSyxLQUFLLGdCQUFnQixDQUFDLEVBQUUsS0FBSyxTQUFTLEdBQUcsS0FBSyxXQUFXLEdBQUcsS0FBSyxTQUFTLEdBQUcsS0FBSyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLFNBQVMsSUFBSSxDQUFDLEVBQUUsVUFBVSxDQUFDLEtBQUssU0FBUyxFQUFFLENBQUMsS0FBSyxLQUFLLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsR0FBRyxLQUFLLFdBQVcsTUFBTSxHQUFHLEtBQUssTUFBTSxFQUFFLEdBQUcsQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssUUFBUSxFQUFFLEtBQUssV0FBVyxFQUFFLE9BQU8sRUFBTixDQUFTLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sU0FBUyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssWUFBYSxNQUFLLFNBQVMsS0FBSyxlQUFlLEVBQUcsTUFBSyxXQUFXLEdBQUcsS0FBSyxLQUFLLFFBQVEsQ0FBQyxFQUFFLEtBQUssVUFBVSxLQUFLLFNBQVMsTUFBTSxDQUFDLEVBQUUsS0FBSyxRQUFRLEdBQUcsR0FBRyxFQUFFLEdBQUcsU0FBUyxFQUFFLEVBQUUsQ0FBQyxNQUFPLE1BQUssV0FBVyxHQUFHLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLFVBQVUsQ0FBQyxLQUFLLFdBQVcsS0FBSyxlQUFlLEtBQUssZ0JBQWdCLEtBQUssS0FBSyxXQUFXLENBQUMsQ0FBQyxFQUFFLEtBQUssU0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEtBQUssV0FBVyxHQUFHLE9BQVEsR0FBRSxFQUFFLEVBQUUsS0FBSyxXQUFXLEdBQUcsT0FBTyxJQUFJLEtBQUssV0FBVyxHQUFHLEdBQUcsS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssU0FBUyxFQUFFLENBQUMsTUFBTyxHQUFFLGlCQUFpQixJQUFJLENBQUMsRUFBRSxpQkFBaUIsU0FBUyxFQUFFLENBQUMsR0FBRyxLQUFLLFNBQVMsS0FBTSxJQUFJLE9BQU0sZUFBZSxLQUFLLDBCQUEwQixFQUFFLEtBQUssV0FBVyxFQUFFLFdBQVcsS0FBSyxnQkFBZ0IsRUFBRSxLQUFLLFNBQVMsRUFBRSxHQUFJLEdBQUUsS0FBSyxNQUFPLEdBQUUsR0FBRyxPQUFPLFNBQVMsRUFBRSxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxNQUFNLFVBQVUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLFFBQVEsU0FBUyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLFVBQVUsQ0FBQyxLQUFLLFlBQWEsTUFBSyxTQUFTLEdBQUcsS0FBSyxVQUFVLEtBQUssU0FBUyxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFVBQVUsS0FBSyxXQUFXLE1BQU0sR0FBRyxHQUFJLEdBQUUsS0FBSyxTQUFTLEdBQUcsTUFBTyxNQUFLLGdCQUFpQixNQUFLLE1BQU0sS0FBSyxjQUFjLEVBQUUsRUFBRSxJQUFJLEtBQUssVUFBVSxLQUFLLFNBQVMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sVUFBVSxDQUFDLEVBQUUsYUFBYSxTQUFTLEVBQUUsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUUsZUFBZSxTQUFTLEVBQUUsRUFBRSxDQUFDLE1BQU8sTUFBSyxnQkFBZ0IsR0FBRyxFQUFFLEtBQUssZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixVQUFVLENBQUMsT0FBUSxLQUFLLE1BQUssZ0JBQWdCLEtBQUssZ0JBQWdCLGVBQWUsQ0FBQyxHQUFJLE1BQUssV0FBVyxHQUFHLEtBQUssZ0JBQWdCLEdBQUcsRUFBRSxLQUFLLFVBQVUsQ0FBQyxHQUFHLEtBQUssU0FBUyxLQUFNLElBQUksT0FBTSxlQUFlLEtBQUssMEJBQTBCLEVBQUUsS0FBSyxTQUFTLEdBQUcsS0FBSyxVQUFVLEtBQUssU0FBUyxLQUFLLENBQUMsRUFBRSxTQUFTLFVBQVUsQ0FBQyxHQUFJLEdBQUUsVUFBVSxLQUFLLEtBQUssTUFBTyxNQUFLLFNBQVMsS0FBSyxTQUFTLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsYUFBYSxHQUFJLEdBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLGlCQUFpQixFQUFFLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxFQUFFLEtBQUssR0FBRyxFQUFFLFdBQVcsR0FBRyxDQUFDLEVBQUUsRUFBRSxxQ0FBcUMsQ0FBQyxNQUFDLENBQVMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLE1BQU8sSUFBSSxHQUFFLFFBQVEsU0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxjQUFjLEVBQUUsRUFBRSxZQUFZLEVBQUUsRUFBRSxVQUFVLEVBQUUsR0FBRyxPQUFPLFNBQVMsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLFFBQVEsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsTUFBTSxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUksR0FBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBTyxPQUFPLE9BQU8sTUFBTyxHQUFFLFFBQVEsRUFBRSxZQUFZLGNBQWMsQ0FBQyxFQUFFLENBQUMsTUFBTSxTQUFTLE1BQU8sR0FBRSxPQUFPLENBQUMsVUFBVSxNQUFPLEdBQUUsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sSUFBSSxHQUFHLEVBQUUsR0FBRyxPQUFPLE9BQU8sT0FBTyxTQUFTLE1BQU8sR0FBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLE1BQU8sT0FBTSxVQUFVLE9BQU8sTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLGFBQWEsSUFBSSxFQUFFLEdBQUksWUFBVyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsT0FBTyxNQUFPLE9BQU0sYUFBYSxNQUFPLFFBQU8sT0FBTyxDQUFDLFVBQVUsS0FBTSxJQUFJLE9BQU0sOEJBQThCLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBTixDQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsT0FBTyxPQUFPLFdBQVcsY0FBYyxFQUFFLGFBQWEsVUFBVSxTQUFTLEVBQUUsU0FBUyxHQUFHLENBQUMsS0FBSyxjQUFjLEVBQUUsS0FBSyxZQUFZLEVBQUUsS0FBSyxVQUFVLEVBQUUsRUFBRSxhQUFhLENBQUMsRUFBRSxLQUFLLFFBQVEsRUFBRSxLQUFLLEdBQUksR0FBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQU4sQ0FBUyxLQUFLLFFBQVEsR0FBSSxHQUFFLE9BQU8sRUFBRSxLQUFLLFFBQVEsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLFdBQVcsU0FBUyxFQUFFLENBQUMsTUFBTyxHQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxTQUFTLEVBQUUsRUFBRSxDQUFDLEdBQUksR0FBRSxLQUFLLE1BQU0sQUFBUyxLQUFULE9BQVcsS0FBSyxRQUFRLEdBQUcsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLEtBQUssUUFBUSxHQUFHLEVBQUUsVUFBVSxDQUFDLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxVQUFVLENBQUMsTUFBTyxHQUFFLE1BQU0sS0FBSyxRQUFRLE9BQU8sQ0FBQyxFQUFFLEtBQUssT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFVBQVUsQ0FBQyxNQUFPLE1BQUssUUFBUSxNQUFNLEVBQUUsSUFBSSxFQUFFLGVBQWUsU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFLGFBQWEsWUFBWSxFQUFFLEFBQWUsS0FBSyxjQUFwQixhQUFnQyxLQUFNLElBQUksT0FBTSxLQUFLLFlBQVksa0NBQWtDLEVBQUUsTUFBTyxJQUFJLEdBQUUsS0FBSyxDQUFDLFdBQVcsQUFBZSxLQUFLLGNBQXBCLFlBQStCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLGNBQWMsRUFBRSxzQ0FBc0MsR0FBRyxhQUFhLEdBQUcsV0FBVyxHQUFHLGtCQUFrQixHQUFHLGtCQUFrQixFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxFQUFFLE9BQU8sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE9BQU8sR0FBRyxFQUFFLFlBQVksQUFBYSxNQUFPLGFBQXBCLEtBQWlDLEFBQWEsTUFBTyxZQUFwQixJQUErQixFQUFFLFdBQVcsQUFBYSxNQUFPLFFBQXBCLElBQTJCLEVBQUUsV0FBVyxBQUFhLE1BQU8sWUFBcEIsSUFBK0IsQUFBYSxNQUFPLGFBQXBCLElBQWdDLEVBQUUsS0FBSyxPQUFPLENBQUMsR0FBSSxHQUFFLEdBQUksYUFBWSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxBQUFJLEdBQUksTUFBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssaUJBQWlCLENBQUMsRUFBRSxPQUEzQyxDQUErQyxNQUFDLENBQVMsR0FBRyxDQUFDLEdBQUksR0FBRSxHQUFJLE1BQUssYUFBYSxLQUFLLG1CQUFtQixLQUFLLGdCQUFnQixLQUFLLGVBQWUsRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLEtBQUssQUFBSSxFQUFFLFFBQVEsaUJBQWlCLEVBQUUsT0FBakMsQ0FBcUMsTUFBQyxDQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxNQUFDLENBQVMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsYUFBYSxPQUFRLEdBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRSx3QkFBd0IsRUFBRSxFQUFFLEdBQUksT0FBTSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsRUFBRSxLQUFLLEtBQUssY0FBYyxFQUFFLEtBQUssU0FBUyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsS0FBSyxLQUFLLGNBQWMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxTQUFTLEVBQUUsQ0FBQyxNQUFPLEdBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEFBQVEsT0FBTyxHQUFFLEVBQUUsV0FBVyxDQUFDLEtBQS9CLE9BQW9DLEVBQUUsRUFBRSxHQUFHLEFBQVEsT0FBTyxHQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsS0FBakMsT0FBdUMsR0FBRSxNQUFPLEdBQUUsT0FBTyxJQUFLLEdBQUUsT0FBTyxLQUFLLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxXQUFXLEdBQUksWUFBVyxDQUFDLEVBQUUsR0FBSSxPQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxBQUFRLE9BQU8sR0FBRSxFQUFFLFdBQVcsQ0FBQyxLQUEvQixPQUFvQyxFQUFFLEVBQUUsR0FBRyxBQUFRLE9BQU8sR0FBRSxFQUFFLFdBQVcsRUFBRSxDQUFDLEtBQWpDLE9BQXVDLEdBQUUsTUFBTyxHQUFFLE9BQU8sSUFBSyxHQUFFLE9BQU8sS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUcsR0FBRSxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRyxHQUFFLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxHQUFJLEdBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssSUFBSSxHQUFHLEdBQUcsTUFBTyxFQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxXQUFXLFNBQVMsRUFBRSxDQUFDLE1BQU8sR0FBRSxXQUFXLEVBQUUsWUFBWSxhQUFhLENBQUMsRUFBRSxTQUFTLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFJLE9BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBSSxHQUFFLEVBQUUsTUFBTSxJQUFJLEVBQUUsS0FBSyxVQUFVLEVBQUcsR0FBRSxFQUFFLElBQUksRUFBRSxLQUFLLE1BQU0sR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsQUFBSSxJQUFKLEVBQU0sR0FBRyxBQUFJLElBQUosRUFBTSxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUcsSUFBRyxNQUFNLEVBQUUsS0FBSyxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsS0FBSyxNQUFNLEtBQUssRUFBRSxDQUFDLE1BQU8sR0FBRSxTQUFTLEdBQUksR0FBRSxTQUFTLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxHQUFHLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsV0FBVyxhQUFhLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLGFBQWEsU0FBUyxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsWUFBWSxFQUFFLFdBQVcsYUFBYSxRQUFRLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxVQUFVLEtBQUssU0FBUyxPQUFPLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxHQUFJLEdBQUUsRUFBRSxBQUFDLEdBQUUsR0FBSSxZQUFXLEVBQUUsT0FBTyxLQUFLLFNBQVMsTUFBTSxHQUFHLElBQUksS0FBSyxTQUFTLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLFNBQVMsTUFBTSxDQUFDLEtBQU0sR0FBRSxLQUFLLFNBQVMsT0FBTyxDQUFDLEVBQUUsS0FBSyxTQUFTLElBQUksQ0FBQyxHQUFJLEdBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsSUFBSyxHQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsUUFBUyxHQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUcsQUFBTSxLQUFJLEVBQUUsS0FBWixLQUFpQixJQUFJLE1BQU8sR0FBRSxHQUFJLEFBQUksSUFBSixFQUFGLEVBQVUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVMsR0FBRSxXQUFZLEdBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEtBQUssU0FBUyxFQUFFLFNBQVMsRUFBRSxFQUFFLE1BQU0sR0FBSSxHQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLFNBQVMsRUFBRSxNQUFNLEVBQUUsRUFBRSxNQUFNLElBQUksS0FBSyxLQUFLLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsVUFBVSxNQUFNLFVBQVUsQ0FBQyxLQUFLLFVBQVUsS0FBSyxTQUFTLFFBQVMsTUFBSyxLQUFLLENBQUMsS0FBSyxFQUFFLFdBQVcsS0FBSyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssU0FBUyxLQUFLLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLGFBQWEsU0FBUyxFQUFFLENBQUMsS0FBSyxLQUFLLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLEdBQUcseUJBQXlCLEdBQUcsWUFBWSxHQUFHLFVBQVUsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLEdBQUksR0FBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsQ0FBQyxNQUFPLEVBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLE9BQVEsR0FBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLFdBQVcsQ0FBQyxFQUFFLE1BQU8sRUFBQyxDQUFDLEVBQUUsY0FBYyxFQUFFLEVBQUUsUUFBUSxTQUFTLEVBQUUsRUFBRSxDQUFDLEVBQUUsYUFBYSxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU8sSUFBSSxNQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFDLENBQVMsR0FBRyxDQUFDLEdBQUksR0FB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Q0FBQyxDQUFDLEVBQUUsV0FBVyxTQUFTLEVBQUUsQ0FBQyxNQUFPLEdBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsWUFBWSxDQUFDLE9BQU8sU0FBUyxFQUFFLENBQUMsTUFBTyxHQUFFLEdBQUksWUFBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sU0FBUyxFQUFFLENBQUMsTUFBTyxHQUFFLEdBQUksWUFBVyxDQUFDLEVBQUUsR0FBSSxPQUFNLEVBQUUsVUFBVSxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsV0FBVyxTQUFTLEVBQUUsQ0FBQyxNQUFPLElBQUksWUFBVyxDQUFDLENBQUMsRUFBRSxXQUFXLFNBQVMsRUFBRSxDQUFDLE1BQU8sR0FBRSxjQUFjLEdBQUksWUFBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxXQUFXLENBQUMsT0FBTyxFQUFFLE1BQU0sU0FBUyxFQUFFLENBQUMsTUFBTyxHQUFFLEVBQUUsR0FBSSxPQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxZQUFZLFNBQVMsRUFBRSxDQUFDLE1BQU8sR0FBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsU0FBUyxFQUFFLENBQUMsTUFBTyxHQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLFdBQVcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxTQUFTLEVBQUUsQ0FBQyxNQUFPLEdBQUUsRUFBRSxHQUFJLE9BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFLFlBQVksU0FBUyxFQUFFLENBQUMsTUFBTyxHQUFFLFdBQVcsV0FBVyxDQUFDLEVBQUUsTUFBTSxFQUFFLFdBQVcsU0FBUyxFQUFFLENBQUMsTUFBTyxHQUFFLEVBQUUsR0FBSSxZQUFXLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsRUFBRSxFQUFFLFlBQVksU0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxNQUFPLEdBQUUsRUFBRSxhQUFhLENBQUMsRUFBRSxHQUFJLEdBQUUsRUFBRSxVQUFVLENBQUMsRUFBRSxNQUFPLEdBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxTQUFTLEVBQUUsQ0FBQyxPQUFRLEdBQUUsRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sSUFBSSxDQUFDLEdBQUksR0FBRSxFQUFFLEdBQUcsQUFBTSxJQUFOLEtBQVMsQUFBSyxJQUFMLElBQVEsQUFBSSxJQUFKLEdBQU8sSUFBSSxFQUFFLE9BQU8sR0FBSSxDQUFPLElBQVAsS0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTyxHQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsRUFBRSxVQUFVLFNBQVMsRUFBRSxDQUFDLE1BQU0sQUFBVSxPQUFPLElBQWpCLFNBQW1CLFNBQVMsQUFBbUIsT0FBTyxVQUFVLFNBQVMsS0FBSyxDQUFDLElBQW5ELGlCQUFxRCxRQUFRLEVBQUUsWUFBWSxFQUFFLFNBQVMsQ0FBQyxFQUFFLGFBQWEsRUFBRSxZQUFZLFlBQWEsWUFBVyxhQUFhLEVBQUUsYUFBYSxZQUFhLGFBQVksY0FBYyxNQUFNLEVBQUUsRUFBRSxhQUFhLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsWUFBWSxHQUFHLEtBQU0sSUFBSSxPQUFNLEVBQUUsb0NBQW9DLENBQUMsRUFBRSxFQUFFLGlCQUFpQixNQUFNLEVBQUUsaUJBQWlCLEdBQUcsRUFBRSxPQUFPLFNBQVMsRUFBRSxDQUFDLEdBQUksR0FBRSxFQUFFLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxFQUFHLElBQUcsSUFBSSxPQUFPLElBQUksR0FBRyxNQUFRLElBQUUsRUFBRSxXQUFXLENBQUMsR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFPLEVBQUMsRUFBRSxFQUFFLE1BQU0sU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLGFBQWEsVUFBVSxDQUFDLEVBQUUsTUFBTSxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLFNBQVMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxHQUFJLEVBQUMsRUFBRSxFQUFFLE9BQU8sVUFBVSxDQUFDLEdBQUksR0FBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsVUFBVSxPQUFPLElBQUksSUFBSSxJQUFLLFdBQVUsR0FBRyxVQUFVLEdBQUcsZUFBZSxDQUFDLEdBQUcsQUFBUyxFQUFFLEtBQVgsUUFBZ0IsR0FBRSxHQUFHLFVBQVUsR0FBRyxJQUFJLE1BQU8sRUFBQyxFQUFFLEVBQUUsZUFBZSxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLE1BQU8sR0FBRSxRQUFRLFFBQVEsQ0FBQyxFQUFFLEtBQUssU0FBUyxFQUFFLENBQUMsTUFBTyxHQUFFLE1BQU8sYUFBYSxPQUFNLEFBQUssQ0FBQyxnQkFBZ0IsZUFBZSxFQUFFLFFBQVEsT0FBTyxVQUFVLFNBQVMsS0FBSyxDQUFDLENBQUMsSUFBaEYsS0FBb0YsQUFBYSxNQUFPLFlBQXBCLElBQStCLEdBQUksR0FBRSxRQUFRLFNBQVMsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLEdBQUksWUFBVyxFQUFFLE9BQU8sU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLE9BQU8sTUFBTSxDQUFDLEVBQUUsRUFBRSxRQUFRLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxPQUFPLEtBQUssQ0FBQyxFQUFFLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxTQUFTLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxVQUFVLENBQUMsRUFBRSxNQUFPLEdBQUcsQ0FBZ0IsSUFBaEIsY0FBa0IsRUFBRSxFQUFFLFlBQVksYUFBYSxDQUFDLEVBQUUsQUFBVyxJQUFYLFVBQWUsR0FBRSxFQUFFLEVBQUUsT0FBTyxD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QUFDLEdBQUksR0FBRSxHQUFHLFdBQVcsRUFBRSxDQUFDLEdBQUksR0FBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUksR0FBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUksR0FBRSxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxBQUFVLEVBQUUsU0FBWixTQUFvQixFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxPQUFPLFNBQVMsT0FBTyxFQUFOLENBQVMsRUFBRSxPQUFPLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxNQUFPLEVBQUMsQ0FBQyxBQUFDLEdBQUUsUUFBUSxHQUFHLFVBQVUsUUFBUSxTQUFTLEVBQUUsQ0FBQyxHQUFHLEFBQVksTUFBTyxJQUFuQixXQUFxQixNQUFPLE1BQUssR0FBSSxHQUFFLEtBQUssWUFBWSxNQUFPLE1BQUssS0FBSyxTQUFTLEVBQUUsQ0FBQyxNQUFPLEdBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxLQUFLLFVBQVUsQ0FBQyxNQUFPLEVBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsTUFBTyxHQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsS0FBSyxVQUFVLENBQUMsS0FBTSxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLFVBQVUsTUFBTSxTQUFTLEVBQUUsQ0FBQyxNQUFPLE1BQUssS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsVUFBVSxLQUFLLFNBQVMsRUFBRSxFQUFFLENBQUMsR0FBRyxBQUFZLE1BQU8sSUFBbkIsWUFBc0IsS0FBSyxRQUFRLEdBQUcsQUFBWSxNQUFPLElBQW5CLFlBQXNCLEtBQUssUUFBUSxFQUFFLE1BQU8sTUFBSyxHQUFJLEdBQUUsR0FBSSxNQUFLLFlBQVksQ0FBQyxFQUFFLFlBQUssUUFBUSxFQUFFLEVBQUUsRUFBRSxLQUFLLFFBQVEsRUFBRSxFQUFFLEVBQUUsS0FBSyxPQUFPLEVBQUUsS0FBSyxNQUFNLEtBQUssR0FBSSxHQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBUyxDQUFDLEVBQUUsRUFBRSxVQUFVLGNBQWMsU0FBUyxFQUFFLENBQUMsRUFBRSxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLFVBQVUsbUJBQW1CLFNBQVMsRUFBRSxDQUFDLEVBQUUsS0FBSyxRQUFRLEtBQUssWUFBWSxDQUFDLENBQUMsRUFBRSxFQUFFLFVBQVUsYUFBYSxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsVUFBVSxrQkFBa0IsU0FBUyxFQUFFLENBQUMsRUFBRSxLQUFLLFFBQVEsS0FBSyxXQUFXLENBQUMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxTQUFTLEVBQUUsRUFBRSxDQUFDLEdBQUksR0FBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQUFBVSxFQUFFLFNBQVosUUFBbUIsTUFBTyxHQUFFLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFJLEdBQUUsRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBUSxHQUFFLEdBQUcsRUFBRSxFQUFFLE1BQU0sT0FBTyxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLE1BQU8sRUFBQyxFQUFFLEVBQUUsT0FBTyxTQUFTLEVBQUUsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQVEsR0FBRSxHQUFHLEVBQUUsRUFBRSxNQUFNLE9BQU8sRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEdBQUcsYUFBYSxDQUFDLEVBQUUsTUFBTyxFQUFDLEVBQUUsRUFBRSxRQUFRLFNBQVMsRUFBRSxDQUFDLE1BQUcsYUFBYSxNQUFZLEVBQVMsRUFBRSxRQUFRLEdBQUksTUFBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxPQUFPLFNBQVMsRUFBRSxDQUFDLEdBQUksR0FBRSxHQUFJLE1BQUssQ0FBQyxFQUFFLE1BQU8sR0FBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLFNBQVMsRUFBRSxDQUFDLEdBQUksR0FBRSxLQUFLLEdBQUcsQUFBbUIsT0FBTyxVQUFVLFNBQVMsS0FBSyxDQUFDLElBQW5ELGlCQUFxRCxNQUFPLE1BQUssT0FBTyxHQUFJLFdBQVUsa0JBQWtCLENBQUMsRUFBRSxHQUFJLEdBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxNQUFPLE1BQUssUUFBUSxDQUFDLENBQUMsRUFBNEMsT0FBdEMsR0FBRSxHQUFJLE9BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFJLE1BQUssQ0FBQyxFQUFPLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxNQUFPLEdBQUUsV0FBVyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEtBQUssU0FBUyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxJQUFJLEdBQUcsR0FBSSxHQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsR0FBSSxHQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxLQUFLLFNBQVMsRUFBRSxDQUFDLEdBQUksR0FBRSxLQUFLLEdBQUcsQUFBbUIsT0FBTyxVQUFVLFNBQVMsS0FBSyxDQUFDLElBQW5ELGlCQUFxRCxNQUFPLE1BQUssT0FBTyxHQUFJLFdBQVUsa0JBQWtCLENBQUMsRUFBRSxHQUFJLEdBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxNQUFPLE1BQUssUUFBUSxDQUFDLENBQUMsRUFBeUIsT0FBbkIsR0FBRSxHQUFHLEVBQUUsR0FBSSxNQUFLLENBQUMsRUFBTyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEtBQUssU0FBUyxFQUFFLENBQUMsR0FBSSxHQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsR0FBSSxHQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFJLEdBQUUsTUFBTyxFQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLEdBQUksR0FBRSxDQUFDLEVBQUUsQUFBQyxBQVpodWlELEdBWWt1aUQsRUFBRSxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsRUFBRSxlQUFlLEVBQUUsRUFBRSxlQUFlLEVBQUUsRUFBRSxzQkFBc0IsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsR0FBRyxxQkFBcUIsR0FBRyx1QkFBdUIsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLEdBQUksR0FBRSxFQUFFLGdCQUFnQixFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLGlCQUFpQixFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxFQUFFLE9BQU8sVUFBVSxTQUFTLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUUsZ0JBQWdCLElBQUcsTUFBTyxJQUFJLEdBQUUsQ0FBQyxFQUFFLEtBQUssUUFBUSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsTUFBTSxXQUFXLEdBQUcsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUksR0FBRSxLQUFLLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxFQUFFLFlBQVksRUFBRSxXQUFXLElBQUssR0FBRSxZQUFZLElBQUksS0FBSyxJQUFJLEVBQUUsS0FBSyxJQUFJLEdBQUcsS0FBSyxNQUFNLEdBQUcsS0FBSyxPQUFPLENBQUMsRUFBRSxLQUFLLEtBQUssR0FBSSxHQUFFLEtBQUssS0FBSyxVQUFVLEVBQUUsR0FBSSxHQUFFLEVBQUUsYUFBYSxLQUFLLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxFQUFFLEtBQU0sSUFBSSxPQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEtBQUssS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLFdBQVcsQ0FBQyxHQUFJLEdBQUUsR0FBRyxFQUFFLEFBQVUsTUFBTyxHQUFFLFlBQW5CLFNBQThCLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxBQUF5QixFQUFFLEtBQUssRUFBRSxVQUFVLElBQTVDLHVCQUE4QyxHQUFJLFlBQVcsRUFBRSxVQUFVLEVBQUUsRUFBRSxXQUFZLEdBQUUsRUFBRSxxQkFBcUIsS0FBSyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQU0sSUFBSSxPQUFNLEVBQUUsRUFBRSxFQUFFLEtBQUssVUFBVSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLEdBQUksR0FBRSxHQUFJLEdBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxLQUFNLEdBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxNQUFPLEdBQUUsTUFBTSxDQUFDLEVBQUUsVUFBVSxLQUFLLFNBQVMsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsRUFBRSxLQUFLLEtBQUssRUFB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QUFFLEdBQUksR0FBRSxLQUFLLFFBQVEsRUFBRSxLQUFLLEdBQUcsRUFBRSxZQUFZLEVBQUUsV0FBVyxJQUFLLEdBQUUsV0FBVyxDQUFDLEVBQUUsV0FBVyxBQUFJLEVBQUUsYUFBTixHQUFtQixHQUFFLFdBQVcsTUFBTSxDQUFFLElBQUcsRUFBRSxZQUFZLEVBQUUsV0FBVyxLQUFLLEdBQUcsRUFBRSxZQUFhLEdBQUUsWUFBWSxJQUFJLEdBQUcsRUFBRSxZQUFZLEVBQUUsV0FBVyxJQUFJLEFBQUksSUFBRyxFQUFFLGFBQVQsR0FBdUIsR0FBRSxZQUFZLElBQUksS0FBSyxJQUFJLEVBQUUsS0FBSyxJQUFJLEdBQUcsS0FBSyxNQUFNLEdBQUcsS0FBSyxPQUFPLENBQUMsRUFBRSxLQUFLLEtBQUssR0FBSSxHQUFFLEtBQUssS0FBSyxVQUFVLEVBQUUsR0FBSSxHQUFFLEVBQUUsYUFBYSxLQUFLLEtBQUssRUFBRSxVQUFVLEVBQUUsR0FBRyxJQUFJLEVBQUUsS0FBSyxLQUFNLElBQUksT0FBTSxFQUFFLEVBQUUsRUFBRSxLQUFLLE9BQU8sR0FBSSxHQUFFLEVBQUUsaUJBQWlCLEtBQUssS0FBSyxLQUFLLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLEdBQUksR0FBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEtBQU0sR0FBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLE1BQU8sR0FBRSxNQUFNLENBQUMsRUFBRSxVQUFVLEtBQUssU0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxLQUFLLEVBQUUsS0FBSyxRQUFRLFVBQVUsRUFBRSxLQUFLLFFBQVEsV0FBVyxFQUFFLEdBQUcsR0FBRyxLQUFLLE1BQU0sTUFBTSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEFBQUssSUFBTCxHQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsQUFBVSxNQUFPLElB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RSxHQUFHLEVBQUUsT0FBTyxNQUFPLEVBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBUSxHQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxjQUFjLFNBQVMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLFNBQVMsU0FBUyxFQUFFLENBQUMsRUFBRyxHQUFFLEtBQUssV0FBVyxFQUFFLE1BQU0sWUFBWSxFQUFFLE1BQU0sV0FBVyxFQUFFLE9BQU8sRUFBRSxDQUFDLEdBQUksR0FBRSxLQUFLLE1BQU0sRUFBRSxNQUFNLE1BQU0sRUFBRSxNQUFNLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsYUFBYSxHQUFJLEdBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsT0FBTyxhQUFhLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxhQUFhLE1BQU0sS0FBSyxHQUFJLFlBQVcsQ0FBQyxDQUFDLENBQUMsTUFBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLE9BQVEsR0FBRSxHQUFJLEdBQUUsS0FBSyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLE9BQVEsR0FBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFLFVBQVUsR0FBRyxNQUFPLFFBQU8sYUFBYSxNQUFNLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBUSxHQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEdBQUcsT0FBTyxhQUFhLEVBQUUsRUFBRSxFQUFFLE1BQU8sRUFBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLFdBQVcsU0FBUyxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEFBQVEsT0FBTyxHQUFFLEVBQUUsV0FBVyxDQUFDLEtBQS9CLE9BQW9DLEVBQUUsRUFBRSxHQUFHLEFBQVEsT0FBTyxHQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsS0FBakMsT0FBdUMsR0FBRSxNQUFPLEdBQUUsT0FBTyxJQUFLLEdBQUUsT0FBTyxLQUFLLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBSSxHQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEFBQVEsT0FBTyxHQUFFLEVBQUUsV0FBVyxDQUFDLEtBQS9CLE9BQW9DLEVBQUUsRUFBRSxHQUFHLEFBQVEsT0FBTyxHQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsS0FBakMsT0FBdUMsR0FBRSxNQUFPLEdBQUUsT0FBTyxJQUFLLEdBQUUsT0FBTyxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRyxHQUFFLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxFQUFHLEdBQUUsTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUksR0FBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxJQUFJLEdBQUcsR0FBRyxNQUFPLEVBQUMsRUFBRSxFQUFFLGNBQWMsU0FBUyxFQUFFLENBQUMsTUFBTyxHQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLGNBQWMsU0FBUyxFQUFFLENBQUMsT0FBUSxHQUFFLEdBQUksR0FBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxXQUFXLENBQUMsRUFBRSxNQUFPLEVBQUMsRUFBRSxFQUFFLFdBQVcsU0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUksT0FBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxHQUFJLEdBQUUsRUFBRSxNQUFNLElBQUksRUFBRSxLQUFLLFVBQVUsRUFBRyxHQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssTUFBTSxHQUFHLEVBQUUsTUFBTSxDQUFDLElBQUksR0FBRyxBQUFJLElBQUosRUFBTSxHQUFHLEFBQUksSUFBSixFQUFNLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRyxJQUFHLE1BQU0sRUFBRSxLQUFLLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxLQUFLLE1BQU0sS0FBSyxFQUFFLENBQUMsTUFBTyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxXQUFXLFNBQVMsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLElBQUssR0FBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFFBQVMsR0FBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsR0FBRyxHQUFHLEFBQU0sS0FBSSxFQUFFLEtBQVosS0FBaUIsSUFBSSxNQUFPLEdBQUUsR0FBSSxBQUFJLElBQUosRUFBRixFQUFVLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLGFBQWEsRUFBRSxRQUFRLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLE9BQVEsR0FBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLElBQUksR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEFBQUksSUFBSixHQUFPLENBQUMsSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUcsR0FBRSxFQUFFLEVBQUUsS0FBSyxHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsR0FBRyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU8sR0FBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFFBQVEsR0FBRyxlQUFlLEdBQUcsYUFBYSxHQUFHLFlBQVksR0FBRyxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsc0JBQXNCLEdBQUcsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLEdBQUksR0FBRSxVQUFVLENBQUMsT0FBUSxHQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRSxPQUFRLEdBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxXQUFXLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFPLEVBQUMsRUFBRSxFQUFFLEVBQUUsUUFBUSxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUcsT0FBUSxHQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFLLEdBQUUsRUFBRSxLQUFLLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBSSxHQUFFLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxZQUFXLEVBQUUsRUFBRSxDQUFDLE1BQU8sR0FBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTyxJQUFHLEdBQUksR0FBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLFlBQVcsRUFBRSxDQUFDLE9BQVEsR0FBRSxFQUFFLE9BQU8sR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxXQUFZLEdBQUUsRUFBRSxXQUFXLEFBQUksSUFBSixHQUFRLEdBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsYUFBYSxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsU0FBUyxFQUFFLEFBQUksRUFBRSxVQUFOLEdBQWdCLEdBQUUsWUFBWSxHQUFHLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsWUFBWSxHQUFHLEVBQUUsU0FBUyxFQUFFLFlBQVksQ0FBQyxFQUFFLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLFlBQVcsRUFBRSxFQUFFLENBQUMsRUFBRSxZQUFZLEVBQUUsV0FBVyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFlBQVksRUFBRSxXQUFXLElBQUksRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLFdBQVcsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxZQUFZLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEVBQUUsU0FBVSxHQUFFLE9BQU8sR0FBRyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsWUFBYSxLQUFJLEdBQUcsRUFBRSxFQUFFLFdBQVksR0FBRSxFQUFFLFdBQVcsRUFBRyxJQUFHLEVBQUcsR0FBRSxHQUFHLEtBQUssSUFBRyxFQUFFLEVBQUUsRUFBRSxLQUFLLElBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBUSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsR0FBRyxFQUFFLEVBQUcsR0FBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUUsR0FBSSxHQUFFLEdBQUcsTUFBTSxHQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLE9BQVMsR0FBRSxFQUFFLEVBQUUsSUFBSSxHQUFHLEFBQUcsRUFBRSxHQUFMLEdBQVEsTUFBTyxJQUFHLEVBQUUsVUFBVSxFQUFFLEVBQUUsU0FBUyxDQUFDLFlBQVcsRUFBRSxDQUFDLEdBQUksR0FBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFHLEdBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLGFBQWEsRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssR0FBRyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEdBQUcsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQUFBSSxFQUFFLEtBQUssV0FBWCxFQUFvQixNQUFNLEdBQUcsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxHQUFJLEdBQUUsR0FBRyxFQUFFLEFBQUksSUFBSixFQUFNLEVBQUcsR0FBRSxVQUFVLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxBQUFJLEVBQUUsTUFBTSxPQUFaLEVBQWlCLEVBQUUsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEFBQUksRUFBRSxNQUFNLE9BQVosR0FBbUIsR0FBRSxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxHQUFHLEVBQUUsTUFBTyxHQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsUUFBUyxHQUFFLE1BQU8sR0FBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFFLEdBQUUsVUFBVSxFQUFFLE9BQU8sS0FBSyxDQUFDLE9BQU8sRUFBRSxVQUFVLEdBQUcsQUFBSSxFQUFFLEtBQUssV0FBWCxFQUFvQixDQUFDLFlBQVcsRUFBRSxFQUFFLENBQUMsT0FBUSxHQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsR0FBRyxHQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsR0FBRyxJQUFJLEVBQUUsTUFBTyxHQUFFLEdBQUcsQUFBSSxFQUFFLFlBQU4sRUFBZ0IsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsV0FBVyxHQUFJLEdBQUUsTUFBTyxHQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFVBQVUsQUFBSSxJQUFKLEdBQU8sRUFBRSxTQUFTLEdBQUcsRUFBRSxPQUFPLEdBQUksR0FBRSxhQUFhLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxjQUFjLEVBQUUsR0FBRyxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxhQUFhLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLE1BQU8sR0FBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTLEFBQUcsRUFBRSxFQUFFLGNBQVAsR0FBcUIsQ0FBQyxFQUFFLFVBQVUsS0FBTSxHQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTyxHQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLFNBQVMsSUFBSSxFQUFFLGNBQWUsR0FBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxFQUFFLFlBQVksRUFBRSxXQUFXLEdBQUcsR0FBSSxHQUFFLEVBQUUsRUFBRSxFQUFFLEFBQUksRUFBRSxLQUFLLFlBQVgsR0FBc0IsTUFBTyxFQUFDLENBQUMsTUFBTyxHQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRyxHQUFFLEVBQUUsRUFBRSxFQUFFLEFBQUksRUFBRSxLQUFLLFlBQVgsRUFBcUIsRUFBRSxHQUFHLEVBQUUsVUFBVyxHQUFFLEVBQUUsRUFBRSxFQUFFLEFBQUksRUFBRSxLQUFLLFlBQVgsR0FBc0IsRUFBRSxDQUFDLENBQUMsWUFBVyxFQUFFLEVBQUUsQ0FBQyxPQUFRLEdBQUUsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsR0FBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLEdBQUcsSUFBSSxFQUFFLE1BQU8sR0FBRSxHQUFHLEFBQUksRUFBRSxZQUFOLEVBQWdCLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLFdBQVcsR0FBSSxHQUFFLE1BQU8sR0FBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxFQUFFLEFBQUksSUFBSixHQUFPLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLFNBQVMsR0FBRyxFQUFFLE9BQU8sR0FBSSxHQUFFLGFBQWEsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLGNBQWMsR0FBSSxDQUFJLEVBQUUsV0FBTixHQUFnQixFQUFFLGVBQWUsR0FBRyxLQUFLLEVBQUUsU0FBUyxFQUFFLGNBQWUsR0FBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLGFBQWEsR0FBRyxFQUFFLGNBQWMsRUFBRSxZQUFZLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsV0FBVyxFQUFFLFlBQVksQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsVUFBVSxHQUFJLEdBQUUsTUFBTyxHQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFVBQVUsQUFBRyxFQUFFLEVBQUUsYUFBUCxHQUFvQixDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsV0FBVyxHQUFJLEdBQUUsRUFBRSxFQUFFLEVBQUUsQUFBSSxFQUFFLEtBQUssWUFBWCxHQUFzQixNQUFPLEVBQUMsU0FBUyxFQUFFLGlCQUFpQixHQUFJLEdBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLFlBQVksQUFBSSxFQUFFLEtBQUssWUFBWCxFQUFxQixNQUFPLE9BQU8sR0FBRSxnQkFBZ0IsRUFBRSxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUMsTUFBTyxHQUFFLGlCQUFrQixHQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsR0FBRyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRyxHQUFFLEVBQUUsRUFBRSxFQUFFLEFBQUksRUFBRSxLQUFLLFlBQVgsRUFBcUIsRUFBRSxHQUFHLEVBQUUsVUFBVyxHQUFFLEVBQUUsRUFBRSxFQUFFLEFBQUksRUFBRSxLQUFLLFlBQVgsR0FBc0IsRUFBRSxDQUFDLENBQUMsWUFBVyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLFlBQVksRUFBRSxLQUFLLFNBQVMsRUFBRSxLQUFLLFlBQVksRUFBRSxLQUFLLFVBQVUsRUFBRSxLQUFLLEtBQUssQ0FBQyxDQUFDLGFBQVksQ0FBQyxLQUFLLEtBQUssS0FBSyxLQUFLLE9BQU8sRUFBRSxLQUFLLFlBQVksS0FBSyxLQUFLLGlCQUFpQixFQUFFLEtBQUssWUFBWSxFQUFFLEtBQUssUUFBUSxFQUFFLEtBQUssS0FBSyxFQUFFLEtBQUssT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLEtBQUssT0FBTyxFQUFFLEtBQUssV0FBVyxHQUFHLEtBQUssT0FBTyxFQUFFLEtBQUssT0FBTyxFQUFFLEtBQUssT0FBTyxFQUFFLEtBQUssT0FBTyxLQUFLLEtBQUssWUFBWSxFQUFFLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssTUFBTSxFQUFFLEtBQUssVUFBVSxFQUFFLEtBQUssVUFBVSxFQUFFLEtBQUssVUFBVSxFQUFFLEtBQUssV0FBVyxFQUFFLEtBQUssWUFBWSxFQUFFLEtBQUssYUFBYSxFQUFFLEtBQUssV0FBVyxFQUFFLEtBQUssZ0JBQWdCLEVBQUUsS0FBSyxTQUFTLEVBQUUsS0FBSyxZQUFZLEVBQUUsS0FBSyxVQUFVLEVBQUUsS0FBSyxZQUFZLEVBQUUsS0FBSyxpQkFBaUIsRUFBRSxLQUFLLGVBQWUsRUFBRSxLQUFLLE1BQU0sRUFBRSxLQUFLLFNBQVMsRUFBRSxLQUFLLFdBQVcsRUFBRSxLQUFLLFdBQVcsRUFBRSxLQUFLLFVBQVUsR0FBSSxHQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsS0FBSyxVQUFVLEdBQUksR0FBRSxNQUFNLEVBQUcsR0FBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLFFBQVEsR0FBSSxHQUFFLE1BQU0sRUFBRyxHQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUUsS0FBSyxTQUFTLEVBQUUsR0FBRSxLQUFLLFNBQVMsRUFBRSxHQUFFLEtBQUssT0FBTyxFQUFFLEtBQUssT0FBTyxLQUFLLEtBQUssT0FBTyxLQUFLLEtBQUssUUFBUSxLQUFLLEtBQUssU0FBUyxHQUFJLEdBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEtBQUssR0FBSSxHQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFFLEtBQUssSUFBSSxFQUFFLEtBQUssU0FBUyxFQUFFLEtBQUssU0FBUyxFQUFFLEtBQUssTUFBTSxHQUFJLEdBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUUsS0FBSyxLQUFLLEVBQUUsS0FBSyxNQUFNLEVBQUUsS0FBSyxZQUFZLEVBQUUsS0FBSyxTQUFTLEVBQUUsS0FBSyxNQUFNLEVBQUUsS0FBSyxRQUFRLEVBQUUsS0FBSyxXQUFXLEVBQUUsS0FBSyxRQUFRLEVBQUUsS0FBSyxPQUFPLEVBQUUsS0FBSyxPQUFPLEVBQUUsS0FBSyxTQUFTLENBQUMsQ0FBQyxZQUFXLEVBQUUsQ0FBQyxHQUFJLEdBQUUsTUFBTyxJQUFHLEVBQUUsTUFBTyxHQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsRUFBRSxVQUFVLEVBQUcsR0FBRSxFQUFFLE9BQU8sUUFBUSxFQUFFLEVBQUUsWUFBWSxFQUFFLEVBQUUsS0FBSyxHQUFJLEdBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sQUFBSSxFQUFFLE9BQU4sRUFBVyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxTQUFTLENBQUMsRUFBRSxHQUFHLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFXLEVBQUUsQ0FBQyxHQUFJLEdBQUUsR0FBRSxDQUFDLEVBQUUsTUFBTyxLQUFJLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxZQUFZLEVBQUUsRUFBRSxPQUFPLEdBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxlQUFlLEVBQUUsRUFBRSxPQUFPLFNBQVMsRUFBRSxXQUFXLEVBQUUsRUFBRSxPQUFPLFlBQVksRUFBRSxXQUFXLEVBQUUsRUFBRSxPQUFPLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxFQUFFLE9BQU8sVUFBVSxFQUFFLFNBQVMsRUFBRSxFQUFFLFlBQVksRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLFlBQVcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFPLEdBQUUsR0FBSSxHQUFFLEVBQUUsR0FBRyxJQUFJLEdBQUksR0FBRSxHQUFHLEVBQUUsRUFBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxHQUFJLEdBQUUsRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsTUFBTyxJQUFFLEVBQUUsQ0FBQyxFQUFFLEFBQUksSUFBSixHQUFRLEdBQUUsR0FBRyxHQUFJLEdBQUUsR0FBSSxJQUFFLE1BQU8sR0FBRSxNQUFNLEdBQUcsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsT0FBTyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxHQUFHLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLFVBQVUsR0FBRyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUcsSUFBRSxVQUFVLEVBQUUsR0FBRyxHQUFHLEVBQUUsT0FBTyxHQUFJLEdBQUUsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBSyxHQUFJLEdBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxFQUFFLEtBQUssR0FBSSxHQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxZQUFZLEdBQUcsRUFBRSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxZQUFZLEVBQUUsWUFBWSxHQUFJLEdBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBSSxJQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxpQkFBaUIsR0FBSSxHQUFFLEVBQUUsaUJBQWlCLEtBQUssQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLENBQUMsR0FBRyxHQUFFLENBQUMsRUFBRSxBQUFJLEVBQUUsWUFBTixHQUFpQixJQUFJLEVBQUUsTUFBTyxHQUFFLEdBQUcsQUFBSSxFQUFFLFlBQU4sRUFBZ0IsS0FBSyxDQUFDLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsR0FBSSxHQUFFLEVBQUUsWUFBWSxFQUFvSCxHQUE5RyxDQUFJLEVBQUUsV0FBTixHQUFnQixFQUFFLFVBQVUsSUFBSyxHQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxBQUFJLEVBQUUsS0FBSyxZQUFYLElBQWtDLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxPQUFPLEdBQUksR0FBRSxFQUFFLEVBQUUsRUFBRSxBQUFJLEVBQUUsS0FBSyxZQUFYLEdBQXNCLE1BQU8sRUFBQyxDQUFDLE1BQU8sR0FBRSxPQUFPLEVBQUUsSUFBSSxFQUFHLEdBQUUsRUFBRSxFQUFFLEVBQUUsQUFBSSxFQUFFLEtBQUssWUFBWCxFQUFxQixFQUFFLEdBQUksR0FBRSxTQUFTLEVBQUUsYUFBYyxHQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEdBQUksSUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUMsRUFBRSxHQUFJLElBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFDLEVBQUUsR0FBSSxJQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUcsRUFBQyxFQUFFLEdBQUksSUFBRSxFQUFFLEVBQUUsR0FBRyxHQUFHLEVBQUMsRUFBRSxHQUFJLElBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxFQUFDLEVBQUUsR0FBSSxJQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksRUFBQyxFQUFFLEdBQUksSUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEVBQUMsRUFBRSxHQUFJLElBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxFQUFDLEVBQUUsR0FBSSxJQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssRUFBQyxDQUFDLEVBQUUsRUFBRSxZQUFZLFNBQVMsRUFBRSxFQUFFLENBQUMsTUFBTyxJQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLGFBQWEsR0FBRSxFQUFFLGFBQWEsR0FBRSxFQUFFLGlCQUFpQixHQUFFLEVBQUUsaUJBQWlCLFNBQVMsRUFBRSxFQUFFLENBQUMsTUFBTyxJQUFHLEVBQUUsTUFBTSxBQUFJLEVBQUUsTUFBTSxPQUFaLEVBQWlCLEVBQUcsR0FBRSxNQUFNLE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLFFBQVEsU0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRSxNQUFPLEdBQUUsR0FBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLE9BQU8sQUFBSSxFQUFFLFdBQU4sR0FBZ0IsQUFBTSxFQUFFLFNBQVIsS0FBZ0IsSUFBSSxFQUFFLE1BQU8sSUFBRSxFQUFFLEFBQUksRUFBRSxZQUFOLEVBQWdCLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxBQUFJLEVBQUUsT0FBTixFQUFXLEVBQUUsTUFBTSxFQUFFLEdBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEdBQUcsRUFBRSxHQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBUSxJQUFFLEVBQUcsR0FBRSxPQUFPLEtBQUssRUFBRSxHQUFJLEdBQUUsT0FBTyxLQUFLLEVBQUUsR0FBSSxHQUFFLE9BQU8sTUFBTSxFQUFFLEdBQUksR0FBRSxPQUFPLEtBQUssRUFBRSxHQUFJLEdBQUUsT0FBTyxRQUFRLEdBQUcsRUFBRSxFQUFFLEdBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxJQUFJLEVBQUUsR0FBRSxFQUFFLEVBQUUsT0FBTyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUUsRUFBRSxFQUFFLE9BQU8sTUFBTSxHQUFHLEdBQUcsRUFBRSxHQUFFLEVBQUUsRUFBRSxPQUFPLE1BQU0sR0FBRyxHQUFHLEVBQUUsR0FBRSxFQUFFLEFBQUksRUFBRSxRQUFOLEVBQVksRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsT0FBTyxPQUFPLEVBQUUsT0FBTyxNQUFNLFFBQVMsSUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLE1BQU0sTUFBTSxFQUFFLEdBQUUsRUFBRSxFQUFFLE9BQU8sTUFBTSxRQUFRLEVBQUUsR0FBRyxHQUFHLEVBQUUsT0FBTyxNQUFPLEdBQUUsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFLE9BQU8sSUFBSyxJQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRSxFQUFFLENBQUMsRUFBRSxHQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRSxFQUFFLEFBQUksRUFBRSxRQUFOLEVBQVksRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxPQUFPLENBQUMsR0FBSSxHQUFFLEVBQUcsR0FBRSxPQUFPLEdBQUcsSUFBSSxFQUFFLEdBQUksSUFBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEFBQUksRUFBRSxRQUFOLEVBQVksRUFBRSxJQUFJLEVBQUUsQUFBSSxFQUFFLFdBQU4sR0FBaUIsSUFBRyxJQUFJLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxBQUFJLEVBQUUsV0FBTixHQUFpQixHQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQUFBSyxFQUFFLFNBQVAsR0FBYyxHQUFHLEVBQUUsT0FBTyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLFFBQVMsT0FBTSxFQUFFLE9BQU8sTUFBTSxTQUFVLEdBQUUsVUFBVSxFQUFFLGtCQUFtQixHQUFFLE9BQU8sTUFBTSxFQUFFLFFBQVEsR0FBSSxHQUFFLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxvQkFBb0IsR0FBRSxFQUFFLElBQUksRUFBRSxPQUFPLE1BQU0sRUFBRSxRQUFRLEVBQUUsRUFBRSxVQUFVLEVBQUUsT0FBTyxNQUFNLEVBQUUsUUFBUSxHQUFJLEdBQUUsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLE9BQU8sTUFBTSxRQUFTLEdBQUUsUUFBUSxFQUFFLEVBQUUsT0FBTyxHQUFHLEtBQU0sR0FBRSxPQUFPLEdBQUcsR0FBRyxBQUFLLEVBQUUsU0FBUCxHQUFjLEdBQUcsRUFBRSxPQUFPLEtBQUssQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxrQkFBbUIsR0FBRSxPQUFPLE1BQU0sRUFBRSxRQUFRLEdBQUksR0FBRSxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsa0JBQWtCLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sS0FBSyxPQUFPLElBQUksRUFBRSxPQUFPLEtBQUssV0FBVyxFQUFFLFNBQVMsRUFBRSxFQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxBQUFJLElBQUosR0FBTyxFQUFFLE9BQU8sTUFBTSxFQUFFLFFBQVEsR0FBSSxHQUFFLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxBQUFJLElBQUosR0FBUSxHQUFFLFFBQVEsRUFBRSxFQUFFLE9BQU8sR0FBRyxLQUFNLEdBQUUsT0FBTyxHQUFHLEdBQUcsQUFBSyxFQUFFLFNBQVAsR0FBYyxHQUFHLEVBQUUsT0FBTyxRQUFRLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsa0JBQW1CLEdBQUUsT0FBTyxNQUFNLEVBQUUsUUFBUSxHQUFJLEdBQUUsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxR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QUUsSUFBSSxFQUFFLEFBQUksRUFBRSxZQUFOLEdBQWtCLEdBQUUsU0FBUyxFQUFFLEVBQUUsWUFBWSxFQUFFLEVBQUUsT0FBTyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEFBQUksRUFBRSxZQUFOLEdBQWlCLE1BQU8sR0FBRSxXQUFXLEdBQUcsQ0FBQyxDQUFDLE1BQU8sS0FBSSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRyxDQUFJLEVBQUUsT0FBTixFQUFZLElBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRSxFQUFFLEVBQUUsT0FBTyxHQUFHLEdBQUcsRUFBRSxHQUFFLEVBQUUsRUFBRSxPQUFPLEdBQUcsR0FBRyxFQUFFLEdBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsR0FBRSxFQUFFLEVBQUUsVUFBVSxHQUFHLEdBQUcsRUFBRSxHQUFFLEVBQUUsRUFBRSxVQUFVLEdBQUcsR0FBRyxHQUFJLEdBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFPLEdBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxBQUFJLEVBQUUsVUFBTixFQUFjLEVBQUUsRUFBRSxFQUFFLEVBQUUsV0FBVyxTQUFTLEVBQUUsQ0FBQyxHQUFJLEdBQUUsTUFBTyxJQUFHLEVBQUUsTUFBTyxHQUFFLEVBQUUsTUFBTSxVQUFVLEdBQUcsQUFBSyxJQUFMLElBQVEsQUFBSyxJQUFMLElBQVEsQUFBSyxJQUFMLElBQVEsQUFBTSxJQUFOLEtBQVMsSUFBSSxHQUFHLEFBQU0sSUFBTixJQUFRLEdBQUUsRUFBRSxDQUFDLEVBQUcsR0FBRSxNQUFNLEtBQUssSUFBSSxFQUFFLEdBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxxQkFBcUIsU0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBZ0MsR0FBdEIsQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFrQixBQUFLLEdBQUcsR0FBRSxFQUFFLE9BQU8sUUFBbkIsR0FBMEIsQUFBSSxJQUFKLEdBQU8sRUFBRSxTQUFTLEdBQUcsRUFBRSxVQUFVLE1BQU8sR0FBRSxJQUFJLEFBQUksSUFBSixHQUFRLEdBQUUsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxRQUFTLENBQUksSUFBSixHQUFRLElBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxZQUFZLEVBQUUsRUFBRSxPQUFPLEdBQUcsRUFBRSxHQUFJLEdBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUUsQ0FBQyxFQUFFLEVBQUUsV0FBVyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsVUFBVyxHQUFFLEdBQUcsRUFBRSxNQUFPLEdBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTyxHQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLGdCQUFnQixFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLFlBQVksb0NBQW9DLEVBQUUsQ0FBQyxrQkFBa0IsR0FBRyxZQUFZLEdBQUcsVUFBVSxHQUFHLGFBQWEsR0FBRyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsYUFBYSxFQUFFLFFBQVEsVUFBVSxDQUFDLEtBQUssS0FBSyxFQUFFLEtBQUssS0FBSyxFQUFFLEtBQUssT0FBTyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssTUFBTSxLQUFLLEtBQUssVUFBVSxFQUFFLEtBQUssS0FBSyxHQUFHLEtBQUssUUFBUSxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLGFBQWEsRUFBRSxRQUFRLFNBQVMsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRyxHQUFFLFNBQVMsR0FBRyxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUcsR0FBRSxFQUFFLFdBQVcsRUFBRSxFQUFHLEdBQUUsVUFBVSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUcsSUFBRyxFQUFFLFNBQVMsRUFBRSxFQUFHLElBQUcsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFLLElBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxLQUFLLEVBQUUsSUFBSSxHQUFHLEdBQUcsRUFBRSxBQUFLLEdBQUUsSUFBSSxHQUFHLE9BQWQsRUFBbUIsRUFBRSxLQUFLLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBRSxJQUFHLEdBQUcsQ0FBQyxHQUFHLEFBQUksSUFBRyxJQUFQLEVBQVUsQ0FBQyxFQUFFLEVBQUcsT0FBTSxHQUFJLEdBQUcsSUFBRyxHQUFHLElBQUksVUFBVSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLEdBQUcsT0FBTyxDQUFDLEVBQUUsSUFBSSw4QkFBOEIsRUFBRSxLQUFLLEdBQUcsT0FBTyxDQUFDLEVBQUUsTUFBTSxFQUFHLElBQUcsS0FBTSxHQUFFLEdBQUksSUFBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEdBQUcsR0FBRyxFQUFHLElBQUcsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsRUFBRSxJQUFLLElBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxLQUFLLEVBQUUsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFFLElBQUksR0FBRSxJQUFJLEdBQUcsTUFBTSxDQUFDLEdBQUcsQUFBSSxJQUFHLElBQVAsRUFBVSxDQUFDLEVBQUUsRUFBRyxPQUFNLEdBQUksR0FBRyxJQUFHLEdBQUcsSUFBSSxVQUFVLENBQUMsRUFBRSxJQUFJLHdCQUF3QixFQUFFLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFHLElBQUcsS0FBTSxJQUFHLEVBQUUsTUFBTSxFQUFHLElBQUcsR0FBRyxHQUFJLElBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLEVBQUcsSUFBRyxFQUFHLElBQUcsR0FBRyxHQUFHLENBQUMsRUFBRSxJQUFJLGdDQUFnQyxFQUFFLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxLQUFLLEVBQUUsR0FBRyxFQUFHLEdBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUcsR0FBRSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxJQUFJLGdDQUFnQyxFQUFFLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUcsR0FBRSxLQUFLLEdBQUcsR0FBRyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxVQUFVLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxFQUFFLEVBQUcsSUFBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxVQUFVLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLEdBQUksR0FBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUksR0FBRSxLQUFLLEVBQUUsTUFBTSxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFHLElBQUcsSUFBSSxDQUFDLEdBQUksR0FBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUksR0FBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFJLElBQUksSUFBRyxHQUFHLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUcsR0FBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksSUFBSyxHQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsYUFBYSxHQUFJLEdBQUUsRUFBRSxpQkFBaUIsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxXQUFXLEVBQUUsQ0FBQyxNQUFPLEtBQUksR0FBRyxLQUFNLEtBQUksRUFBRSxPQUFTLFFBQU0sSUFBSSxHQUFLLE1BQUksSUFBSSxHQUFHLENBQUMsWUFBWSxDQUFDLEtBQUssS0FBSyxFQUFFLEtBQUssS0FBSyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssU0FBUyxHQUFHLEtBQUssTUFBTSxFQUFFLEtBQUssS0FBSyxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssS0FBSyxLQUFLLEtBQUssTUFBTSxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssT0FBTyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssS0FBSyxFQUFFLEtBQUssT0FBTyxFQUFFLEtBQUssT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssUUFBUSxLQUFLLEtBQUssU0FBUyxLQUFLLEtBQUssUUFBUSxFQUFFLEtBQUssU0FBUyxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssS0FBSyxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssS0FBSyxFQUFFLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFJLEdBQUUsTUFBTSxHQUFHLEVBQUUsS0FBSyxLQUFLLEdBQUksR0FBRSxNQUFNLEdBQUcsRUFBRSxLQUFLLE9BQU8sS0FBSyxLQUFLLFFBQVEsS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUksR0FBRSxNQUFPLElBQUcsRUFBRSxNQUFPLEdBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLEdBQUcsRUFBRSxNQUFPLEdBQUUsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEdBQUksR0FBRSxNQUFNLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxRQUFRLEdBQUksR0FBRSxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFJLEdBQUUsTUFBTyxJQUFHLEVBQUUsTUFBUSxJQUFFLEVBQUUsT0FBTyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsTUFBTyxJQUFHLEVBQUUsTUFBTyxHQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRyxJQUFHLEdBQUcsRUFBRSxJQUFLLElBQUcsS0FBSyxHQUFJLEdBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRyxDQUFPLEVBQUUsU0FBVCxNQUFpQixFQUFFLFFBQVEsR0FBSSxHQUFFLE9BQU8sTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxNQUFPLEdBQUcsR0FBRSxHQUFJLEdBQUcsR0FBRSxNQUFNLEdBQUcsT0FBTyxLQUFNLEdBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxHQUFJLEdBQUUsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUksR0FBRSxFQUFFLEVBQUUsR0FBRyxXQUFXLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFJLEdBQUUsSUFBSSxFQUFFLEdBQUksR0FBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLEdBQUksR0FBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTyxBQUFPLEdBQUUsU0FBVCxNQUFrQixHQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxPQUFPLEdBQUksR0FBRSxLQUFLLEVBQUUsS0FBSyxHQUFHLEdBQUcsRUFBRSxNQUFPLEdBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLE9BQVEsR0FBRyxHQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVMsR0FBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRyxJQUFHLEdBQUksR0FBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFRLEdBQUUsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQVEsR0FBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLEVBQUUsT0FBUSxHQUFFLE9BQU8sS0FBSyxDQUFDLENBQUMsRUFBRSxhQUFhLEVBQUUsRUFBRSxjQUFjLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxFQUFFLFlBQVksU0FBUyxFQUFFLENBQUMsTUFBTyxHQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxhQUFhLEVBQUUsRUFBRSxRQUFRLFNBQVMsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFJLEdBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsT0FBTyxBQUFJLEVBQUUsV0FBTixFQUFlLE1BQU8sR0FBRSxBQUFNLEdBQUUsRUFBRSxPQUFPLE9BQWpCLElBQXdCLEdBQUUsS0FBSyxJQUFJLEdBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxPQUFPLEdBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxPQUFPLEVBQUUsVUFBVyxHQUFFLEdBQUcsQUFBSSxFQUFFLE9BQU4sRUFBVyxDQUFDLEVBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQUFBSSxJQUFKLEVBQU0sUUFBUSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsTUFBTSxBQUFRLElBQVIsTUFBVSxDQUFDLEVBQUUsRUFBRSxNQUFNLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLE1BQU8sR0FBRSxLQUFLLEtBQUssSUFBSSxDQUFFLEdBQUUsRUFBRSxPQUFVLE9BQUksSUFBSSxHQUFJLElBQUcsSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLHlCQUF5QixFQUFFLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxBQUFJLElBQUcsSUFBUCxFQUFVLENBQUMsRUFBRSxJQUFJLDZCQUE2QixFQUFFLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxFQUFHLElBQUksTUFBSyxJQUFJLEFBQUksRUFBRSxRQUFOLEVBQVksRUFBRSxNQUFNLFVBQVUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLElBQUksc0JBQXNCLEVBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxFQUFFLEtBQUssR0FBRyxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssSUFBSSxFQUFFLEdBQUcsR0FBRyxFQUFFLEVBQUUsRUFBRSxVQUFXLEdBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLEFBQUksSUFBSixFQUFNLFFBQVEsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsQUFBSSxLQUFJLEVBQUUsUUFBVixFQUFpQixDQUFDLEVBQUUsSUFBSSw2QkFBNkIsRUFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFLElBQUksMkJBQTJCLEVBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxFQUFFLE1BQU8sR0FBRSxLQUFLLEtBQUssR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLE9BQVEsR0FBRSxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLE1BQU8sR0FBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQUFBSSxJQUFKLEVBQU0sUUFBUSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFPLEdBQUUsS0FBSyxLQUFLLEdBQUcsSUFBSSxFQUFFLE9BQVEsR0FBRSxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJLEVBQUUsR0FBRyxJQUFJLEdBQUcsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssTUFBTyxHQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxBQUFJLElBQUosRUFBTSxRQUFRLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU8sR0FBRSxLQUFLLE9BQU8sSUFBSSxFQUFFLEVBQUUsS0FBSyxHQUFHLEdBQUcsR0FBRyxJQUFJLEVBQUUsT0FBUSxHQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssTUFBTyxHQUFFLEdBQUcsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQUFBSSxJQUFKLEVBQU0sUUFBUSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxNQUFPLEdBQUUsS0FBSyxVQUFVLEdBQUcsSUFBSSxFQUFFLE9BQVEsR0FBRSxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsS0FBTSxHQUFFLE1BQU8sR0FBRSxLQUFLLE1BQU0sTUFBTSxFQUFFLEtBQUssTUFBTyxHQUFFLEdBQUcsS0FBSyxFQUFFLE9BQVEsR0FBRyxHQUFFLEVBQUUsU0FBVSxHQUFFLEdBQUcsR0FBSSxHQUFFLE1BQU8sR0FBRSxFQUFFLEtBQUssVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLE9BQVEsR0FBRSxLQUFLLE1BQU0sR0FBSSxPQUFNLEVBQUUsS0FBSyxTQUFTLEdBQUcsRUFBRSxTQUFTLEVBQUUsS0FBSyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsT0FBUSxHQUFFLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsUUFBUSxHQUFHLEVBQUUsUUFBUSxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUUsS0FBSyxNQUFPLEdBQUUsR0FBRyxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsQUFBSSxJQUFKLEVBQU0sUUFBUSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLEVBQUUsT0FBTyxPQUFRLEdBQUUsS0FBSyxNQUFNLE9BQU8sYUFBYSxDQUFDLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksRUFBRSxPQUFRLEdBQUUsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxPQUFPLEtBQU0sR0FBRSxNQUFPLEdBQUUsS0FBSyxLQUFLLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxLQUFLLE1BQU8sR0FBRSxHQUFHLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxBQUFJLElBQUosRUFBTSxRQUFRLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUcsRUFBRSxPQUFPLE9BQVEsR0FBRSxLQUFLLFNBQVMsT0FBTyxhQUFhLENBQUMsR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLE9BQVEsR0FBRSxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLE9BQU8sS0FBTSxHQUFFLE1BQU8sR0FBRSxLQUFLLFFBQVEsTUFBTSxFQUFFLEtBQUssTUFBTyxHQUFFLEdBQUcsSUFBSSxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQUFBSSxJQUFKLEVBQU0sUUFBUSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFLLE9BQU0sRUFBRSxPQUFPLENBQUMsRUFBRSxJQUFJLHNCQUFzQixFQUFFLEtBQUssR0FBRyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU8sR0FBRSxLQUFLLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssS0FBSyxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssR0FBRyxVQUFXLElBQUcsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLEFBQUksSUFBSixFQUFNLFFBQVEsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLE9BQVEsSUFBRyxHQUFHLEFBQUksRUFBRSxXQUFOLEVBQWUsTUFBTyxHQUFFLFNBQVMsR0FBRSxFQUFFLFVBQVUsR0FBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssT0FBUSxJQUFHLEdBQUcsQUFBSSxJQUFKLEdBQU8sQUFBSSxJQUFKLEVBQU0sWUFBYSxJQUFHLEdBQUcsRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsR0FBRyxBQUFJLElBQUosRUFBTSxRQUFRLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUcsTUFBSyxRQUFTLEdBQUUsRUFBRSxLQUFLLEdBQUcsVUFBVyxHQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxLQUFLLEdBQUcsQUFBSSxJQUFKLEVBQU0sTUFBTSxLQUFLLEVBQUUsR0FBRyxFQUFFLFlBQWEsR0FBRSxFQUFFLEtBQUssR0FBRyxVQUFXLEdBQUUsRUFBRSxJQUFJLHFCQUFxQixFQUFFLEtBQUssR0FBRyxLQUFLLEVBQUUsR0FBRyxFQUFFLFVBQVcsSUFBRyxJQUFJLEtBQUssRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLEdBQUcsQUFBSSxJQUFKLEVBQU0sUUFBUSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBSSxPQUFNLElBQUssS0FBSSxHQUFHLE9BQU8sQ0FBQyxFQUFFLElBQUksK0JBQStCLEVBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsT0FBTyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEdBQUcsQUFBSSxJQUFKLEVBQU0sWUFBYSxJQUFHLEVBQUUsS0FBSyxPQUFRLElBQUcsR0FBRyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFJLEdBQUUsR0FBRyxHQUFFLEdBQUksR0FBRSxJQUFHLEFBQUksSUFBSixFQUFNLFFBQVEsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxLQUFLLEdBQUcsVUFBVyxJQUFHLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxBQUFJLElBQUosRUFBTSxRQUFRLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxJQUFLLElBQUcsR0FBRyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsTUFBTSxFQUFHLElBQUcsR0FBRyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsTUFBTSxFQUFHLElBQUcsR0FBRyxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLENBQUMsRUFBRSxJQUFJLHNDQUFzQyxFQUFFLEtBQUssR0FBRyxLQUFLLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLE9BQVEsSUFBRyxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsQUFBSSxJQUFKLEVBQU0sUUFBUSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSwyQkFBMkIsRUFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxPQUFRLElBQUcsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssR0FBRyxHQUFFLEVBQUUsUUFBUSxFQUFHLElBQUcsRUFBRSxTQUFTLE1BQU0sR0FBRyxJQUFJLEdBQUUsTUFBTSxFQUFFLENBQUcsS0FBRSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQUFBSSxJQUFKLEVBQU0sUUFBUSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFFLEdBQUcsS0FBSyxHQUFFLEdBQUcsR0FBRSxFQUFFLEtBQUssRUFBRSxRQUFRLE9BQU0sQ0FBQyxHQUFHLEFBQUssS0FBTCxHQUFPLENBQUMsSUFBSSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEFBQUksSUFBSixFQUFNLFFBQVEsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFFLEdBQUcsR0FBRSxBQUFJLEVBQUUsT0FBTixFQUFXLENBQUMsRUFBRSxJQUFJLDRCQUE0QixFQUFFLEtBQUssR0FBRyxLQUFLLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxFQUFHLEdBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxDQUFDLFNBQVMsQUFBSyxLQUFMLEdBQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsQUFBSSxJQUFKLEVBQU0sUUFBUSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUcsR0FBRyxNQUFLLEtBQUksS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEFBQUksSUFBSixFQUFNLFFBQVEsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRSxFQUFFLEVBQUUsRUFBRSxHQUFJLEtBQUssTUFBSyxLQUFJLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxFQUFFLElBQUksNEJBQTRCLEVBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLEFBQUssRUFBRSxPQUFQLEdBQVksTUFBTSxHQUFHLEFBQUksRUFBRSxLQUFLLE9BQVgsRUFBZ0IsQ0FBQyxFQUFFLElBQUksdUNBQXVDLEVBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSw4QkFBOEIsRUFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSx3QkFBd0IsRUFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLEdBQUcsQUFBSSxJQUFKLEVBQU0sWUFBYSxJQUFHLEVBQUUsS0FBSyxPQUFRLElBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxHQUFFLENBQUMsRUFBRSxTQUFTLEdBQUUsRUFBRSxVQUFVLEdBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsT0FBTyxHQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxBQUFLLEVBQUUsT0FBUCxJQUFjLEdBQUUsS0FBSyxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBRSxFQUFFLFFBQVEsRUFBRyxJQUFHLEVBQUUsU0FBUyxNQUFNLEdBQUcsSUFBSSxHQUFFLE1BQU0sRUFBRSxDQUFHLEtBQUUsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLEFBQUksSUFBSixFQUFNLFFBQVEsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBRyxBQUFJLEtBQUksS0FBUixFQUFXLENBQUMsSUFBSSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFHLEdBQUUsRUFBRSxRQUFRLEdBQUksSUFBRyxJQUFHLEdBQUUsSUFBRyxJQUFJLFFBQU8sR0FBRyxJQUFJLEdBQUUsTUFBTSxFQUFFLENBQUUsSUFBRyxJQUFFLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxBQUFJLElBQUosRUFBTSxRQUFRLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUUsR0FBRyxHQUFFLEVBQUUsTUFBTSxFQUFDLENBQUMsR0FBRyxLQUFLLEdBQUUsR0FBRyxHQUFFLEVBQUUsTUFBTSxHQUFFLEVBQUUsT0FBTyxHQUFFLEFBQUksS0FBSixFQUFNLENBQUMsRUFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFFLENBQUMsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFFLENBQUMsRUFBRSxJQUFJLDhCQUE4QixFQUFFLEtBQUssR0FBRyxLQUFLLENBQUMsRUFBRSxNQUFNLEdBQUcsR0FBRSxFQUFFLEtBQUssT0FBUSxJQUFHLEdBQUcsRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEFBQUksSUFBSixFQUFNLFFBQVEsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFHLElBQUcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLE9BQVEsSUFBRyxLQUFLLEdBQUcsR0FBRSxFQUFFLFNBQVMsRUFBRyxJQUFHLEVBQUUsVUFBVSxNQUFNLEdBQUcsSUFBSSxHQUFFLE1BQU0sRUFBRSxDQUFHLEtBQUUsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLEFBQUksSUFBSixFQUFNLFFBQVEsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQUFBSSxLQUFJLEtBQVIsRUFBVyxDQUFDLElBQUksR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRyxHQUFFLEVBQUUsU0FBUyxHQUFJLElBQUcsSUFBRyxHQUFFLElBQUcsSUFBSSxRQUFPLEdBQUcsSUFBSSxHQUFFLE1BQU0sRUFBRSxDQUFFLElBQUcsSUFBRSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQUFBSSxJQUFKLEVBQU0sUUFBUSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFFLEdBQUcsR0FBRSxFQUFFLE1BQU0sRUFBQyxDQUFDLEdBQUcsS0FBSyxHQUFFLEdBQUcsR0FBRSxFQUFFLE1BQU0sR0FBRSxHQUFHLEdBQUUsQ0FBQyxFQUFFLElBQUksd0JBQXdCLEVBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxFQUFFLE9BQU8sR0FBRSxFQUFFLE1BQU0sR0FBRyxHQUFFLEVBQUUsS0FBSyxPQUFRLElBQUcsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsQUFBSSxJQUFKLEVBQU0sUUFBUSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUcsSUFBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRSxJQUFJLGdDQUFnQyxFQUFFLEtBQUssR0FBRyxLQUFLLENBQUMsRUFBRSxLQUFLLE9BQVEsSUFBRyxHQUFHLEFBQUksS0FBSixFQUFNLFFBQVEsR0FBRyxFQUFFLEVBQUUsR0FBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLEdBQUksR0FBRSxFQUFFLE9BQU8sR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRSxJQUFJLGdDQUFnQyxFQUFFLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRSxFQUFFLEVBQUUsTUFBTyxJQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsUUFBUyxHQUFFLEVBQUUsUUFBUSxHQUFFLEVBQUUsTUFBTSxLQUFNLElBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLElBQUksR0FBRSxHQUFJLEdBQUUsSUFBRyxJQUFHLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxNQUFLLEdBQUUsTUFBSyxFQUFFLEdBQUcsQ0FBQyxBQUFJLEVBQUUsU0FBTixHQUFlLEdBQUUsS0FBSyxJQUFJLFVBQVcsSUFBRyxHQUFHLEFBQUksS0FBSixFQUFNLFFBQVEsRUFBRSxNQUFLLEVBQUUsT0FBTyxLQUFJLEVBQUUsS0FBSyxHQUFHLFVBQVcsSUFBRyxHQUFHLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxBQUFJLElBQUosRUFBTSxRQUFRLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFJLEdBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEVBQUUsSUFBSSx1QkFBdUIsRUFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLE9BQVEsSUFBRyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQUFBSSxJQUFKLEVBQU0sUUFBUSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFLLFlBQVcsRUFBRSxPQUFPLENBQUMsRUFBRSxJQUFJLHlCQUF5QixFQUFFLEtBQUssR0FBRyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssT0FBUSxJQUFHLEVBQUUsRUFBRSxZQUFhLElBQUcsRUFBRSxHQUFHLFlBQWEsSUFBRyxNQUFNLE9BQVEsWUFBVyxNQUFPLEdBQUUsTUFBTyxHQUFFLFNBQVMsR0FBRSxFQUFFLFVBQVUsR0FBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRyxHQUFFLE9BQU8sSUFBSSxFQUFFLFdBQVcsRUFBRSxLQUFLLElBQUssR0FBRSxLQUFLLElBQUksQUFBSSxJQUFKLEtBQVMsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxFQUFFLFNBQVMsRUFBRyxHQUFFLEtBQUssR0FBRyxJQUFLLEtBQUcsRUFBRSxTQUFTLEdBQUcsRUFBRSxVQUFVLEVBQUUsVUFBVSxHQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsTUFBTSxHQUFJLEdBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLEtBQU0sR0FBRSxLQUFLLEdBQUcsR0FBSSxDQUFLLEVBQUUsT0FBUCxHQUFZLElBQUksR0FBSSxDQUFLLEVBQUUsT0FBUCxJQUFhLEFBQUssRUFBRSxPQUFQLEdBQVksSUFBSSxHQUFJLENBQUcsSUFBSCxHQUFNLEFBQUksSUFBSixHQUFPLEFBQUksSUFBSixJQUFRLElBQUksR0FBSSxHQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsV0FBVyxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxNQUFPLEdBQUUsR0FBSSxHQUFFLEVBQUUsTUFBTSxNQUFPLEdBQUUsUUFBUyxHQUFFLE9BQU8sTUFBTSxFQUFFLE1BQU0sS0FBSyxDQUFDLEVBQUUsRUFBRSxpQkFBaUIsU0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsTUFBTyxJQUFHLEVBQUUsTUFBTSxBQUFJLEdBQUcsR0FBRSxFQUFFLE9BQU8sT0FBbEIsRUFBd0IsRUFBSSxJQUFFLEtBQUssR0FBRyxLQUFLLEdBQUcsR0FBRyxDQUFDLEVBQUUsRUFBRSxxQkFBcUIsU0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxFQUFFLE9BQU8sTUFBTyxJQUFHLEVBQUUsTUFBTSxBQUFLLEdBQUUsRUFBRSxPQUFPLE9BQWhCLEdBQXNCLEFBQUssRUFBRSxPQUFQLEdBQVksRUFBRSxBQUFLLEVBQUUsT0FBUCxJQUFhLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFHLEdBQUUsS0FBSyxHQUFHLElBQUssR0FBRSxTQUFTLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxZQUFZLG9DQUFvQyxFQUFFLENBQUMsa0JBQWtCLEdBQUcsWUFBWSxHQUFHLFVBQVUsR0FBRyxZQUFZLEdBQUcsYUFBYSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBSSxHQUFFLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxNQUFNLE1BQU0sTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxFQUFFLEVBQUUsRUFBRSxRQUFRLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEdBQUUsRUFBRSxFQUFFLEdBQUksR0FBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUksR0FBRSxNQUFNLEVBQUUsRUFBRSxHQUFFLEtBQUssR0FBRSxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxBQUFJLEVBQUUsS0FBTixFQUFTLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBSSxHQUFFLEdBQUcsQUFBSSxJQUFKLEVBQU0sTUFBTyxHQUFFLEtBQUssU0FBUyxFQUFFLEtBQUssU0FBUyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxBQUFJLEVBQUUsS0FBTixFQUFTLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBSSxHQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksR0FBRyxJQUFJLEVBQUcsSUFBRyxFQUFFLElBQUksRUFBRSxNQUFNLEdBQUcsR0FBRyxFQUFFLEdBQUksQ0FBSSxJQUFKLEdBQU8sQUFBSSxJQUFKLEdBQU8sTUFBTSxHQUFHLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksQUFBSSxFQUFFLEVBQUUsS0FBUixHQUFhLEdBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxHQUFHLEdBQUcsRUFBRSxBQUFJLElBQUosRUFBTyxHQUFFLEdBQUUsRUFBRSxJQUFJLEFBQUksSUFBSixFQUFPLEdBQUUsRUFBRSxJQUFHLElBQUksR0FBRSxFQUFFLElBQUcsSUFBSSxLQUFNLEdBQUUsRUFBRSxHQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUcsSUFBRSxHQUFJLEdBQUUsSUFBSSxFQUFFLEFBQUksSUFBSixHQUFPLElBQUksSUFBRyxBQUFJLElBQUosR0FBTyxJQUFJLEdBQUUsTUFBTyxHQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUcsR0FBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRyxHQUFFLEdBQUUsR0FBRSxFQUFFLElBQUksRUFBRSxHQUFFLEVBQUUsS0FBTSxHQUFFLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFHLElBQUcsSUFBSSxJQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsR0FBRyxFQUFFLEVBQUUsQUFBSSxJQUFKLEdBQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLEFBQUksSUFBSixFQUFPLElBQUcsRUFBRSxFQUFFLEdBQUcsR0FBRyxFQUFFLEVBQUUsSUFBSSxBQUFHLEVBQUUsRUFBRSxJQUFQLEVBQVUsQ0FBQyxHQUFHLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFJLEdBQUUsS0FBSyxFQUFFLENBQUMsSUFBSSxBQUFJLEtBQUosR0FBUSxJQUFFLEdBQUcsR0FBRyxFQUFFLEVBQUUsR0FBSSxHQUFFLEVBQUUsSUFBRyxFQUFFLEdBQUUsR0FBRyxDQUFHLEtBQUcsRUFBRSxFQUFFLE1BQUssSUFBSSxJQUFJLElBQUksRUFBRSxHQUFHLElBQUcsR0FBRyxFQUFFLEFBQUksSUFBSixHQUFPLElBQUksSUFBRyxBQUFJLElBQUosR0FBTyxJQUFJLEdBQUUsTUFBTyxHQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTyxBQUFJLEtBQUosR0FBUSxHQUFFLEVBQUUsR0FBRyxFQUFFLElBQUcsR0FBRyxJQUFJLEdBQUcsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLGtCQUFrQixFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsR0FBRyxLQUFLLGFBQWEsS0FBSyxlQUFlLEtBQUssYUFBYSxLQUFLLHNCQUFzQixLQUFLLGVBQWUsS0FBSyxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsYUFBYSxHQUFJLEdBQUUsRUFBRSxpQkFBaUIsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxDQUFDLE9BQVEsR0FBRSxFQUFFLE9BQU8sR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFJLEdBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBSSxPQUFNLEVBQUcsR0FBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBSSxHQUFFLEdBQUksT0FBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFJLEdBQUUsR0FBSSxPQUFNLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFJLEdBQUUsR0FBSSxPQUFNLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFJLEdBQUUsR0FBSSxPQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFJLEdBQUUsRUFBRSxHQUFFLEVBQUUsR0FBSSxPQUFNLENBQUMsRUFBRSxZQUFXLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUssWUFBWSxFQUFFLEtBQUssV0FBVyxFQUFFLEtBQUssV0FBVyxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssV0FBVyxFQUFFLEtBQUssVUFBVSxHQUFHLEVBQUUsTUFBTSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsS0FBSyxTQUFTLEVBQUUsS0FBSyxTQUFTLEVBQUUsS0FBSyxVQUFVLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFPLEdBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFLLEtBQUksR0FBRyxDQUFDLFlBQVcsRUFBRSxFQUFFLENBQUMsRUFBRSxZQUFZLEVBQUUsV0FBVyxJQUFJLEVBQUUsRUFBRSxZQUFZLEVBQUUsV0FBVyxJQUFJLEVBQUUsR0FBRyxDQUFDLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFHLEdBQUUsUUFBUSxHQUFHLEVBQUUsU0FBUyxNQUFNLEdBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLE9BQU8sR0FBRyxFQUFFLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxHQUFJLEdBQUUsUUFBUSxHQUFHLEVBQUUsU0FBUyxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUMsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxZQUFXLEVBQUUsRUFBRSxDQUFDLE9BQVEsR0FBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxNQUFPLEtBQUksQ0FBQyxDQUFDLFlBQVcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxFQUFFLEdBQUksT0FBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBSSxHQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQUFBSSxJQUFKLEdBQVEsR0FBRSxFQUFFLEdBQUcsR0FBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxZQUFXLEVBQUUsQ0FBQyxHQUFJLEdBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQyxZQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUUsU0FBUyxHQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLFVBQVcsR0FBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQyxZQUFXLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU8sR0FBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxZQUFXLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBUSxHQUFFLEVBQUUsS0FBSyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxVQUFXLEdBQUUsRUFBRSxVQUFVLEdBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxZQUFXLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEFBQUksRUFBRSxXQUFOLEVBQWUsS0FBSyxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sR0FBRyxJQUFJLEFBQUksSUFBSixFQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRyxHQUFFLEVBQUcsR0FBRSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxBQUFLLEdBQUUsRUFBRSxNQUFULEdBQWMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxBQUFLLEdBQUUsRUFBRSxNQUFULEdBQWMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVcsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsVUFBVSxZQUFZLEVBQUUsRUFBRSxVQUFVLFVBQVUsRUFBRSxFQUFFLFVBQVUsTUFBTSxHQUFFLEdBQUcsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksQUFBSSxFQUFFLEVBQUUsS0FBUixFQUFZLEdBQUUsS0FBSyxFQUFFLEVBQUUsVUFBVSxHQUFFLEVBQUUsRUFBRSxNQUFNLEdBQUcsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFNBQVMsR0FBRyxFQUFFLEVBQUcsR0FBRSxFQUFFLEtBQUssRUFBRSxFQUFFLFVBQVUsR0FBRSxFQUFFLEVBQUUsR0FBRSxJQUFJLEVBQUUsRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLFVBQVUsR0FBSSxHQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsU0FBUyxHQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLElBQUksR0FBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsWUFBWSxHQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sR0FBSSxHQUFFLE1BQU0sSUFBSSxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsS0FBSyxHQUFHLFNBQVMsR0FBRSxHQUFFLENBQUMsR0FBSSxJQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsU0FBUyxHQUFFLEdBQUUsU0FBUyxHQUFFLEdBQUUsVUFBVSxZQUFZLEdBQUUsR0FBRSxVQUFVLFVBQVUsR0FBRSxHQUFFLFVBQVUsV0FBVyxHQUFFLEdBQUUsVUFBVSxXQUFXLEdBQUUsR0FBRSxVQUFVLFdBQVcsR0FBRSxFQUFFLElBQUksR0FBRSxFQUFFLElBQUcsRUFBRSxLQUFJLEdBQUUsU0FBUyxJQUFHLEVBQUUsSUFBSSxHQUFFLEVBQUUsR0FBRSxLQUFLLEdBQUUsVUFBVSxHQUFHLEVBQUUsR0FBRSxHQUFFLFNBQVMsRUFBRSxHQUFFLEVBQUUsS0FBSSxHQUFHLElBQUUsR0FBRSxFQUFFLEdBQUUsRUFBRyxJQUFFLEdBQUUsS0FBSyxLQUFJLEdBQUcsR0FBRyxJQUFLLElBQUUsR0FBRSxNQUFLLEdBQUUsRUFBRSxHQUFFLEdBQUcsR0FBRSxHQUFFLElBQUksSUFBRSxTQUFTLE1BQUssR0FBRSxFQUFFLElBQUcsSUFBSSxJQUFFLEdBQUUsR0FBRSxLQUFJLEdBQUUsR0FBRSxFQUFFLElBQUcsR0FBRSxTQUFTLEdBQUcsSUFBRSxJQUFHLElBQUksSUFBRSxZQUFZLEdBQUcsSUFBRSxFQUFFLEdBQUUsR0FBRyxNQUFLLEdBQUcsQUFBSSxLQUFKLEVBQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFFLEdBQUUsRUFBRSxBQUFJLEdBQUUsU0FBUyxNQUFmLEdBQW1CLEtBQUksR0FBRSxTQUFTLE1BQUssR0FBRSxTQUFTLEdBQUUsSUFBSSxFQUFFLEdBQUUsU0FBUyxNQUFLLElBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBRyxJQUFJLEdBQUUsR0FBRSxBQUFJLEtBQUosRUFBTSxLQUFJLElBQUksR0FBRSxHQUFFLFNBQVMsSUFBRyxBQUFJLEtBQUosR0FBTyxHQUFHLElBQUUsR0FBRSxLQUFLLEVBQUUsTUFBTSxJQUFFLEVBQUUsR0FBRSxLQUFLLElBQUksSUFBRSxTQUFVLElBQUUsR0FBRSxFQUFFLEdBQUUsSUFBSSxHQUFFLEVBQUUsSUFBRyxHQUFFLEVBQUUsR0FBRSxHQUFHLElBQUcsS0FBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRSxFQUFFLEdBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLElBQUksQUFBSSxJQUFKLEdBQVEsR0FBRSxJQUFJLEdBQUUsR0FBRyxFQUFFLEVBQUcsR0FBRSxHQUFHLEdBQUcsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFHLEdBQUUsR0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUksR0FBSSxHQUFFLEdBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEFBQUksSUFBSixFQUFPLEtBQUksR0FBRyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sR0FBRyxHQUFHLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFFLEtBQUssRUFBRyxHQUFFLElBQUksR0FBRyxJQUFJLEVBQUcsR0FBRSxFQUFFLEdBQUksR0FBRSxFQUFFLEdBQUcsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLElBQUksQUFBSSxJQUFKLEdBQVEsR0FBRSxJQUFJLEdBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUcsR0FBRSxHQUFHLEdBQUcsQ0FBRSxHQUFFLEVBQUUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEFBQUcsRUFBRSxHQUFMLEdBQVEsS0FBTSxBQUFJLEtBQUosRUFBTyxLQUFJLEdBQUksR0FBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLEdBQUksR0FBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUksR0FBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsR0FBRSxLQUFLLEVBQUcsR0FBRSxJQUFJLEdBQUcsSUFBSSxFQUFHLEdBQUUsRUFBRSxHQUFJLEdBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFJLEdBQUUsR0FBRyxXQUFXLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUcsSUFBRyxHQUFJLEdBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUMsRUFBRSxHQUFJLElBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxTQUFTLEVBQUUsQ0FBQyxHQUFJLFdBQVUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUksT0FBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLEdBQUcsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssS0FBSyxHQUFHLEtBQUssRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLEtBQUssR0FBRyxLQUFLLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxLQUFLLEdBQUcsS0FBSyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssSUFBSSxHQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFJLElBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUksSUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFFLEdBQUksSUFBRSxHQUFJLE9BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxHQUFJLEdBQUUsRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sR0FBSSxHQUFFLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxRQUFRLEdBQUksR0FBRSxFQUFFLFFBQVEsRUFBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxFQUFFLGdCQUFnQixTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU8sQ0FBSSxFQUFFLEtBQUssWUFBWCxHQUF1QixHQUFFLEtBQUssVUFBVSxTQUFTLEVBQUUsQ0FBQyxHQUFJLEdBQUUsR0FBRSxXQUFXLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLE1BQUssRUFBRSxHQUFHLEVBQUUsSUFBRyxBQUFJLEVBQUUsVUFBVSxFQUFFLEtBQWxCLEVBQXFCLE1BQU8sR0FBRSxHQUFHLEFBQUksRUFBRSxVQUFVLE1BQWhCLEdBQXFCLEFBQUksRUFBRSxVQUFVLE1BQWhCLEdBQXFCLEFBQUksRUFBRSxVQUFVLE1BQWhCLEVBQW9CLE1BQU8sR0FBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsSUFBSSxHQUFHLEFBQUksRUFBRSxVQUFVLEVBQUUsS0FBbEIsRUFBcUIsTUFBTyxHQUFFLE1BQU8sRUFBQyxFQUFFLENBQUMsR0FBRyxHQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsR0FBSSxHQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLE9BQU8sUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxPQUFPLFFBQVEsRUFBRSxHQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxHQUFHLEFBQUksRUFBRSxRQUFRLEVBQUUsRUFBRSxHQUFHLEtBQXJCLEVBQXdCLElBQUksQ0FBQyxNQUFPLEdBQUUsU0FBUyxFQUFHLEdBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFHLEdBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxJQUFJLEdBQUksR0FBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUcsQUFBSyxJQUFMLEdBQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQUFBSSxFQUFFLFdBQU4sR0FBZ0IsSUFBSSxFQUFHLEdBQUUsRUFBRSxFQUFHLEdBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUksR0FBRSxFQUFFLEVBQUcsR0FBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUksSUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUUsRUFBRSxHQUFFLEdBQUUsS0FBSSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxJQUFHLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsVUFBVSxHQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxPQUFPLFNBQVMsRUFBRSxFQUFFLE9BQU8sU0FBUyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxTQUFTLEdBQUcsR0FBRSxDQUFDLEVBQUUsR0FBRyxHQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsVUFBVSxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsTUFBTyxHQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsRUFBRSxVQUFVLElBQUksRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxFQUFFLFNBQVMsR0FBRyxJQUFJLEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFVBQVUsSUFBSSxFQUFFLEVBQUUsV0FBVyxBQUFJLElBQUosRUFBTSxFQUFFLFVBQVUsRUFBRSxLQUFNLEdBQUUsVUFBVSxJQUFJLEVBQUUsVUFBVSxFQUFHLEdBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsWUFBWSxDQUFDLEVBQUUsRUFBRSxVQUFVLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQUFBSyxFQUFFLFdBQVAsR0FBaUIsSUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsU0FBUyxHQUFHLEdBQUcsRUFBRSxVQUFXLEdBQUUsWUFBWSxFQUFFLFdBQVcsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsYUFBYSxFQUFFLFFBQVEsVUFBVSxDQUFDLEtBQUssTUFBTSxLQUFLLEtBQUssUUFBUSxFQUFFLEtBQUssU0FBUyxFQUFFLEtBQUssU0FBUyxFQUFFLEtBQUssT0FBTyxLQUFLLEtBQUssU0FBUyxFQUFFLEtBQUssVUFBVSxFQUFFLEtBQUssVUFBVSxFQUFFLEtBQUssSUFBSSxHQUFHLEtBQUssTUFBTSxLQUFLLEtBQUssVUFBVSxFQUFFLEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLEFBQUMsVUFBUyxFQUFFLENBQUMsQUFBQyxVQUFTLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxDQUFDLEVBQUUsYUFBYSxDQUFDLEdBQUksR0FBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxTQUFTLEVBQUUsT0FBTyxnQkFBZ0IsT0FBTyxlQUFlLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLEFBQXFCLENBQUMsRUFBRSxTQUFTLEtBQUssRUFBRSxPQUFPLElBQS9DLG1CQUFpRCxTQUFTLEVBQUUsQ0FBQyxRQUFRLFNBQVMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsYUFBYSxDQUFDLEVBQUUsY0FBYyxDQUFDLEdBQUksR0FBRSxHQUFHLEVBQUUsRUFBRSxVQUFVLE1BQU8sR0FBRSxVQUFVLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLFlBQVksR0FBRyxHQUFHLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRyxHQUFFLGdCQUFnQixLQUFLLE9BQU8sRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLFVBQVUsRUFBRSxFQUFFLEVBQUUsRUFBRSxZQUFZLFlBQVksQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsWUFBWSxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxlQUFpQixJQUFFLEdBQUksaUJBQWdCLE1BQU0sVUFBVSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxNQUFNLFlBQVksQ0FBQyxDQUFDLEdBQUcsR0FBRyxzQkFBdUIsR0FBRSxjQUFjLFFBQVEsRUFBRyxHQUFFLEVBQUUsZ0JBQWdCLFNBQVMsRUFBRSxDQUFDLEdBQUksR0FBRSxFQUFFLGNBQWMsUUFBUSxFQUFFLEVBQUUsbUJBQW1CLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLG1CQUFtQixLQUFLLEVBQUUsWUFBWSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxZQUFZLENBQUMsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsYUFBYSxTQUFTLEVBQUUsQ0FBQyxBQUFZLE1BQU8sSUFBbkIsWUFBdUIsR0FBRSxHQUFJLFVBQVMsR0FBRyxDQUFDLEdBQUcsT0FBUSxHQUFFLEdBQUksT0FBTSxVQUFVLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxJQUFJLEVBQUUsR0FBRyxVQUFVLEVBQUUsR0FBRyxHQUFJLEdBQUUsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTyxHQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxlQUFlLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFPLEdBQUUsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFJLEdBQUUsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQUFBQyxVQUFTLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxLQUFLLE9BQU8sRUFBRSxZQUFhLEdBQUUsRUFBRSxFQUFFLFVBQVcsR0FBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFVBQVcsR0FBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxVQUFXLEdBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUUsQ0FBQyxDQUFDLFFBQUMsQ0FBUSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUs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 diff --git a/.obsidian/plugins/obsidian-icon-shortcodes/manifest.json b/.obsidian/plugins/obsidian-icon-shortcodes/manifest.json new file mode 100644 index 00000000..8f3b3716 --- /dev/null +++ b/.obsidian/plugins/obsidian-icon-shortcodes/manifest.json @@ -0,0 +1,10 @@ +{ + "id": "obsidian-icon-shortcodes", + "name": "Icon Shortcodes", + "version": "0.9.7", + "minAppVersion": "1.0.0", + "description": "Insert emoji and custom icons with shortcodes", + "author": "AidenLx", + "authorUrl": "https://github.com/aidenlx", + "isDesktopOnly": false +} \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-icon-shortcodes/styles.css b/.obsidian/plugins/obsidian-icon-shortcodes/styles.css new file mode 100644 index 00000000..81cae45d --- /dev/null +++ b/.obsidian/plugins/obsidian-icon-shortcodes/styles.css @@ -0,0 +1,2 @@ +.isc-icon:not(.isc-char-icon){display:inline-flex;vertical-align:text-top;padding-top:calc(var(--font-text-size) / 8)}.isc-icon>img,.isc-icon>svg{cursor:default!important;height:1em;width:1em}.view-content .mod-cm6 .cm-isc>.isc-icon>img,.view-content .mod-cm6 .cm-isc>.isc-icon>svg{cursor:pointer}.markdown-source-view .isc-icon>img,.markdown-source-view .isc-icon>svg,.markdown-preview-view .isc-icon>img,.markdown-preview-view .isc-icon>svg{height:var(--font-text-size, var(--editor-font-size, 1em));width:var(--font-text-size, var(--editor-font-size, 1em))}.markdown-source-view .HyperMD-header-1 .isc-icon>img,.markdown-source-view .HyperMD-header-1 .isc-icon>svg,.markdown-preview-view h1 .isc-icon>img,.markdown-preview-view h1 .isc-icon>svg{height:var(--h1-size);width:var(--h1-size)}.markdown-source-view .HyperMD-header-2 .isc-icon>img,.markdown-source-view .HyperMD-header-2 .isc-icon>svg,.markdown-preview-view h2 .isc-icon>img,.markdown-preview-view h2 .isc-icon>svg{height:var(--h2-size);width:var(--h2-size)}.markdown-source-view .HyperMD-header-3 .isc-icon>img,.markdown-source-view .HyperMD-header-3 .isc-icon>svg,.markdown-preview-view h3 .isc-icon>img,.markdown-preview-view h3 .isc-icon>svg{height:var(--h3-size);width:var(--h3-size)}.markdown-source-view .HyperMD-header-4 .isc-icon>img,.markdown-source-view .HyperMD-header-4 .isc-icon>svg,.markdown-preview-view h4 .isc-icon>img,.markdown-preview-view h4 .isc-icon>svg{height:var(--h4-size);width:var(--h4-size)}.markdown-source-view .HyperMD-header-5 .isc-icon>img,.markdown-source-view .HyperMD-header-5 .isc-icon>svg,.markdown-preview-view h5 .isc-icon>img,.markdown-preview-view h5 .isc-icon>svg{height:var(--h5-size);width:var(--h5-size)}.markdown-source-view .HyperMD-header-6 .isc-icon>img,.markdown-source-view .HyperMD-header-6 .isc-icon>svg,.markdown-preview-view h6 .isc-icon>img,.markdown-preview-view h6 .isc-icon>svg{height:var(--h6-size);width:var(--h6-size)}.callout .callout-icon.isc-icon>img,.callout .callout-icon.isc-icon>svg{height:16px;width:16px}.suggestion-container.isc .suggestion-flair{opacity:1}.suggestion-container.isc .suggestion-flair>.isc-icon{color:var(--text-normal)}.mod-settings .isc-add-pack-input{margin-right:5px}.mod-settings .isc-settings-custom-icon .dragover{position:relative;background-color:var(--shade-10);border-radius:5px}.mod-settings .isc-settings-custom-icon .dragover:before{content:"Drop SVG icon(s) here";font-size:16px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--text-normal)}.theme-dark .mod-settings .isc-settings-custom-icon .dragover{background-color:var(--shade-40)}.mod-settings .isc-settings-custom-icon .dragover>*{filter:blur(50px)}.mod-settings .isc-add-pack-input.invalid,.isc-icon-manager .icons .name textarea.invalid{color:var(--text-error);background:var(--background-primary-alt)}.modal.mod-browser-packs{width:80vw;max-width:80vw}.modal.mod-browser-packs .modal-content{justify-content:center}.modal.mod-browser-packs .modal-content .icon-text{margin-left:4px;position:relative;top:-1px}.modal.mod-browser-packs .modal-content>.loading{display:flex;flex:auto;flex-direction:row;align-items:center;justify-content:center}.modal.mod-browser-packs .modal-content>.loading>.loading-indicator+div{margin:0 20px;font-size:medium}.modal.mod-browser-packs .modal-content>.icon-pack-list{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center}.modal.mod-browser-packs .modal-content>.icon-pack-list .pack-manifest{display:flex;flex-direction:column;align-items:center;width:260px;padding:15px 10px;background:var(--background-secondary-alt);margin:15px 10px;border-radius:10px}.modal.mod-browser-packs .modal-content>.icon-pack-list .pack-manifest .pack-manifest-title{text-align:center;font-weight:700}.modal.mod-browser-packs .modal-content>.icon-pack-list .pack-manifest .pack-manifest-details{font-size:.9em;color:var(--text-muted);display:flex;text-align:center}.modal.mod-browser-packs .modal-content>.icon-pack-list .pack-manifest .pack-manifest-details>:not(:last-child){margin-right:5px}.modal.mod-browser-packs .modal-content>.icon-pack-list .pack-manifest .pack-manifest-desc{max-width:200px;height:auto}.modal.mod-browser-packs .modal-content>.icon-pack-list .styles-list{border-radius:10px;padding:5px;background-color:var(--background-primary);display:flex;align-self:stretch;flex-direction:column;flex-wrap:nowrap;margin:10px 10px 0;text-align:center}.modal.mod-browser-packs .modal-content>.icon-pack-list .styles-list>:not(:last-child){margin-bottom:5px}.modal.mod-browser-packs .modal-content>.icon-pack-list .style-info{border-radius:10px;background-color:var(--background-primary-alt);font-size:small;display:flex;flex-direction:row;flex-wrap:nowrap}.modal.mod-browser-packs .modal-content>.icon-pack-list .style-info>*{display:flex;flex-wrap:wrap;align-content:center;justify-content:space-evenly}.modal.mod-browser-packs .modal-content>.icon-pack-list .style-info .style-info-title{flex-grow:1;max-width:5em;line-height:1.2em;margin-left:10px;text-transform:capitalize}.modal.mod-browser-packs .modal-content>.icon-pack-list .style-info .style-info-title .style-info-pack-id{text-transform:none}.modal.mod-browser-packs .modal-content>.icon-pack-list .style-info .style-info-title .style-info-pack-id:before{content:"("}.modal.mod-browser-packs .modal-content>.icon-pack-list .style-info .style-info-title .style-info-pack-id:after{content:")"}.modal.mod-browser-packs .modal-content>.icon-pack-list .style-info .style-info-details{flex-grow:1}.modal.mod-browser-packs .modal-content>.icon-pack-list .style-info .style-info-button-container{flex-shrink:0}.modal.mod-browser-packs .modal-content>.icon-pack-list .style-info .style-info-button-container button{padding:6px;margin:5px 5px 5px 0}.isc-icon-manager .icons{margin-top:10px;display:grid;grid-auto-rows:auto;grid-auto-columns:-webkit-max-content;grid-auto-columns:max-content;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));grid-column-gap:1rem;grid-row-gap:1rem;text-align:center}.isc-icon-manager .icons .item{outline:none}.isc-icon-manager .icons .item .icon{min-height:64px;display:flex;align-items:center;justify-content:center;background:white;border-radius:6px;box-shadow:0 1px 3px #0000001a,0 1px 2px #0000000f;border:2px solid transparent;font-size:1.6em}.isc-icon-manager .icons .item .icon>img{width:1em;height:1em}.isc-icon-manager .icons .item .name{height:49px;display:flex;justify-content:center;align-content:center;flex-direction:column}.isc-icon-manager .icons .item .name span{font-size:.7em;overflow:hidden;word-wrap:break-word}.isc-icon-manager .icons .item .name textarea{margin-top:5px;width:100%;padding:0 .5em;font-size:14px}.isc-icon-manager .icons .item .name textarea:disabled{padding:0;font-size:16px;border:hidden;text-align:center;background:transparent}.isc-icon-manager .icons .item .buttons button{padding:4px 6px;margin:0 1px} +/*# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2ljb24tcGFja3MvaWNvbi5sZXNzIiwgIi4uL3NyYy9zZXR0aW5ncy5sZXNzIiwgIi4uL3NyYy9pbnZhbGlkLmxlc3MiLCAiLi4vc3JjL2NvbXBvbmVudC9icm93c2VyLXBhY2tzLmxlc3MiLCAiLi4vc3JjL2NvbXBvbmVudC9pY29uLW1hbmFnZXIubGVzcyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLmlzYy1pY29uOm5vdCguaXNjLWNoYXItaWNvbikge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgdmVydGljYWwtYWxpZ246IHRleHQtdG9wO1xuICBwYWRkaW5nLXRvcDogY2FsYyh2YXIoLS1mb250LXRleHQtc2l6ZSkgLyA4KTtcbn1cbi5pc2MtaWNvbiA+IGltZyxcbi5pc2MtaWNvbiA+IHN2ZyB7XG4gIGN1cnNvcjogZGVmYXVsdCAhaW1wb3J0YW50O1xuICBoZWlnaHQ6IDFlbTtcbiAgd2lkdGg6IDFlbTtcbn1cbi52aWV3LWNvbnRlbnQgLm1vZC1jbTYgLmNtLWlzYyA+IC5pc2MtaWNvbiA+IGltZyxcbi52aWV3LWNvbnRlbnQgLm1vZC1jbTYgLmNtLWlzYyA+IC5pc2MtaWNvbiA+IHN2ZyB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5tYXJrZG93bi1zb3VyY2UtdmlldyAuaXNjLWljb24gPiBpbWcsXG4ubWFya2Rvd24tc291cmNlLXZpZXcgLmlzYy1pY29uID4gc3ZnLFxuLm1hcmtkb3duLXByZXZpZXctdmlldyAuaXNjLWljb24gPiBpbWcsXG4ubWFya2Rvd24tcHJldmlldy12aWV3IC5pc2MtaWNvbiA+IHN2ZyB7XG4gIGhlaWdodDogdmFyKC0tZm9udC10ZXh0LXNpemUsIHZhcigtLWVkaXRvci1mb250LXNpemUsIDFlbSkpO1xuICB3aWR0aDogdmFyKC0tZm9udC10ZXh0LXNpemUsIHZhcigtLWVkaXRvci1mb250LXNpemUsIDFlbSkpO1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWhlYWRlci0xIC5pc2MtaWNvbiA+IGltZyxcbi5tYXJrZG93bi1zb3VyY2UtdmlldyAuSHlwZXJNRC1oZWFkZXItMSAuaXNjLWljb24gPiBzdmcsXG4ubWFya2Rvd24tcHJldmlldy12aWV3IGgxIC5pc2MtaWNvbiA+IGltZyxcbi5tYXJrZG93bi1wcmV2aWV3LXZpZXcgaDEgLmlzYy1pY29uID4gc3ZnIHtcbiAgaGVpZ2h0OiB2YXIoLS1oMS1zaXplKTtcbiAgd2lkdGg6IHZhcigtLWgxLXNpemUpO1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWhlYWRlci0yIC5pc2MtaWNvbiA+IGltZyxcbi5tYXJrZG93bi1zb3VyY2UtdmlldyAuSHlwZXJNRC1oZWFkZXItMiAuaXNjLWljb24gPiBzdmcsXG4ubWFya2Rvd24tcHJldmlldy12aWV3IGgyIC5pc2MtaWNvbiA+IGltZyxcbi5tYXJrZG93bi1wcmV2aWV3LXZpZXcgaDIgLmlzYy1pY29uID4gc3ZnIHtcbiAgaGVpZ2h0OiB2YXIoLS1oMi1zaXplKTtcbiAgd2lkdGg6IHZhcigtLWgyLXNpemUpO1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWhlYWRlci0zIC5pc2MtaWNvbiA+IGltZyxcbi5tYXJrZG93bi1zb3VyY2UtdmlldyAuSHlwZXJNRC1oZWFkZXItMyAuaXNjLWljb24gPiBzdmcsXG4ubWFya2Rvd24tcHJldmlldy12aWV3IGgzIC5pc2MtaWNvbiA+IGltZyxcbi5tYXJrZG93bi1wcmV2aWV3LXZpZXcgaDMgLmlzYy1pY29uID4gc3ZnIHtcbiAgaGVpZ2h0OiB2YXIoLS1oMy1zaXplKTtcbiAgd2lkdGg6IHZhcigtLWgzLXNpemUpO1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWhlYWRlci00IC5pc2MtaWNvbiA+IGltZyxcbi5tYXJrZG93bi1zb3VyY2UtdmlldyAuSHlwZXJNRC1oZWFkZXItNCAuaXNjLWljb24gPiBzdmcsXG4ubWFya2Rvd24tcHJldmlldy12aWV3IGg0IC5pc2MtaWNvbiA+IGltZyxcbi5tYXJrZG93bi1wcmV2aWV3LXZpZXcgaDQgLmlzYy1pY29uID4gc3ZnIHtcbiAgaGVpZ2h0OiB2YXIoLS1oNC1zaXplKTtcbiAgd2lkdGg6IHZhcigtLWg0LXNpemUpO1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWhlYWRlci01IC5pc2MtaWNvbiA+IGltZyxcbi5tYXJrZG93bi1zb3VyY2UtdmlldyAuSHlwZXJNRC1oZWFkZXItNSAuaXNjLWljb24gPiBzdmcsXG4ubWFya2Rvd24tcHJldmlldy12aWV3IGg1IC5pc2MtaWNvbiA+IGltZyxcbi5tYXJrZG93bi1wcmV2aWV3LXZpZXcgaDUgLmlzYy1pY29uID4gc3ZnIHtcbiAgaGVpZ2h0OiB2YXIoLS1oNS1zaXplKTtcbiAgd2lkdGg6IHZhcigtLWg1LXNpemUpO1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWhlYWRlci02IC5pc2MtaWNvbiA+IGltZyxcbi5tYXJrZG93bi1zb3VyY2UtdmlldyAuSHlwZXJNRC1oZWFkZXItNiAuaXNjLWljb24gPiBzdmcsXG4ubWFya2Rvd24tcHJldmlldy12aWV3IGg2IC5pc2MtaWNvbiA+IGltZyxcbi5tYXJrZG93bi1wcmV2aWV3LXZpZXcgaDYgLmlzYy1pY29uID4gc3ZnIHtcbiAgaGVpZ2h0OiB2YXIoLS1oNi1zaXplKTtcbiAgd2lkdGg6IHZhcigtLWg2LXNpemUpO1xufVxuLmNhbGxvdXQgLmNhbGxvdXQtaWNvbi5pc2MtaWNvbiA+IGltZyxcbi5jYWxsb3V0IC5jYWxsb3V0LWljb24uaXNjLWljb24gPiBzdmcge1xuICBoZWlnaHQ6IDE2cHg7XG4gIHdpZHRoOiAxNnB4O1xufVxuLnN1Z2dlc3Rpb24tY29udGFpbmVyLmlzYyAuc3VnZ2VzdGlvbi1mbGFpciB7XG4gIG9wYWNpdHk6IDE7XG59XG4uc3VnZ2VzdGlvbi1jb250YWluZXIuaXNjIC5zdWdnZXN0aW9uLWZsYWlyID4gLmlzYy1pY29uIHtcbiAgY29sb3I6IHZhcigtLXRleHQtbm9ybWFsKTtcbn1cbiIsICIubW9kLXNldHRpbmdzIC5pc2MtYWRkLXBhY2staW5wdXQge1xuICBtYXJnaW4tcmlnaHQ6IDVweDtcbn1cbi5tb2Qtc2V0dGluZ3MgLmlzYy1zZXR0aW5ncy1jdXN0b20taWNvbiAuZHJhZ292ZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNoYWRlLTEwKTtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xufVxuLm1vZC1zZXR0aW5ncyAuaXNjLXNldHRpbmdzLWN1c3RvbS1pY29uIC5kcmFnb3ZlcjpiZWZvcmUge1xuICBjb250ZW50OiBcIkRyb3AgU1ZHIGljb24ocykgaGVyZVwiO1xuICBmb250LXNpemU6IDE2cHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIGNvbG9yOiB2YXIoLS10ZXh0LW5vcm1hbCk7XG59XG4udGhlbWUtZGFyayAubW9kLXNldHRpbmdzIC5pc2Mtc2V0dGluZ3MtY3VzdG9tLWljb24gLmRyYWdvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2hhZGUtNDApO1xufVxuLm1vZC1zZXR0aW5ncyAuaXNjLXNldHRpbmdzLWN1c3RvbS1pY29uIC5kcmFnb3ZlciA+ICoge1xuICBmaWx0ZXI6IGJsdXIoNTBweCk7XG59XG4iLCAiLm1vZC1zZXR0aW5ncyAuaXNjLWFkZC1wYWNrLWlucHV0LmludmFsaWQsXG4uaXNjLWljb24tbWFuYWdlciAuaWNvbnMgLm5hbWUgdGV4dGFyZWEuaW52YWxpZCB7XG4gIGNvbG9yOiB2YXIoLS10ZXh0LWVycm9yKTtcbiAgYmFja2dyb3VuZDogdmFyKC0tYmFja2dyb3VuZC1wcmltYXJ5LWFsdCk7XG59XG4iLCAiLm1vZGFsLm1vZC1icm93c2VyLXBhY2tzIHtcbiAgd2lkdGg6IDgwdnc7XG4gIG1heC13aWR0aDogODB2dztcbn1cbi5tb2RhbC5tb2QtYnJvd3Nlci1wYWNrcyAubW9kYWwtY29udGVudCB7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuLm1vZGFsLm1vZC1icm93c2VyLXBhY2tzIC5tb2RhbC1jb250ZW50IC5pY29uLXRleHQge1xuICBtYXJnaW4tbGVmdDogNHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRvcDogLTFweDtcbn1cbi5tb2RhbC5tb2QtYnJvd3Nlci1wYWNrcyAubW9kYWwtY29udGVudCA+IC5sb2FkaW5nIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleDogYXV0bztcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG4ubW9kYWwubW9kLWJyb3dzZXItcGFja3MgLm1vZGFsLWNvbnRlbnQgPiAubG9hZGluZyA+IC5sb2FkaW5nLWluZGljYXRvciArIGRpdiB7XG4gIG1hcmdpbjogMCAyMHB4O1xuICBmb250LXNpemU6IG1lZGl1bTtcbn1cbi5tb2RhbC5tb2QtYnJvd3Nlci1wYWNrcyAubW9kYWwtY29udGVudCA+IC5pY29uLXBhY2stbGlzdCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG4ubW9kYWwubW9kLWJyb3dzZXItcGFja3MgLm1vZGFsLWNvbnRlbnQgPiAuaWNvbi1wYWNrLWxpc3QgLnBhY2stbWFuaWZlc3Qge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB3aWR0aDogMjYwcHg7XG4gIHBhZGRpbmc6IDE1cHggMTBweDtcbiAgYmFja2dyb3VuZDogdmFyKC0tYmFja2dyb3VuZC1zZWNvbmRhcnktYWx0KTtcbiAgbWFyZ2luOiAxNXB4IDEwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XG59XG4ubW9kYWwubW9kLWJyb3dzZXItcGFja3MgLm1vZGFsLWNvbnRlbnQgPiAuaWNvbi1wYWNrLWxpc3QgLnBhY2stbWFuaWZlc3QgLnBhY2stbWFuaWZlc3QtdGl0bGUge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuLm1vZGFsLm1vZC1icm93c2VyLXBhY2tzIC5tb2RhbC1jb250ZW50ID4gLmljb24tcGFjay1saXN0IC5wYWNrLW1hbmlmZXN0IC5wYWNrLW1hbmlmZXN0LWRldGFpbHMge1xuICBmb250LXNpemU6IDAuOWVtO1xuICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5tb2RhbC5tb2QtYnJvd3Nlci1wYWNrcyAubW9kYWwtY29udGVudCA+IC5pY29uLXBhY2stbGlzdCAucGFjay1tYW5pZmVzdCAucGFjay1tYW5pZmVzdC1kZXRhaWxzID4gOm5vdCg6bGFzdC1jaGlsZCkge1xuICBtYXJnaW4tcmlnaHQ6IDVweDtcbn1cbi5tb2RhbC5tb2QtYnJvd3Nlci1wYWNrcyAubW9kYWwtY29udGVudCA+IC5pY29uLXBhY2stbGlzdCAucGFjay1tYW5pZmVzdCAucGFjay1tYW5pZmVzdC1kZXNjIHtcbiAgbWF4LXdpZHRoOiAyMDBweDtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuLm1vZGFsLm1vZC1icm93c2VyLXBhY2tzIC5tb2RhbC1jb250ZW50ID4gLmljb24tcGFjay1saXN0IC5zdHlsZXMtbGlzdCB7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gIHBhZGRpbmc6IDVweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmFja2dyb3VuZC1wcmltYXJ5KTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZmxleC13cmFwOiBub3dyYXA7XG4gIG1hcmdpbjogMTBweCAxMHB4IDA7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5tb2RhbC5tb2QtYnJvd3Nlci1wYWNrcyAubW9kYWwtY29udGVudCA+IC5pY29uLXBhY2stbGlzdCAuc3R5bGVzLWxpc3QgPiA6bm90KDpsYXN0LWNoaWxkKSB7XG4gIG1hcmdpbi1ib3R0b206IDVweDtcbn1cbi5tb2RhbC5tb2QtYnJvd3Nlci1wYWNrcyAubW9kYWwtY29udGVudCA+IC5pY29uLXBhY2stbGlzdCAuc3R5bGUtaW5mbyB7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJhY2tncm91bmQtcHJpbWFyeS1hbHQpO1xuICBmb250LXNpemU6IHNtYWxsO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBmbGV4LXdyYXA6IG5vd3JhcDtcbn1cbi5tb2RhbC5tb2QtYnJvd3Nlci1wYWNrcyAubW9kYWwtY29udGVudCA+IC5pY29uLXBhY2stbGlzdCAuc3R5bGUtaW5mbyA+ICoge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1ldmVubHk7XG59XG4ubW9kYWwubW9kLWJyb3dzZXItcGFja3MgLm1vZGFsLWNvbnRlbnQgPiAuaWNvbi1wYWNrLWxpc3QgLnN0eWxlLWluZm8gLnN0eWxlLWluZm8tdGl0bGUge1xuICBmbGV4LWdyb3c6IDE7XG4gIG1heC13aWR0aDogNWVtO1xuICBsaW5lLWhlaWdodDogMS4yZW07XG4gIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbn1cbi5tb2RhbC5tb2QtYnJvd3Nlci1wYWNrcyAubW9kYWwtY29udGVudCA+IC5pY29uLXBhY2stbGlzdCAuc3R5bGUtaW5mbyAuc3R5bGUtaW5mby10aXRsZSAuc3R5bGUtaW5mby1wYWNrLWlkIHtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG59XG4ubW9kYWwubW9kLWJyb3dzZXItcGFja3MgLm1vZGFsLWNvbnRlbnQgPiAuaWNvbi1wYWNrLWxpc3QgLnN0eWxlLWluZm8gLnN0eWxlLWluZm8tdGl0bGUgLnN0eWxlLWluZm8tcGFjay1pZDo6YmVmb3JlIHtcbiAgY29udGVudDogXCIoXCI7XG59XG4ubW9kYWwubW9kLWJyb3dzZXItcGFja3MgLm1vZGFsLWNvbnRlbnQgPiAuaWNvbi1wYWNrLWxpc3QgLnN0eWxlLWluZm8gLnN0eWxlLWluZm8tdGl0bGUgLnN0eWxlLWluZm8tcGFjay1pZDo6YWZ0ZXIge1xuICBjb250ZW50OiBcIilcIjtcbn1cbi5tb2RhbC5tb2QtYnJvd3Nlci1wYWNrcyAubW9kYWwtY29udGVudCA+IC5pY29uLXBhY2stbGlzdCAuc3R5bGUtaW5mbyAuc3R5bGUtaW5mby1kZXRhaWxzIHtcbiAgZmxleC1ncm93OiAxO1xufVxuLm1vZGFsLm1vZC1icm93c2VyLXBhY2tzIC5tb2RhbC1jb250ZW50ID4gLmljb24tcGFjay1saXN0IC5zdHlsZS1pbmZvIC5zdHlsZS1pbmZvLWJ1dHRvbi1jb250YWluZXIge1xuICBmbGV4LXNocmluazogMDtcbn1cbi5tb2RhbC5tb2QtYnJvd3Nlci1wYWNrcyAubW9kYWwtY29udGVudCA+IC5pY29uLXBhY2stbGlzdCAuc3R5bGUtaW5mbyAuc3R5bGUtaW5mby1idXR0b24tY29udGFpbmVyIGJ1dHRvbiB7XG4gIHBhZGRpbmc6IDZweDtcbiAgbWFyZ2luOiA1cHggNXB4IDVweCAwO1xufVxuIiwgIi5pc2MtaWNvbi1tYW5hZ2VyIC5pY29ucyB7XG4gIG1hcmdpbi10b3A6IDEwcHg7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtYXV0by1yb3dzOiBhdXRvO1xuICBncmlkLWF1dG8tY29sdW1uczogLXdlYmtpdC1tYXgtY29udGVudDtcbiAgZ3JpZC1hdXRvLWNvbHVtbnM6IG1heC1jb250ZW50O1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCg5MHB4LCAxZnIpKTtcbiAgZ3JpZC1jb2x1bW4tZ2FwOiAxcmVtO1xuICBncmlkLXJvdy1nYXA6IDFyZW07XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5pc2MtaWNvbi1tYW5hZ2VyIC5pY29ucyAuaXRlbSB7XG4gIG91dGxpbmU6IG5vbmU7XG59XG4uaXNjLWljb24tbWFuYWdlciAuaWNvbnMgLml0ZW0gLmljb24ge1xuICBtaW4taGVpZ2h0OiA2NHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgYm94LXNoYWRvdzogMCAxcHggM3B4IDAgcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDFweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMDYpO1xuICBib3JkZXI6IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgZm9udC1zaXplOiAxLjZlbTtcbn1cbi5pc2MtaWNvbi1tYW5hZ2VyIC5pY29ucyAuaXRlbSAuaWNvbiA+IGltZyB7XG4gIHdpZHRoOiAxZW07XG4gIGhlaWdodDogMWVtO1xufVxuLmlzYy1pY29uLW1hbmFnZXIgLmljb25zIC5pdGVtIC5uYW1lIHtcbiAgaGVpZ2h0OiA0OXB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuLmlzYy1pY29uLW1hbmFnZXIgLmljb25zIC5pdGVtIC5uYW1lIHNwYW4ge1xuICBmb250LXNpemU6IDAuN2VtO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG59XG4uaXNjLWljb24tbWFuYWdlciAuaWNvbnMgLml0ZW0gLm5hbWUgdGV4dGFyZWEge1xuICBtYXJnaW4tdG9wOiA1cHg7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAwIDAuNWVtO1xuICBmb250LXNpemU6IDE0cHg7XG59XG4uaXNjLWljb24tbWFuYWdlciAuaWNvbnMgLml0ZW0gLm5hbWUgdGV4dGFyZWE6ZGlzYWJsZWQge1xuICBwYWRkaW5nOiAwO1xuICBmb250LXNpemU6IDE2cHg7XG4gIGJvcmRlcjogaGlkZGVuO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xufVxuLmlzYy1pY29uLW1hbmFnZXIgLmljb25zIC5pdGVtIC5idXR0b25zIGJ1dHRvbiB7XG4gIHBhZGRpbmc6IDRweCA2cHg7XG4gIG1hcmdpbjogMHB4IDFweDtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQUFBLDhCQUNFLG9CQUNBLHdCQUNBLDRDQUVGLDRCQUVFLHlCQUNBLFdBQ0EsVUFFRiwwRkFFRSxlQUVGLGtKQUlFLDJEQUNBLDBEQUVGLDRMQUlFLHNCQUNBLHFCQUVGLDRMQUlFLHNCQUNBLHFCQUVGLDRMQUlFLHNCQUNBLHFCQUVGLDRMQUlFLHNCQUNBLHFCQUVGLDRMQUlFLHNCQUNBLHFCQUVGLDRMQUlFLHNCQUNBLHFCQUVGLHdFQUVFLFlBQ0EsV0FFRiw0Q0FDRSxVQUVGLHNEQUNFLHlCQ3pFRixrQ0FDRSxpQkFFRixrREFDRSxrQkFDQSxpQ0FMRixrQkFRQSx5REFDRSxnQ0FDQSxlQUNBLGtCQUNBLFFBQ0EsU0FDQSwrQkFDQSx5QkFFRiw4REFDRSxpQ0FFRixvREFDRSxrQkNyQkYsMEZBRUUsd0JBQ0EseUNDSEYseUJBQ0UsV0FDQSxlQUVGLHdDQUNFLHVCQUVGLG1EQUNFLGdCQUNBLGtCQUNBLFNBRUYsaURBQ0UsYUFDQSxVQUNBLG1CQUNBLG1CQUNBLHVCQUVGLHdFQW5CQSxjQXFCRSxpQkFFRix3REFDRSxhQUNBLG1CQUNBLGVBQ0EsdUJBRUYsdUVBQ0UsYUFDQSxzQkFDQSxtQkFDQSxZQWpDRixrQkFtQ0UsMkNBbkNGLG9DQXVDQSw0RkFDRSxrQkFDQSxnQkFFRiw4RkFDRSxlQUNBLHdCQUNBLGFBQ0Esa0JBRUYsZ0hBQ0UsaUJBRUYsMkZBQ0UsZ0JBQ0EsWUFFRixxRUF4REEsK0JBMkRFLDJDQUNBLGFBQ0EsbUJBQ0Esc0JBQ0EsaUJBL0RGLG1CQWlFRSxrQkFFRix1RkFDRSxrQkFFRixvRUF0RUEsbUJBd0VFLCtDQUNBLGdCQUNBLGFBQ0EsbUJBQ0EsaUJBRUYsc0VBQ0UsYUFDQSxlQUNBLHFCQUNBLDZCQUVGLHNGQUNFLFlBQ0EsY0FDQSxrQkFDQSxpQkFDQSwwQkFFRiwwR0FDRSxvQkFFRixpSEFDRSxZQUVGLGdIQUNFLFlBRUYsd0ZBQ0UsWUFFRixpR0FDRSxjQUVGLHdHQTFHQSxpQ0NBQSx5QkFDRSxnQkFDQSxhQUNBLG9CQUNBLHNDQUNBLDhCQUNBLHlEQUNBLHFCQUNBLGtCQUNBLGtCQUVGLCtCQUNFLGFBRUYscUNBQ0UsZ0JBQ0EsYUFDQSxtQkFDQSx1QkFDQSxpQkFuQkYsa0JBcUJFLG1EQUNBLDZCQUNBLGdCQUVGLHlDQUNFLFVBQ0EsV0FFRixxQ0FDRSxZQUNBLGFBQ0EsdUJBQ0EscUJBQ0Esc0JBRUYsMENBQ0UsZUFDQSxnQkFDQSxxQkFFRiw4Q0FDRSxlQUNBLFdBM0NGLGVBNkNFLGVBRUYsdURBL0NBLFVBaURFLGVBQ0EsY0FDQSxrQkFDQSx1QkFFRiwrQ0F0REEiLAogICJuYW1lcyI6IFtdCn0K */ diff --git a/.obsidian/plugins/obsidian-reminder-plugin/data.json b/.obsidian/plugins/obsidian-reminder-plugin/data.json index f1ada54e..37675400 100644 --- a/.obsidian/plugins/obsidian-reminder-plugin/data.json +++ b/.obsidian/plugins/obsidian-reminder-plugin/data.json @@ -124,7 +124,7 @@ ], "04.01 lebv.org/lebv Research Tasks.md": [ { - "title": ":fleur_de_lis: [[lebv Research Tasks|Research]]: Lieux: que sont devenus Fleurimont & Le Pavillon aujourd'hui?", + "title": ":fleur_de_lis:: [[lebv Research Tasks|Research]]: Lieux: que sont devenus Fleurimont & Le Pavillon aujourd'hui?", "time": "2024-02-25", "rowNumber": 69 }, @@ -340,44 +340,44 @@ ], "01.02 Home/Household.md": [ { - "title": "๐Ÿ›Ž ๐Ÿงป REMINDER [[Household]]: check need for toilet paper %%done_del%%", - "time": "2023-12-25", - "rowNumber": 83 + "title": "โ™ป [[Household]]: *Paper* recycling collection %%done_del%%", + "time": "2024-01-02", + "rowNumber": 75 }, { - "title": "โ™ป [[Household]]: *Cardboard* recycling collection %%done_del%%", - "time": "2023-12-26", - "rowNumber": 76 + "title": ":bed: [[Household]] Change bedsheets %%done_del%%", + "time": "2024-01-06", + "rowNumber": 88 }, { - "title": "๐Ÿ›Ž๏ธ :house: [[Household]]: Pay rent %%done_del%%", - "time": "2023-12-31", - "rowNumber": 82 + "title": "๐Ÿ›Ž ๐Ÿงป REMINDER [[Household]]: check need for toilet paper %%done_del%%", + "time": "2024-01-08", + "rowNumber": 85 }, { - "title": "โ™ป [[Household]]: *Paper* recycling collection %%done_del%%", - "time": "2024-01-02", - "rowNumber": 75 + "title": "โ™ป [[Household]]: *Cardboard* recycling collection %%done_del%%", + "time": "2024-01-09", + "rowNumber": 76 }, { - "title": ":bed: [[Household]] Change bedsheets %%done_del%%", - "time": "2024-01-06", - "rowNumber": 84 + "title": "๐Ÿ›Ž๏ธ :house: [[Household]]: Pay rent %%done_del%%", + "time": "2024-01-31", + "rowNumber": 83 }, { "title": ":blue_car: [[Household]]: Change to Summer tyres %%done_del%%", "time": "2024-04-15", - "rowNumber": 90 + "rowNumber": 94 }, { "title": ":blue_car: [[Household]]: Change to Winter tyres %%done_del%%", "time": "2024-10-15", - "rowNumber": 91 + "rowNumber": 95 }, { "title": ":blue_car: [[Household]]: Renew [road vignette](https://www.e-vignette.ch/) %%done_del%%", "time": "2024-12-20", - "rowNumber": 92 + "rowNumber": 96 } ], "01.03 Family/Pia Bousquiรฉ.md": [ @@ -447,7 +447,7 @@ ], "06.02 Investments/Crypto Tasks.md": [ { - "title": ":ballot_box: [[Crypto Tasks]]: Vote for [[EOS]] block producers %%done_del%%", + "title": ":ballot_box_with_ballot: [[Crypto Tasks]]: Vote for [[EOS]] block producers %%done_del%%", "time": "2024-01-02", "rowNumber": 72 }, @@ -460,13 +460,13 @@ "05.02 Networks/Configuring UFW.md": [ { "title": "๐Ÿ–ฅ [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%%", - "time": "2023-12-23", + "time": "2023-12-30", "rowNumber": 239 }, { "title": "๐Ÿ–ฅ [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list %%done_del%%", - "time": "2023-12-23", - "rowNumber": 288 + "time": "2023-12-30", + "rowNumber": 289 } ], "01.03 Family/Amรฉlie Solanet.md": [ @@ -485,7 +485,7 @@ ], "00.08 Bookmarks/Bookmarks - Media.md": [ { - "title": ":label: [[Bookmarks - Media]]: review bookmarls", + "title": ":label: [[Bookmarks - Media]]: review bookmarks %%done_del%%", "time": "2024-02-07", "rowNumber": 80 } @@ -499,28 +499,28 @@ ], "00.08 Bookmarks/Bookmarks - Obsidian.md": [ { - "title": ":label: [[Bookmarks - Obsidian]]: Review bookmarks", + "title": ":label: [[Bookmarks - Obsidian]]: Review bookmarks %%done_del%%", "time": "2024-02-15", "rowNumber": 319 } ], "00.08 Bookmarks/Bookmarks - Selfhosted Apps.md": [ { - "title": ":label: [[Bookmarks - Selfhosted apps]]: Review bookmarks", + "title": ":label: [[Bookmarks - Selfhosted apps]]: Review bookmarks %%done_del%%", "time": "2024-02-22", "rowNumber": 178 } ], "00.08 Bookmarks/Bookmarks - Utilities.md": [ { - "title": ":label: [[Bookmarks - Utilities]]: review bookmarks", + "title": ":label: [[Bookmarks - Utilities]]: review bookmarks %%done_del%%", "time": "2024-03-02", "rowNumber": 172 } ], "00.08 Bookmarks/Bookmarks - Mac applications.md": [ { - "title": ":label: [[Bookmarks - Mac applications]]: review bookmarks", + "title": ":label: [[Bookmarks - Mac applications]]: review bookmarks %%done_del%%", "time": "2024-03-09", "rowNumber": 104 } @@ -534,15 +534,15 @@ ], "00.08 Bookmarks/Bookmarks - Travels & Sport.md": [ { - "title": ":label: [[Bookmarks - Travels & Sport]]: review bookmarks", - "time": "2023-12-23", + "title": ":label: [[Bookmarks - Travels & Sport]]: review bookmarks %%done_del%%", + "time": "2024-03-23", "rowNumber": 126 } ], "00.08 Bookmarks/Bookmarks - Webpages.md": [ { - "title": ":label: [[Bookmarks - Webpages]]: review bookmarks", - "time": "2023-12-30", + "title": ":label: [[Bookmarks - Webpages]]: review bookmarks %%done_del%%", + "time": "2024-03-30", "rowNumber": 113 } ], @@ -550,7 +550,7 @@ { "title": ":birthday: **Virginie Parent**, [[@@Paris|Paris]] %%done_del%%", "time": "2024-12-12", - "rowNumber": 116 + "rowNumber": 117 } ], "00.01 Admin/Calendars/2022-08-26.md": [ @@ -578,12 +578,12 @@ { "title": ":birthday: **Stefan Schmidt**, [[@@London|London]] %%done_del%%", "time": "2024-06-29", - "rowNumber": 118 + "rowNumber": 117 }, { "title": ":birthday: **Alex Houyvet**, [[@@London|London]] %%done_del%%", "time": "2024-07-13", - "rowNumber": 120 + "rowNumber": 119 } ], "01.01 Life Orga/@Lifestyle.md": [ @@ -645,17 +645,17 @@ { "title": ":racehorse: [[@Sally|Sally]]: Pay for horseshoes (150 CHF) %%done_del%%", "time": "2024-01-10", - "rowNumber": 140 + "rowNumber": 139 }, { "title": ":racehorse: [[@Sally|Sally]]: EHV-1 vaccination dose %%done_del%%", "time": "2024-01-31", - "rowNumber": 138 + "rowNumber": 137 }, { "title": ":racehorse: [[@Sally|Sally]]: Influenza vaccination dose %%done_del%%", "time": "2024-01-31", - "rowNumber": 139 + "rowNumber": 138 }, { "title": ":racehorse: [[@Sally|Sally]]: Vet check %%done_del%%", @@ -675,33 +675,6 @@ "rowNumber": 119 } ], - "01.05 Done/@@MRCK.md": [ - { - "title": ":birthday: **[[@@MRCK|Meggi-mo]]โ€˜s Mama** (1952) %%done_del%%", - "time": "2024-01-10", - "rowNumber": 305 - }, - { - "title": ":birthday: **[[@@MRCK|Meggi-mo]]'s Papa** (1962) %%done_del%%", - "time": "2024-02-02", - "rowNumber": 304 - }, - { - "title": "๐Ÿ‘‘ [[@@MRCK|Meggi-mo]] **Valentineโ€™s Day** %%done_del%%", - "time": "2024-02-14", - "rowNumber": 308 - }, - { - "title": ":birthday: **[[@@MRCK|Meggi-mo]]** %%done_del%%", - "time": "2024-02-28", - "rowNumber": 302 - }, - { - "title": "โ˜˜๏ธ [[@@MRCK|Meggi-mo]] **Saint Patrick's Day** %%done_del%%", - "time": "2024-03-17", - "rowNumber": 306 - } - ], "00.08 Bookmarks/Bookmarks - Investments.md": [ { "title": ":label: [[Bookmarks - Investments]]: Review bookmarks %%done_del%%", @@ -719,7 +692,7 @@ "01.07 Animals/2023-07-13 Health check.md": [ { "title": ":racehorse: [[@Sally|Sally]], [[2023-07-13 Health check|Note]]: Check front hoofs healing", - "time": "2024-01-02", + "time": "2024-01-16", "rowNumber": 53 } ], @@ -790,6 +763,144 @@ "time": "2024-10-31", "rowNumber": 93 } + ], + "00.01 Admin/Calendars/2023-12-24.md": [ + { + "title": "19:55 :fried_egg: [[@Life Admin|Admin]]: Buy tupperware", + "time": "2024-01-31", + "rowNumber": 104 + }, + { + "title": "17:08 :grapes: [[@Life Admin|Admin]]: Re-buy white wines [[Finca Racons]] [[Nadine Saxer - Blanc de Noir]]", + "time": "2024-05-30", + "rowNumber": 103 + } + ], + "02.03 Zรผrich/Sonne.md": [ + { + "title": "๐ŸŽ„ [[Sonne]]: Check Advent & Christmas happenings %%done_del%%", + "time": "2024-12-01", + "rowNumber": 94 + } + ], + "01.02 Home/Seasonal Activities.md": [ + { + "title": ":snowflake: :partying_face: [[Seasonal Activities]]: ZรผriCarneval weekend (:test_zurich_coat_of_arms:) %%done_del%%", + "time": "2024-02-15", + "rowNumber": 56 + }, + { + "title": ":hibiscus: :partying_face: [[Seasonal Activities]]: Sechselรคuten (:test_zurich_coat_of_arms:) %%done_del%%", + "time": "2024-04-15", + "rowNumber": 81 + }, + { + "title": ":hibiscus: :runner: [[Seasonal Activities]]: Zรผrich Marathon %%done_del%%", + "time": "2024-04-21", + "rowNumber": 82 + }, + { + "title": ":hibiscus: :fork_and_knife: [[Seasonal Activities]]: Book a restaurant with terrace for the season: [[Albishaus]], [[Restaurant Boldern]], [[Zur Buech]], [[Jardin Zรผrichberg]], [[Bistro Rigiblick]], [[Portofino am See]], [[La Rรฉserve|La Muรฑa]] %%done_del%%", + "time": "2024-05-01", + "rowNumber": 83 + }, + { + "title": ":sunny: :racehorse: [[Seasonal Activities]]: Check out the [Palio di Siena](https://www.comune.siena.it/node/135) %%done_del%%", + "time": "2024-05-15", + "rowNumber": 97 + }, + { + "title": ":hibiscus: :canned_food: [[Seasonal Activities]]: Check out [FOOD ZURICH - MEHR ALS EIN FESTIVAL](https://www.foodzurich.com/de/) %%done_del%%", + "time": "2024-06-01", + "rowNumber": 84 + }, + { + "title": ":hibiscus: :partying_face: [[Seasonal Activities]]: Zรผrich Pride Festival %%done_del%%", + "time": "2024-06-15", + "rowNumber": 85 + }, + { + "title": ":sunny: :movie_camera: [[Seasonal Activities]]: Check out programmation of the [Zurich's finest open-air cinema | Allianz Cinema -](https://zuerich.allianzcinema.ch/en) %%done_del%%", + "time": "2024-07-01", + "rowNumber": 98 + }, + { + "title": ":sunny: :partying_face: [[Seasonal Activities]]: Check out Seenachtfest Rapperswil-Jona %%done_del%%", + "time": "2024-08-01", + "rowNumber": 101 + }, + { + "title": ":sunny: :runner: [[Seasonal Activities]]: Check out tickets to Weltklasse Zรผrich %%done_del%%", + "time": "2024-08-01", + "rowNumber": 102 + }, + { + "title": ":sunny: :partying_face: [[Seasonal Activities]]: Street Parade (:test_zurich_coat_of_arms:) %%done_del%%", + "time": "2024-08-10", + "rowNumber": 99 + }, + { + "title": ":sunny: :partying_face: [[Seasonal Activities]]: Zรผrich Openair %%done_del%%", + "time": "2024-08-23", + "rowNumber": 100 + }, + { + "title": ":maple_leaf: :movie_camera: [[Seasonal Activities]]: Check out Zรผrich Film Festival %%done_del%%", + "time": "2024-09-15", + "rowNumber": 115 + }, + { + "title": ":maple_leaf: :canned_food: [[Seasonal Activities]]: Check out the [International White Truffle Fair - Find out all the events](https://www.fieradeltartufo.org/en/) %%done_del%%", + "time": "2024-09-18", + "rowNumber": 116 + }, + { + "title": ":maple_leaf: :wine_glass: [[Seasonal Activities]]: Check out Zรผrichโ€™s Wine festival ([ZWF - Zurich Wine Festival](https://zurichwinefestival.ch/)) %%done_del%%", + "time": "2024-09-25", + "rowNumber": 117 + }, + { + "title": ":snowflake:๐ŸŽญ [[Seasonal Activities]]: Check out floating theatre in Zรผrich ([Herzlich willkommen!](http://herzbaracke.ch/)) %%done_del%%", + "time": "2024-10-15", + "rowNumber": 52 + }, + { + "title": ":maple_leaf: :wine_glass: [[Seasonal Activities]]: Check out [Discover the Excitement of EXPOVINA Wine Events | Join Us at Weinschiffe, Primavera, and Wine Trophy | EXPOVINA](https://expovina.ch/en-ch/) %%done_del%%", + "time": "2024-10-15", + "rowNumber": 118 + }, + { + "title": ":snowflake: :person_in_steamy_room: [[Seasonal Activities]]: Check out [Sauna Cubes at Strandbad Kรผsnacht โ€” Strandbadsauna](https://www.strandbadsauna.ch/home-eng) %%done_del%%", + "time": "2024-11-15", + "rowNumber": 53 + }, + { + "title": ":christmas_tree: :cocktail: [[Seasonal Activities]]: Check out pop-up bars in Zรผrich ([Pop-ups at Christmas | zuerich.com](https://www.zuerich.com/en/visit/christmas-in-zurich/pop-ups)) %%done_del%%", + "time": "2024-12-01", + "rowNumber": 68 + }, + { + "title": ":christmas_tree: :shopping_bags: [[Seasonal Activities]]: Organise a trip to a famous Christmas market (Nรผrnberg, Salzburg, Praha, Budapest, Wien, Basel, Merano, Esslingen, Strasbourg) %%done_del%%", + "time": "2024-12-01", + "rowNumber": 69 + }, + { + "title": ":snowflake: :swimmer: [[Seasonal Activities]]: Samichlausschwimmen (:test_zurich_coat_of_arms:) %%done_del%%", + "time": "2024-12-08", + "rowNumber": 54 + }, + { + "title": ":snowflake: :honey_pot: [[Seasonal Activities]]: Fรชte de lโ€™Escalade (:test_wappen_genf_matt:) %%done_del%%", + "time": "2024-12-12", + "rowNumber": 55 + } + ], + "00.08 Bookmarks/Bookmarks - Art.md": [ + { + "title": ":label: [[Bookmarks - Art]]: Review bookmarks %%done_del%%", + "time": "2024-02-26", + "rowNumber": 78 + } ] }, "debug": false, diff --git a/.obsidian/plugins/obsidian42-brat/main.js b/.obsidian/plugins/obsidian42-brat/main.js index 912331d4..ebf13d05 100644 --- a/.obsidian/plugins/obsidian42-brat/main.js +++ b/.obsidian/plugins/obsidian42-brat/main.js @@ -778,6 +778,7 @@ var DEFAULT_SETTINGS = { themesList: [], updateAtStartup: true, updateThemesAtStartup: true, + enableAfterInstall: true, loggingEnabled: false, loggingPath: "BRAT-log", loggingVerboseEnabled: false, @@ -912,7 +913,7 @@ var themeSave = async (plugin, cssGithubRepository, newInstall) => { msg = `${manifestInfo.name} theme updated from ${cssGithubRepository}.`; } void plugin.log(msg + `[Theme Info](https://github.com/${cssGithubRepository})`, false); - toastMessage(plugin, `${msg}`, 20, () => { + toastMessage(plugin, msg, 20, () => { window.open(`https://github.com/${cssGithubRepository}`); }); return true; @@ -961,7 +962,7 @@ var themeDelete = (plugin, cssGithubRepository) => { void plugin.saveSettings(); const msg = `Removed ${cssGithubRepository} from BRAT themes list and will no longer be updated. However, the theme files still exist in the vault. To remove them, go into Settings > Appearance and remove the theme.`; void plugin.log(msg, true); - toastMessage(plugin, `${msg}`); + toastMessage(plugin, msg); }; var themesRootPath = (plugin) => { return (0, import_obsidian3.normalizePath)(plugin.app.vault.configDir + "/themes") + "/"; @@ -1101,6 +1102,15 @@ var BratSettingsTab = class extends import_obsidian5.PluginSettingTab { display() { const { containerEl } = this; containerEl.empty(); + new import_obsidian5.Setting(containerEl).setName("Auto-enable plugins after installation").setDesc( + 'If enabled beta plugins will be automatically enabled after installtion by default. Note: you can toggle this on and off for each plugin in the "Add Plugin" form.' + ).addToggle((cb) => { + cb.setValue(this.plugin.settings.enableAfterInstall); + cb.onChange(async (value) => { + this.plugin.settings.enableAfterInstall = value; + await this.plugin.saveSettings(); + }); + }); new import_obsidian5.Setting(containerEl).setName("Auto-update plugins at startup").setDesc( "If enabled all beta plugins will be checked for updates each time Obsidian starts. Note: this does not update frozen version plugins." ).addToggle((cb) => { @@ -1268,6 +1278,7 @@ var AddNewPluginModal = class extends import_obsidian6.Modal { this.address = ""; this.openSettingsTabAfterwards = openSettingsTabAfterwards; this.useFrozenVersion = useFrozenVersion; + this.enableAfterInstall = plugin.settings.enableAfterInstall; this.version = ""; } async submitForm() { @@ -1289,7 +1300,9 @@ var AddNewPluginModal = class extends import_obsidian6.Modal { false, false, false, - this.version + this.version, + false, + this.enableAfterInstall ); if (result) { this.close(); @@ -1327,6 +1340,23 @@ var AddNewPluginModal = class extends import_obsidian6.Modal { }); } formEl.createDiv("modal-button-container", (buttonContainerEl) => { + buttonContainerEl.createEl( + "label", + { + cls: "mod-checkbox" + }, + (labelEl) => { + const checkboxEl = labelEl.createEl("input", { + attr: { tabindex: -1 }, + type: "checkbox" + }); + checkboxEl.checked = this.enableAfterInstall; + checkboxEl.addEventListener("click", () => { + this.enableAfterInstall = checkboxEl.checked; + }); + labelEl.appendText("Enable after installing the plugin"); + } + ); buttonContainerEl.createEl("button", { attr: { type: "button" }, text: "Never mind" }).addEventListener("click", () => { this.close(); }); @@ -1506,7 +1536,7 @@ The version attribute for the release is missing from the manifest file`, * * @returns true if succeeds */ - async addPlugin(repositoryPath, updatePluginFiles = false, seeIfUpdatedOnly = false, reportIfNotUpdted = false, specifyVersion = "", forceReinstall = false) { + async addPlugin(repositoryPath, updatePluginFiles = false, seeIfUpdatedOnly = false, reportIfNotUpdted = false, specifyVersion = "", forceReinstall = false, enableAfterInstall = this.plugin.settings.enableAfterInstall) { if (this.plugin.settings.debuggingMode) console.log( "BRAT: addPlugin", @@ -1515,7 +1545,8 @@ The version attribute for the release is missing from the manifest file`, seeIfUpdatedOnly, reportIfNotUpdted, specifyVersion, - forceReinstall + forceReinstall, + enableAfterInstall ); const noticeTimeout = 10; let primaryManifest = await this.validateRepository(repositoryPath, true, false); @@ -1526,14 +1557,14 @@ The version attribute for the release is missing from the manifest file`, const msg = `${repositoryPath} A manifest.json or manifest-beta.json file does not exist in the root directory of the repository. This plugin cannot be installed.`; await this.plugin.log(msg, true); - toastMessage(this.plugin, `${msg}`, noticeTimeout); + toastMessage(this.plugin, msg, noticeTimeout); return false; } if (!Object.hasOwn(primaryManifest, "version")) { const msg = `${repositoryPath} The manifest${usingBetaManifest ? "-beta" : ""}.json file in the root directory of the repository does not have a version number in the file. This plugin cannot be installed.`; await this.plugin.log(msg, true); - toastMessage(this.plugin, `${msg}`, noticeTimeout); + toastMessage(this.plugin, msg, noticeTimeout); return false; } if (!Object.hasOwn(primaryManifest, "minAppVersion")) { @@ -1544,7 +1575,7 @@ The manifest${usingBetaManifest ? "-beta" : ""}.json for this plugin indicates t You will need to update your Obsidian to use this plugin or contact the plugin developer for more information.`; await this.plugin.log(msg, true); - toastMessage(this.plugin, `${msg}`, 30); + toastMessage(this.plugin, msg, 30); return false; } } @@ -1564,7 +1595,7 @@ You will need to update your Obsidian to use this plugin or contact the plugin d const msg = `${repositoryPath} The release is not complete and cannot be download. main.js is missing from the Release`; await this.plugin.log(msg, true); - toastMessage(this.plugin, `${msg}`, noticeTimeout); + toastMessage(this.plugin, msg, noticeTimeout); return null; } return rFiles; @@ -1576,6 +1607,14 @@ The release is not complete and cannot be download. main.js is missing from the await this.writeReleaseFilesToPluginFolder(primaryManifest.id, releaseFiles); if (!forceReinstall) addBetaPluginToList(this.plugin, repositoryPath, specifyVersion); + if (enableAfterInstall) { + const { plugins } = this.plugin.app; + const pluginTargetFolderPath = (0, import_obsidian7.normalizePath)( + plugins.getPluginFolder() + "/" + primaryManifest.id + ); + await plugins.loadManifest(pluginTargetFolderPath); + await plugins.enablePlugin(primaryManifest.id); + } await this.plugin.app.plugins.loadManifests(); if (forceReinstall) { await this.reloadPlugin(primaryManifest.id); @@ -1588,8 +1627,11 @@ Plugin has been reinstalled and reloaded.`, ); } else { const versionText = specifyVersion === "" ? "" : ` (version: ${specifyVersion})`; - const msg = `${repositoryPath}${versionText} -The plugin has been registered with BRAT. You may still need to enable it the Community Plugin List.`; + let msg = `${repositoryPath}${versionText} +The plugin has been registered with BRAT.`; + if (!enableAfterInstall) { + msg += " You may still need to enable it the Community Plugin List."; + } await this.plugin.log(msg, true); toastMessage(this.plugin, msg, noticeTimeout); } diff --git a/.obsidian/plugins/obsidian42-brat/manifest.json b/.obsidian/plugins/obsidian42-brat/manifest.json index 88a6e5bc..5d14fb90 100644 --- a/.obsidian/plugins/obsidian42-brat/manifest.json +++ b/.obsidian/plugins/obsidian42-brat/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian42-brat", "name": "BRAT", - "version": "0.8.1", + "version": "0.8.2", "minAppVersion": "1.4.16", "description": "Easily install a beta version of a plugin for testing.", "author": "TfTHacker", diff --git a/.obsidian/snippets/folder_4_icon.css b/.obsidian/snippets/folder_4_icon.css index b76572bb..681dae58 100644 --- a/.obsidian/snippets/folder_4_icon.css +++ b/.obsidian/snippets/folder_4_icon.css @@ -78,21 +78,6 @@ div[data-path="01.08 Garden"] .nav-folder-title-content::before content: "๐Ÿชด "; } -div[data-path="02.01 London"] .nav-folder-title-content::before -{ - content: "๐ŸŽก "; -} - -div[data-path="02.02 Paris"] .nav-folder-title-content::before -{ - content: "๐Ÿ—ผ "; -} - -div[data-path="02.03 Zรผrich"] .nav-folder-title-content::before -{ - content: "๐Ÿ‡จ๐Ÿ‡ญ "; -} - div[data-path="03.01 Reading list"] .nav-folder-title-content::before { content: "๐Ÿ“– "; @@ -113,11 +98,6 @@ div[data-path="03.04 Cinematheque"] .nav-folder-title-content::before content: "๐Ÿ“บ "; } -div[data-path="04.01 lebv.org"] .nav-folder-title-content::before -{ - content: "โšœ๏ธ "; -} - div[data-path="04.02 freemind.codes"] .nav-folder-title-content::before { content: "๐Ÿ‘พ "; diff --git a/.obsidian/workspace-mobile.json b/.obsidian/workspace-mobile.json index 34965837..9e1859c9 100644 --- a/.obsidian/workspace-mobile.json +++ b/.obsidian/workspace-mobile.json @@ -69,7 +69,19 @@ "state": { "type": "markdown", "state": { - "file": "00.01 Admin/Calendars/2023-12-22.md", + "file": "00.01 Admin/Calendars/2023-12-27.md", + "mode": "preview", + "source": true + } + } + }, + { + "id": "c326f4197d646796", + "type": "leaf", + "state": { + "type": "markdown", + "state": { + "file": "01.02 Home/Seasonal Activities.md", "mode": "preview", "source": true } @@ -101,7 +113,7 @@ "state": { "type": "search", "state": { - "query": "tag:#StayMadAbby", + "query": "", "matchingCase": false, "explainSearch": false, "collapseAll": true, @@ -158,7 +170,7 @@ "state": { "type": "backlink", "state": { - "file": "00.01 Admin/Calendars/2023-12-22.md", + "file": "00.01 Admin/Calendars/2023-12-27.md", "collapseAll": false, "extraContext": false, "sortOrder": "alphabetical", @@ -175,7 +187,7 @@ "state": { "type": "outgoing-link", "state": { - "file": "00.01 Admin/Calendars/2023-12-22.md", + "file": "00.01 Admin/Calendars/2023-12-27.md", "linksCollapsed": false, "unlinkedCollapsed": false } @@ -241,39 +253,42 @@ "meld-encrypt:Convert to or from an Encrypted note": false, "obsidian-read-it-later:ReadItLater: Save clipboard": false, "templater-obsidian:Templater": false, - "obsidian42-brat:BRAT": false, "obsidian-media-db-plugin:Add new Media DB entry": false, + "obsidian42-brat:BRAT": false, "obsidian-memos:Memos": false } }, - "active": "2d9db1814950ef3b", + "active": "1f6a6b4151d812b3", "lastOpenFiles": [ - "03.02 Travels/Ticino.md", - "00.01 Admin/Calendars/Events/2023-02-24 ๐ŸŽ‚ Meggi's Birthday weekend in Milan.md", - "00.01 Admin/Calendars/Events/2023-10-25 โšฝ๏ธ PSG โ€“ AC Milan (3-0).md", - "00.01 Admin/Calendars/2023-12-22.md", - "00.01 Admin/Calendars/2023-12-21.md", + "00.01 Admin/Calendars/2023-12-26.md", + "00.01 Admin/Calendars/2023-12-25.md", + "00.01 Admin/Calendars/2023-12-27.md", + "03.03 Food & Wine/Chicken Fried Rice.md", "01.02 Home/@Main Dashboard.md", - "03.03 Food & Wine/Udon in Buttery Tomato n Soy broth.md", - "03.04 Cinematheque/Tschugger (2021โ€“).md", - "00.01 Admin/Calendars/2023-12-20.md", - "03.04 Cinematheque/Secrets of Playboy (2022โ€“2023).md", - "01.07 Animals/@Sally.md", - "01.02 Home/@Shopping list.md", - "00.03 News/Inside the Meltdown at CNN.md", - "00.03 News/Adrift An AP Investigation.md", - "00.03 News/Reuters, New York Times Top List of Fossil Fuel Industryโ€™s Favorite Media Partners.md", - "00.08 Bookmarks/Bookmarks - Mac applications.md", - "00.03 News/The call of Tokitae.md", - "00.03 News/Taylor Swift Is TIME's 2023 Person of the Year.md", - "00.03 News/They Tried to Expose Louisiana Judges Who Had Systematically Ignored Prisonersโ€™ Petitions. No One Listened..md", - "00.03 News/They Cracked the Code to a Locked USB Drive Worth $235 Million in Bitcoin. Then It Got Weird.md", - "01.02 Home/Household.md", - "00.01 Admin/Calendars/2023-11-30.md", - "00.01 Admin/Calendars/2023-12-01.md", - "00.01 Admin/Calendars/2023-12-02.md", - "00.01 Admin/Calendars/2023-12-03.md", - "00.01 Admin/Calendars/2023-12-04.md", + "04.01 lebv.org/lebv Research Tasks.md", + "04.01 lebv.org/@lebv.org Tasks.md", + "02.02 Paris/@@Paris.md", + "02.03 Zรผrich/@@Zรผrich.md", + "02.01 London/@@London.md", + "01.05 Done/@@MRCK.md", + "01.02 Home/Seasonal Activities.md", + "03.02 Travels/Arles.md", + "03.02 Travels/RSA - Wine region.md", + "03.02 Travels/@Spain.md", + "03.02 Travels/@Italy.md", + "03.02 Travels/@Dubaรฏ.md", + "03.02 Travels/@Bahrein.md", + "01.05 Done/2023-12-27 Miami.md", + "01.02 Home/League Tables.md", + "02.01 London/Epsom Polo Club.md", + "02.01 London/Evans & Peel, Detective Agency.md", + "02.01 London/Callum Anderson.md", + "02.01 London/Casita Andina.md", + "02.03 Zรผrich/Polo Park Zรผrich.md", + "02.01 London/Ryan Anderson.md", + "test.zip", + "00.01 Admin/Pictures/Sally/IMG_4173.jpg", + "00.01 Admin/Pictures/Sally/IMG_4169.jpg", "00.01 Admin/Pictures/Kolkowitzia/IMG_3910.jpg", "00.01 Admin/Pictures/Kolkowitzia/IMG_3911.jpg", "00.01 Admin/Pictures/Kolkowitzia", @@ -286,14 +301,11 @@ "00.01 Admin/Pictures/IMG_1942.jpg", "00.01 Admin/Pictures/Viorne Tin", "01.08 Garden", - "00.01 Admin/Pictures/Sally/ima1046640698913285522.jpeg", - "00.01 Admin/Pictures/Sally/8db2ca52-4745-49db-8efc-5c0b8795e65d.jpg", "00.01 Admin/Test Canvas.canvas", "00.01 Admin/Pictures/Sally", "01.07 Animals", "00.01 Admin/Pictures/Gallery", "01.06 Health", - "00.01 Admin/Emails/Print.pdf", - "00.01 Admin/Emails/2023-03-05 PPZ.txt" + "00.01 Admin/Emails/Print.pdf" ] } \ No newline at end of file diff --git a/00.01 Admin/Calendars/2023-12-13.md b/00.01 Admin/Calendars/2023-12-13.md index 0633e8c8..f3e2f1e1 100644 --- a/00.01 Admin/Calendars/2023-12-13.md +++ b/00.01 Admin/Calendars/2023-12-13.md @@ -13,9 +13,9 @@ Sleep: 8 Happiness: 85 Gratefulness: 90 Stress: 25 -FrontHeadBar: 30 -EarHeadBar: 20 -BackHeadBar: 5 +FrontHeadBar: 5 +EarHeadBar: 30 +BackHeadBar: 20 Water: 2.5 Coffee: 4 Steps: 18306 diff --git a/00.01 Admin/Calendars/2023-12-22.md b/00.01 Admin/Calendars/2023-12-22.md index 0bd29538..9d644031 100644 --- a/00.01 Admin/Calendars/2023-12-22.md +++ b/00.01 Admin/Calendars/2023-12-22.md @@ -16,9 +16,9 @@ Stress: 25 FrontHeadBar: 5 EarHeadBar: 30 BackHeadBar: 20 -Water: -Coffee: -Steps: +Water: 3.2 +Coffee: 4 +Steps: 8380 Weight: Ski: IceSkating: @@ -116,6 +116,10 @@ This section does serve for quick memos. ๐Ÿ“บ: [[Secrets of Playboy (2022โ€“2023)]] +๐Ÿš—: [[Ticino]] + +๐Ÿ“บ: [[Dances with Wolves (1990)]] +   --- diff --git a/00.01 Admin/Calendars/2023-12-23.md b/00.01 Admin/Calendars/2023-12-23.md new file mode 100644 index 00000000..a2bd9e05 --- /dev/null +++ b/00.01 Admin/Calendars/2023-12-23.md @@ -0,0 +1,138 @@ +--- + +title: "๐Ÿ—’ Daily Note" +allDay: true +date: 2023-12-23 +Date: 2023-12-23 +DocType: Note +Hierarchy: +TimeStamp: +location: +CollapseMetaTable: true +Sleep: 7.5 +Happiness: 85 +Gratefulness: 90 +Stress: 25 +FrontHeadBar: 5 +EarHeadBar: 30 +BackHeadBar: 20 +Water: 2.51 +Coffee: 3 +Steps: 7773 +Weight: +Ski: +IceSkating: +Riding: +Racket: +Football: +Swim: + +--- + +%% Parent:: [[@Life Admin]] %% + +--- + +[[2023-12-22|<< ๐Ÿ—“ Previous ]]       [[@Main Dashboard|Back]]       [[2023-12-24|๐Ÿ—“ Next >>]] + +--- + +  + +```button +name Record today's health +type command +action MetaEdit: Run MetaEdit +id EditMetaData +``` +^button-2023-12-23Edit + +```button +name Save +type command +action Save current file +id Save +``` +^button-2023-12-23NSave + +  + +# 2023-12-23 + +  + +> [!summary]+ +> Daily note for 2023-12-23 + +  + +```toc +style: number +``` + +  + +--- + +  + +### โœ… Tasks of the day + +  + +```tasks +not done +due on 2023-12-23 +path does not include Templates +hide backlinks +hide task count +``` + +  + +--- + +  + +### ๐Ÿ“ Memos + +  + +This section does serve for quick memos. + +  + + +%% --- %% +  + +--- + +  + +### ๐Ÿ—’ Notes + +  + +๐ŸŽ: Visite ร  [[@Sally|Sally]] ร  Sulz am Neckar, with [[Felix Hoffmann]] + +๐Ÿฝ: [[Spicy Szechuan Noodles with Garlic Chilli Oil]] + +๐Ÿ“บ: [[The Man from Laramie (1955)]], [[Secrets of Playboy (2022โ€“2023)]] + +  + +--- + +  + +### :link: Linked activity + +  + +```dataview +Table from [[2023-12-23]] +``` + +  +  \ No newline at end of file diff --git a/00.01 Admin/Calendars/2023-12-24.md b/00.01 Admin/Calendars/2023-12-24.md new file mode 100644 index 00000000..df56631b --- /dev/null +++ b/00.01 Admin/Calendars/2023-12-24.md @@ -0,0 +1,138 @@ +--- + +title: "๐Ÿ—’ Daily Note" +allDay: true +date: 2023-12-24 +Date: 2023-12-24 +DocType: Note +Hierarchy: +TimeStamp: +location: +CollapseMetaTable: true +Sleep: 8.5 +Happiness: 85 +Gratefulness: 90 +Stress: 25 +FrontHeadBar: 5 +EarHeadBar: 30 +BackHeadBar: 20 +Water: 2.5 +Coffee: 4 +Steps: 10025 +Weight: +Ski: +IceSkating: +Riding: +Racket: +Football: +Swim: + +--- + +%% Parent:: [[@Life Admin]] %% + +--- + +[[2023-12-23|<< ๐Ÿ—“ Previous ]]       [[@Main Dashboard|Back]]       [[2023-12-25|๐Ÿ—“ Next >>]] + +--- + +  + +```button +name Record today's health +type command +action MetaEdit: Run MetaEdit +id EditMetaData +``` +^button-2023-12-24Edit + +```button +name Save +type command +action Save current file +id Save +``` +^button-2023-12-24NSave + +  + +# 2023-12-24 + +  + +> [!summary]+ +> Daily note for 2023-12-24 + +  + +```toc +style: number +``` + +  + +--- + +  + +### โœ… Tasks of the day + +  + +```tasks +not done +due on 2023-12-24 +path does not include Templates +hide backlinks +hide task count +``` + +  + +--- + +  + +### ๐Ÿ“ Memos + +  + +This section does serve for quick memos. + +  +- [ ] 17:08 :grapes: [[@Life Admin|Admin]]: Re-buy white wines [[Finca Racons]] [[Nadine Saxer - Blanc de Noir]] ๐Ÿ“…2024-05-30 +- [ ] 19:55 :fried_egg: [[@Life Admin|Admin]]: Buy tupperware ๐Ÿ“…2024-01-31 ^g5hlxg + + +%% --- %% +  + +--- + +  + +### ๐Ÿ—’ Notes + +  + +๐Ÿด: [[Chilli con Carne]] + +๐Ÿฝ: [[Big Shells With Spicy Lamb Sausage and Pistachios]] + +  + +--- + +  + +### :link: Linked activity + +  + +```dataview +Table from [[2023-12-24]] +``` + +  +  \ No newline at end of file diff --git a/00.01 Admin/Calendars/2023-12-25.md b/00.01 Admin/Calendars/2023-12-25.md new file mode 100644 index 00000000..ef171d10 --- /dev/null +++ b/00.01 Admin/Calendars/2023-12-25.md @@ -0,0 +1,136 @@ +--- + +title: "๐Ÿ—’ Daily Note" +allDay: true +date: 2023-12-25 +Date: 2023-12-25 +DocType: Note +Hierarchy: +TimeStamp: +location: +CollapseMetaTable: true +Sleep: 8 +Happiness: 85 +Gratefulness: 90 +Stress: 25 +FrontHeadBar: 5 +EarHeadBar: 30 +BackHeadBar: 20 +Water: 3.5 +Coffee: 5 +Steps: 11287 +Weight: +Ski: +IceSkating: +Riding: +Racket: +Football: +Swim: + +--- + +%% Parent:: [[@Life Admin]] %% + +--- + +[[2023-12-24|<< ๐Ÿ—“ Previous ]]       [[@Main Dashboard|Back]]       [[2023-12-26|๐Ÿ—“ Next >>]] + +--- + +  + +```button +name Record today's health +type command +action MetaEdit: Run MetaEdit +id EditMetaData +``` +^button-2023-12-25Edit + +```button +name Save +type command +action Save current file +id Save +``` +^button-2023-12-25NSave + +  + +# 2023-12-25 + +  + +> [!summary]+ +> Daily note for 2023-12-25 + +  + +```toc +style: number +``` + +  + +--- + +  + +### โœ… Tasks of the day + +  + +```tasks +not done +due on 2023-12-25 +path does not include Templates +hide backlinks +hide task count +``` + +  + +--- + +  + +### ๐Ÿ“ Memos + +  + +This section does serve for quick memos. + +  + + +%% --- %% +  + +--- + +  + +### ๐Ÿ—’ Notes + +  + +๐Ÿด: [[Mint Sauce]] + +๐Ÿฝ: [[Korean Barbecue-Style Meatballs]] + +  + +--- + +  + +### :link: Linked activity + +  + +```dataview +Table from [[2023-12-25]] +``` + +  +  \ No newline at end of file diff --git a/00.01 Admin/Calendars/2023-12-26.md b/00.01 Admin/Calendars/2023-12-26.md new file mode 100644 index 00000000..265472b7 --- /dev/null +++ b/00.01 Admin/Calendars/2023-12-26.md @@ -0,0 +1,134 @@ +--- + +title: "๐Ÿ—’ Daily Note" +allDay: true +date: 2023-12-26 +Date: 2023-12-26 +DocType: Note +Hierarchy: +TimeStamp: +location: +CollapseMetaTable: true +Sleep: 8 +Happiness: 85 +Gratefulness: 90 +Stress: 25 +FrontHeadBar: 5 +EarHeadBar: 30 +BackHeadBar: 20 +Water: 3 +Coffee: 3 +Steps: 13434 +Weight: 92.3 +Ski: +IceSkating: +Riding: +Racket: +Football: +Swim: + +--- + +%% Parent:: [[@Life Admin]] %% + +--- + +[[2023-12-25|<< ๐Ÿ—“ Previous ]]       [[@Main Dashboard|Back]]       [[2023-12-27|๐Ÿ—“ Next >>]] + +--- + +  + +```button +name Record today's health +type command +action MetaEdit: Run MetaEdit +id EditMetaData +``` +^button-2023-12-26Edit + +```button +name Save +type command +action Save current file +id Save +``` +^button-2023-12-26NSave + +  + +# 2023-12-26 + +  + +> [!summary]+ +> Daily note for 2023-12-26 + +  + +```toc +style: number +``` + +  + +--- + +  + +### โœ… Tasks of the day + +  + +```tasks +not done +due on 2023-12-26 +path does not include Templates +hide backlinks +hide task count +``` + +  + +--- + +  + +### ๐Ÿ“ Memos + +  + +This section does serve for quick memos. + +  + + +%% --- %% +  + +--- + +  + +### ๐Ÿ—’ Notes + +  + +Loret ipsum + +  + +--- + +  + +### :link: Linked activity + +  + +```dataview +Table from [[2023-12-26]] +``` + +  +  \ No newline at end of file diff --git a/00.01 Admin/Calendars/2023-12-27.md b/00.01 Admin/Calendars/2023-12-27.md new file mode 100644 index 00000000..a3a4f35b --- /dev/null +++ b/00.01 Admin/Calendars/2023-12-27.md @@ -0,0 +1,136 @@ +--- + +title: "๐Ÿ—’ Daily Note" +allDay: true +date: 2023-12-27 +Date: 2023-12-27 +DocType: Note +Hierarchy: +TimeStamp: +location: +CollapseMetaTable: true +Sleep: 8 +Happiness: 85 +Gratefulness: 90 +Stress: 25 +FrontHeadBar: 5 +EarHeadBar: 30 +BackHeadBar: 20 +Water: 1 +Coffee: 4 +Steps: +Weight: +Ski: +IceSkating: +Riding: +Racket: +Football: +Swim: + +--- + +%% Parent:: [[@Life Admin]] %% + +--- + +[[2023-12-26|<< ๐Ÿ—“ Previous ]]       [[@Main Dashboard|Back]]       [[2023-12-28|๐Ÿ—“ Next >>]] + +--- + +  + +```button +name Record today's health +type command +action MetaEdit: Run MetaEdit +id EditMetaData +``` +^button-2023-12-27Edit + +```button +name Save +type command +action Save current file +id Save +``` +^button-2023-12-27NSave + +  + +# 2023-12-27 + +  + +> [!summary]+ +> Daily note for 2023-12-27 + +  + +```toc +style: number +``` + +  + +--- + +  + +### โœ… Tasks of the day + +  + +```tasks +not done +due on 2023-12-27 +path does not include Templates +hide backlinks +hide task count +``` + +  + +--- + +  + +### ๐Ÿ“ Memos + +  + +This section does serve for quick memos. + +  + + +%% --- %% +  + +--- + +  + +### ๐Ÿ—’ Notes + +  + +๐Ÿด: [[Chicken Fried Rice]] + +๐Ÿš†: [[2023-12-27 ๐Ÿ—ผ Dรฉpart Papa]] + +  + +--- + +  + +### :link: Linked activity + +  + +```dataview +Table from [[2023-12-27]] +``` + +  +  \ No newline at end of file diff --git a/00.01 Admin/Calendars/Events/2022-03-19 ๐Ÿ  Arrivรฉe Meggi-mo.md b/00.01 Admin/Calendars/Events/2022-03-19 ๐Ÿ  Arrivรฉe Meggi-mo.md deleted file mode 100644 index 122f1493..00000000 --- a/00.01 Admin/Calendars/Events/2022-03-19 ๐Ÿ  Arrivรฉe Meggi-mo.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: "๐Ÿงš๐Ÿผ Arrivรฉe Meggi-mo" -allDay: true -date: 2022-03-19 -endDate: 2022-03-20 -CollapseMetaTable: true ---- - -# Arrivรฉe de [[@@MRCK|Meggi-mo]] - - -- [l] Arrivรฉe ร  [[@@Zรผrich|Zรผrich]] de Meggi-mo, le [[2022-03-19|19/03/2022]]. \ No newline at end of file diff --git a/00.01 Admin/Calendars/Events/2022-03-24 ๐ŸŽก Dรฉpart de Meggi-mo.md b/00.01 Admin/Calendars/Events/2022-03-24 ๐ŸŽก Dรฉpart de Meggi-mo.md deleted file mode 100644 index 0887e8ee..00000000 --- a/00.01 Admin/Calendars/Events/2022-03-24 ๐ŸŽก Dรฉpart de Meggi-mo.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "๐Ÿงš๐Ÿผ Dรฉpart de Meggi-mo" -allDay: true -date: 2022-03-24 -endDate: 2022-03-25 -CollapseMetaTable: true ---- - -# Dรฉpart de Meggi-mo - -Dรฉpart de ma [[@@MRCK|Meggi-mo]] le [[2022-03-24|24/03/2022]]. \ No newline at end of file diff --git a/00.01 Admin/Calendars/Events/2022-03-31 ๐Ÿ  Arrivรฉe de Papa.md b/00.01 Admin/Calendars/Events/2022-03-31 ๐Ÿ  Arrivรฉe de Papa.md deleted file mode 100644 index 052297da..00000000 --- a/00.01 Admin/Calendars/Events/2022-03-31 ๐Ÿ  Arrivรฉe de Papa.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง Arrivรฉe de Papa" -allDay: false -startTime: 20:25 -endTime: 20:30 -date: 2022-03-31 ---- - -- [l] [[2022-03-31]], arrivรฉe de [[Amaury de Villeneuve|Papa]] ร  [[@@Zรผrich|Zรผrich]] diff --git a/00.01 Admin/Calendars/Events/2022-04-04 ๐Ÿ—ผ Dรฉpart Papa.md b/00.01 Admin/Calendars/Events/2022-04-04 ๐Ÿ—ผ Dรฉpart Papa.md deleted file mode 100644 index c6442f28..00000000 --- a/00.01 Admin/Calendars/Events/2022-04-04 ๐Ÿ—ผ Dรฉpart Papa.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง Dรฉpart Papa" -allDay: false -startTime: 13:30 -endTime: 14:00 -date: 2022-04-04 ---- - -[[2022-04-04]], dรฉpart de [[Amaury de Villeneuve|Papa]] \ No newline at end of file diff --git a/00.01 Admin/Calendars/Events/2022-04-10 ๐Ÿ—ณ๏ธ 1er tour Prรฉsidentielle.md b/00.01 Admin/Calendars/Events/2022-04-10 ๐Ÿ—ณ๏ธ 1er tour Prรฉsidentielle.md deleted file mode 100644 index 43d43410..00000000 --- a/00.01 Admin/Calendars/Events/2022-04-10 ๐Ÿ—ณ๏ธ 1er tour Prรฉsidentielle.md +++ /dev/null @@ -1,11 +0,0 @@ ---- - -title: "๐Ÿ—ณ 1er tour Prรฉsidentielle" -allDay: true -date: 2022-04-10 -endDate: 2022-04-11 -CollapseMetaTable: true - ---- - -1er tour des รฉlections prรฉsidentielles ร  [[@@Paris|Paris]], le [[2022-04-10|10 avril 2022]]; avec [[@@MRCK|Meggi-mo]] dans l'isoloir. diff --git a/00.01 Admin/Calendars/Events/2022-04-24 ๐Ÿ—ณ๏ธ 2nd tour รฉlections prรฉsidentielles.md b/00.01 Admin/Calendars/Events/2022-04-24 ๐Ÿ—ณ๏ธ 2nd tour รฉlections prรฉsidentielles.md deleted file mode 100644 index d1cf3be0..00000000 --- a/00.01 Admin/Calendars/Events/2022-04-24 ๐Ÿ—ณ๏ธ 2nd tour รฉlections prรฉsidentielles.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: "๐Ÿ—ณ 2nd tour รฉlections prรฉsidentielles" -allDay: true -date: 2022-04-24 -endDate: 2022-04-25 ---- - -2nd tour des รฉlections prรฉsidentielles le [[2022-04-24|24 Avril]] ร  [[@@Paris|Paris]]. \ No newline at end of file diff --git a/00.01 Admin/Calendars/Events/2022-04-27 ๐Ÿ“ Arrivรฉe ร  Lisbonne.md b/00.01 Admin/Calendars/Events/2022-04-27 ๐Ÿ“ Arrivรฉe ร  Lisbonne.md deleted file mode 100644 index edee1338..00000000 --- a/00.01 Admin/Calendars/Events/2022-04-27 ๐Ÿ“ Arrivรฉe ร  Lisbonne.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: "๐Ÿ›ฉ Arrivรฉe ร  Lisbonne" -allDay: false -startTime: 16:00 -endTime: 16:30 -date: 2022-04-27 ---- - -Arrival on [[2022-04-27|this day]] in [[Lisbon]]. \ No newline at end of file diff --git a/00.01 Admin/Calendars/Events/2022-05-01 ๐Ÿ  Dรฉpart de Lisbonne.md b/00.01 Admin/Calendars/Events/2022-05-01 ๐Ÿ  Dรฉpart de Lisbonne.md deleted file mode 100644 index e0351d91..00000000 --- a/00.01 Admin/Calendars/Events/2022-05-01 ๐Ÿ  Dรฉpart de Lisbonne.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: "๐Ÿ›ฉ Dรฉpart de Lisbonne" -allDay: false -startTime: 15:30 -endTime: 16:00 -date: 2022-05-01 ---- - -Departure from [[Lisbon]] to [[@@Zรผrich|Zรผrich]] [[2022-05-01|this day]]. \ No newline at end of file diff --git a/00.01 Admin/Calendars/Events/2022-05-15 ๐Ÿ  Definite arrival of Meggi-mo to Zรผzรผ.md b/00.01 Admin/Calendars/Events/2022-05-15 ๐Ÿ  Definite arrival of Meggi-mo to Zรผzรผ.md deleted file mode 100644 index 6f2fd72c..00000000 --- a/00.01 Admin/Calendars/Events/2022-05-15 ๐Ÿ  Definite arrival of Meggi-mo to Zรผzรผ.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: "๐Ÿงš๐Ÿผ Definite arrival of Meggi-mo to Zรผzรผ" -allDay: true -startTime: 06:30 -endTime: 07:00 -date: 2022-05-15 ---- - -[[@@MRCK|Meggi-mo]] is arriving to [[@@Zรผrich|Zรผrich]] for good on [[2022-05-15|that day]]. \ No newline at end of file diff --git a/00.01 Admin/Calendars/Events/2022-10-14 ๐Ÿ“ Weekend ร  GVA.md b/00.01 Admin/Calendars/Events/2022-10-14 ๐Ÿ“ Weekend ร  GVA.md deleted file mode 100644 index e79d478c..00000000 --- a/00.01 Admin/Calendars/Events/2022-10-14 ๐Ÿ“ Weekend ร  GVA.md +++ /dev/null @@ -1,17 +0,0 @@ ---- - -title: "๐Ÿš† Weekend in GVA" -allDay: true -date: 2022-10-14 -endDate: 2022-10-17 -CollapseMetaTable: true - ---- - -Weekend ร  [[Geneva]] avec [[@@MRCK|Meggi-mo]]. - -  - -Dรฉpart: [[2022-10-14]] de [[@@Zรผrich|Zรผrich]] - -Retour: [[2022-10-16]] ร  [[@@Zรผrich|Zรผrich]] \ No newline at end of file diff --git a/00.01 Admin/Calendars/Events/2022-10-21 ๐Ÿ—ผ Weekend ร  Paris.md b/00.01 Admin/Calendars/Events/2022-10-21 ๐Ÿ—ผ Weekend ร  Paris.md deleted file mode 100644 index 22a2d918..00000000 --- a/00.01 Admin/Calendars/Events/2022-10-21 ๐Ÿ—ผ Weekend ร  Paris.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: "๐Ÿ—ผ Weekend ร  Paris" -allDay: true -date: 2022-10-21 -endDate: 2022-10-24 -CollapseMetaTable: true - ---- - -Weekend ร  [[@@Paris|Paris]] avec [[@@MRCK|Meggi-mo]]. - -  - -Dรฉpart: [[2022-10-21]] de [[@@Zรผrich|Zรผrich]] - -Retour: [[2022-10-23]] ร  [[@@Zรผrich|Zรผrich]] \ No newline at end of file diff --git a/00.01 Admin/Calendars/Events/2022-11-19 ๐Ÿ’ Fianรงailles Marguerite & Arnold.md b/00.01 Admin/Calendars/Events/2022-11-19 ๐Ÿ’ Fianรงailles Marguerite & Arnold.md deleted file mode 100644 index 4b31a67b..00000000 --- a/00.01 Admin/Calendars/Events/2022-11-19 ๐Ÿ’ Fianรงailles Marguerite & Arnold.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: "๐Ÿ’ Fianรงailles Marguerite & Arnold" -allDay: false -startTime: 16:30 -endTime: 15:00 -date: 2022-11-19 -CollapseMetaTable: true ---- - -Fianรงailles de [[Marguerite de Villeneuve|Marguerite]] et [[Arnold Moulin|Arnold]] [[2022-11-19|ce jour]] ร  [[Geneva|Genรจve]]. \ No newline at end of file diff --git a/00.01 Admin/Calendars/Events/2022-12-26 ๐Ÿ  Papa ร  Zรผrich.md b/00.01 Admin/Calendars/Events/2022-12-26 ๐Ÿ  Papa ร  Zรผrich.md deleted file mode 100644 index 23127bf4..00000000 --- a/00.01 Admin/Calendars/Events/2022-12-26 ๐Ÿ  Papa ร  Zรผrich.md +++ /dev/null @@ -1,12 +0,0 @@ ---- - -title: "๐Ÿ‘ช Papa ร  Zรผrich" -allDay: true -date: 2022-12-26 -endDate: 2022-12-31 -completed: null -CollapseMetaTable: true - ---- - -[[Amaury de Villeneuve|Papa]] arrive ร  [[@@Zรผrich|Zรผrich]] le [[2022-12-26|26 dรฉcembre]] ร  13h26. diff --git a/00.01 Admin/Calendars/Events/2022-12-30 ๐Ÿ  Stef & Kyna in Zรผrich.md b/00.01 Admin/Calendars/Events/2022-12-30 ๐Ÿ  Stef & Kyna in Zรผrich.md deleted file mode 100644 index 143e9fb3..00000000 --- a/00.01 Admin/Calendars/Events/2022-12-30 ๐Ÿ  Stef & Kyna in Zรผrich.md +++ /dev/null @@ -1,12 +0,0 @@ ---- - -title: "Stef & Kyna in Zรผrich" -allDay: true -date: 2022-12-30 -endDate: 2023-01-05 -completed: null -CollapseMetaTable: true - ---- - -Stef & Kyna arrivent ร  [[@@Zรผrich|Zรผrich]] le [[2022-12-30|30 dรฉcembre]] avec Swiss le matin. diff --git a/00.01 Admin/Calendars/Events/2023-01-23 ๐Ÿฉบ Mรฉdecin.md b/00.01 Admin/Calendars/Events/2023-01-23 ๐Ÿฉบ Mรฉdecin.md deleted file mode 100644 index c32582d8..00000000 --- a/00.01 Admin/Calendars/Events/2023-01-23 ๐Ÿฉบ Mรฉdecin.md +++ /dev/null @@ -1,13 +0,0 @@ ---- - -title: Mรฉdecin -allDay: false -startTime: 11:15 -endTime: 12:15 -date: 2023-01-23 -completed: null -CollapseMetaTable: true - ---- - -[[2023-01-23|Ce jour]], 1er RDV avec [[Dr Cleopatra Morales]]. diff --git a/00.01 Admin/Calendars/Events/2023-02-06 ๐Ÿ“ Genรจve.md b/00.01 Admin/Calendars/Events/2023-02-06 ๐Ÿ“ Genรจve.md deleted file mode 100644 index 2a48ac3f..00000000 --- a/00.01 Admin/Calendars/Events/2023-02-06 ๐Ÿ“ Genรจve.md +++ /dev/null @@ -1,12 +0,0 @@ ---- - -title: Genรจve -allDay: true -date: 2023-02-06 -endDate: 2023-02-08 -completed: null -CollapseMetaTable: true - ---- - -Depart ร  [[Geneva|Genรจve]] [[2023-02-06|ce jour]] et retour le [[223-02-07|lendemain]]. \ No newline at end of file diff --git a/00.01 Admin/Calendars/Events/2023-02-09 ๐Ÿฉบ Mรฉdecin.md b/00.01 Admin/Calendars/Events/2023-02-09 ๐Ÿฉบ Mรฉdecin.md deleted file mode 100644 index 00dd4061..00000000 --- a/00.01 Admin/Calendars/Events/2023-02-09 ๐Ÿฉบ Mรฉdecin.md +++ /dev/null @@ -1,13 +0,0 @@ ---- - -title: โš• Mรฉdecin -allDay: false -startTime: 12:15 -endTime: 13:15 -date: 2023-02-09 -completed: null -CollapseMetaTable: true - ---- - -[[2023-02-09|Ce jour]], RDV de suivi avec [[Dr Cleopatra Morales]] \ No newline at end of file diff --git a/00.01 Admin/Calendars/Events/2023-02-11 ๐Ÿ’ Mariage Eloi & Zรฉlie.md b/00.01 Admin/Calendars/Events/2023-02-11 ๐Ÿ’ Mariage Eloi & Zรฉlie.md deleted file mode 100644 index 5e20b705..00000000 --- a/00.01 Admin/Calendars/Events/2023-02-11 ๐Ÿ’ Mariage Eloi & Zรฉlie.md +++ /dev/null @@ -1,91 +0,0 @@ ---- - -title: "๐Ÿ‘ฐโ€โ™€ Mariage Eloi & Zรฉlie" -allDay: true -date: 2023-02-10 -endDate: 2023-02-12 -CollapseMetaTable: true - ---- - -Mariage dโ€™[[Eloi de Villeneuve|ร‰loi]] avec [[Zรฉlie]] en [[@France|Bretagne]] (Rennes) [[2023-02-11|ce jour]]. - -  - -๐Ÿš†: 23h11, arrivรฉe ร  Rennes - -  - -๐Ÿจ: **Hotel Saint Antoine**
27 avenue Janvier
Rennes - -  - -### Vendredi 10 Fรฉvrier - -  - -#### 17h: Mariage civil - -Mairie de Montfort-sur-Meu (35) - -  - -#### 20h30: Veillรฉe de Priรจre - -Chapelle du chรขteau de la Chรขsse -Iffendic (35) - -  - ---- - -  - -### Samedi 11 Fรฉvrier - -  - -#### 14h: Messe de Mariage - -Saint-Louis-Marie -Montfort-sur-Meu (35) - -  - -#### 16h30: Cocktail - -Chรขteau de la Chรขsse -Iffendic (35) - -  - -#### 19h30: Dรฎner - -Chรขteau de la Chรขsse -Iffendic (35) - -  - ---- - -  - -### Dimanche 12 Fรฉvrier - -  - -#### 11h: Messe - -Chapelle du chรขteau de la Chรขsse -Iffendic (35) - -  - -#### 12h: Dรฉjeuner breton - -Chรขteau de la Chรขsse -Iffendic (35) - -  - -๐Ÿš†: 13h35, dรฉpart de Rennes \ No newline at end of file diff --git a/00.01 Admin/Calendars/Events/2023-02-19 ๐ŸŽž๏ธ Tรกr @ Riff Raff.md b/00.01 Admin/Calendars/Events/2023-02-19 ๐ŸŽž๏ธ Tรกr @ Riff Raff.md deleted file mode 100644 index 4f2da539..00000000 --- a/00.01 Admin/Calendars/Events/2023-02-19 ๐ŸŽž๏ธ Tรกr @ Riff Raff.md +++ /dev/null @@ -1,13 +0,0 @@ ---- - -title: ๐ŸŽฌ Tรกr @ Riff Raff -allDay: false -startTime: 20:30 -endTime: 22:30 -date: 2023-02-19 -completed: null -CollapseMetaTable: true - ---- - -[[2023-02-19|Ce jour]], [[Tรกr (2022)]] @ [[Riff Raff Kino Bar]]. diff --git a/00.01 Admin/Calendars/Events/2023-03-06 ๐Ÿฉบ Mรฉdecin.md b/00.01 Admin/Calendars/Events/2023-03-06 ๐Ÿฉบ Mรฉdecin.md deleted file mode 100644 index 9780ae6c..00000000 --- a/00.01 Admin/Calendars/Events/2023-03-06 ๐Ÿฉบ Mรฉdecin.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: ๐Ÿฉบ Mรฉdecin -allDay: false -startTime: 15:00 -endTime: 15:30 -date: 2023-03-06 -completed: null -CollapseMetaTable: true - ---- - -[[2023-03-06|Ce jour]], rdv avec [[Dr Awad Abuawad]] diff --git a/00.01 Admin/Calendars/Events/2023-03-11 ๐Ÿ  Marg & Arnold ร  Zรผrich.md b/00.01 Admin/Calendars/Events/2023-03-11 ๐Ÿ  Marg & Arnold ร  Zรผrich.md deleted file mode 100644 index e69a2915..00000000 --- a/00.01 Admin/Calendars/Events/2023-03-11 ๐Ÿ  Marg & Arnold ร  Zรผrich.md +++ /dev/null @@ -1,13 +0,0 @@ ---- - -title: ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ Marg & Arnold ร  Zรผrich -allDay: true -date: 2023-03-11 -endDate: 2023-03-13 -completed: null -CollapseMetaTable: true - ---- - -Arrivรฉe le [[2023-03-11|11 mars]] de [[Marguerite de Villeneuve|Marg]] et [[Arnold Moulin|Arnold]]. -Dรฉpart le [[2023-03-12|lendemain]]. diff --git a/00.01 Admin/Calendars/Events/2023-03-18 ๐Ÿ‡จ๐Ÿ‡ญ Molly & boyfriend in Zรผrich.md b/00.01 Admin/Calendars/Events/2023-03-18 ๐Ÿ‡จ๐Ÿ‡ญ Molly & boyfriend in Zรผrich.md deleted file mode 100644 index 2f3197c0..00000000 --- a/00.01 Admin/Calendars/Events/2023-03-18 ๐Ÿ‡จ๐Ÿ‡ญ Molly & boyfriend in Zรผrich.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ Molly & boyfriend in Zรผrich -allDay: true -date: 2023-03-18 -endDate: 2023-03-20 -completed: null -CollapseMetaTable: true - ---- - -Weekend in [[@@Zรผrich|Zรผrich]] for [[@@MRCK|Meggi-mo]]โ€˜s cousin Molly and boyfriend. -Arrival on [[2023-03-18|18th March]] and departure on Monday [[2023-03-20|20th March]]. diff --git a/00.01 Admin/Calendars/Events/2023-04-14 ๐Ÿฉบ Mรฉdecin.md b/00.01 Admin/Calendars/Events/2023-04-14 ๐Ÿฉบ Mรฉdecin.md deleted file mode 100644 index 502d286d..00000000 --- a/00.01 Admin/Calendars/Events/2023-04-14 ๐Ÿฉบ Mรฉdecin.md +++ /dev/null @@ -1,13 +0,0 @@ ---- - -title: ๐Ÿฉบ Mรฉdecin -allDay: false -startTime: 11:45 -endTime: 12:15 -date: 2023-04-14 -completed: null -CollapseMetaTable: true - ---- - -[[2023-04-14|Ce jour]], rdv avec [[Dr Cleopatra Morales]] diff --git a/00.01 Admin/Calendars/Events/2023-12-21 ๐Ÿ  Arrivรฉe Papa.md b/00.01 Admin/Calendars/Events/2023-12-21 ๐Ÿ  Arrivรฉe Papa.md deleted file mode 100644 index b0d95b10..00000000 --- a/00.01 Admin/Calendars/Events/2023-12-21 ๐Ÿ  Arrivรฉe Papa.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: ๐Ÿ  Arrivรฉe Papa -allDay: false -startTime: 20:26 -endTime: 21:26 -date: 2023-12-21 -completed: null ---- - -[[2023-12-21|Ce jour]], arrivรฉe de [[Amaury de Villeneuve|Papa]] ร  [[@@Zรผrich|Zรผrich]] diff --git a/00.01 Admin/Calendars/Events/2023-12-27 ๐Ÿ—ผ Dรฉpart Papa.md b/00.01 Admin/Calendars/Events/2023-12-27 ๐Ÿ—ผ Dรฉpart Papa.md deleted file mode 100644 index 544487a5..00000000 --- a/00.01 Admin/Calendars/Events/2023-12-27 ๐Ÿ—ผ Dรฉpart Papa.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: ๐Ÿ—ผ Dรฉpart Papa -allDay: false -startTime: 13:30 -endTime: 14:30 -date: 2023-12-27 -completed: null ---- - -[[2023-12-27|Ce jour]], dรฉpart de [[Amaury de Villeneuve|Papa]] de [[@@Zรผrich|Zรผrich]] pour [[@@Paris|Paris]] diff --git a/00.01 Admin/Pictures/Sally/IMG_4169.jpg b/00.01 Admin/Pictures/Sally/IMG_4169.jpg new file mode 100644 index 00000000..1e86cbcd Binary files /dev/null and b/00.01 Admin/Pictures/Sally/IMG_4169.jpg differ diff --git a/00.01 Admin/Pictures/Sally/IMG_4170.jpg b/00.01 Admin/Pictures/Sally/IMG_4170.jpg new file mode 100644 index 00000000..0b91c771 Binary files /dev/null and b/00.01 Admin/Pictures/Sally/IMG_4170.jpg differ diff --git a/00.01 Admin/Pictures/Sally/IMG_4173.jpg b/00.01 Admin/Pictures/Sally/IMG_4173.jpg new file mode 100644 index 00000000..9cd58867 Binary files /dev/null and b/00.01 Admin/Pictures/Sally/IMG_4173.jpg differ diff --git a/00.01 Admin/dv-views/GlobalFunc.js b/00.01 Admin/dv-views/GlobalFunc.js index 4f1ddff4..331301d7 100644 --- a/00.01 Admin/dv-views/GlobalFunc.js +++ b/00.01 Admin/dv-views/GlobalFunc.js @@ -585,6 +585,9 @@ class globalFunc { case 'Thai': tempresult = "๐Ÿ‡น๐Ÿ‡ญ" break; + case 'Ethiopia': + tempresult = "๐Ÿ‡ช๐Ÿ‡น" + break; case 'Pub': tempresult = "๐Ÿบ" break; diff --git a/00.02 Inbox/Bad Kids.md b/00.02 Inbox/Bad Kids.md new file mode 100644 index 00000000..851ad6ef --- /dev/null +++ b/00.02 Inbox/Bad Kids.md @@ -0,0 +1,86 @@ +--- + +Tag: ["๐Ÿ“–", "Novel", "๐Ÿ‡จ๐Ÿ‡ณ"] +Date: 2023-12-25 +DocType: "Source" +Hierarchy: "NonRoot" +TimeStamp: +location: +Source: + Type: "Book" + Author: Zijin Chen + Language: CN + Published: 2023-06-06 + Link: + Read: + Cover: http://books.google.com/books/content?id=Rc6UEAAAQBAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api +CollapseMetaTable: true + +--- + +Parent:: [[@Reading master|Reading list]] +ReadingState:: ๐ŸŸฅ + +--- + +  + +```button +name Edit Source parameters +type command +action MetaEdit: Run MetaEdit +id EditMetaData +``` +^button-SourceEdit + +```button +name Save +type command +action Save current file +id Save +``` +^button-TNSave + +  + +# Bad Kids + +  + +> [!summary]+ +> + +  + +```toc +style: number +``` + +  + +--- + +  + +### Cover + +  + +```dataviewjs +dv.el("span", "![](" + dv.current().Source.Cover + ")") +``` + +  + +--- + +  + +### Notes + +  + +Loret ipsum + +  +  \ No newline at end of file diff --git a/00.02 Inbox/Gaslight.md b/00.02 Inbox/Gaslight.md new file mode 100644 index 00000000..7e420217 --- /dev/null +++ b/00.02 Inbox/Gaslight.md @@ -0,0 +1,86 @@ +--- + +Tag: ["๐Ÿ“–", "Novel", "๐Ÿ‡ณ๐Ÿ‡ฌ"] +Date: 2023-12-25 +DocType: "Source" +Hierarchy: "NonRoot" +TimeStamp: +location: +Source: + Type: "Book" + Author: Femi Kayode + Language: EN + Published: 2023-11-09 + Link: + Read: + Cover: http://books.google.com/books/content?id=f26jEAAAQBAJ&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api +CollapseMetaTable: true + +--- + +Parent:: [[@Reading master|Reading list]] +ReadingState:: ๐ŸŸฅ + +--- + +  + +```button +name Edit Source parameters +type command +action MetaEdit: Run MetaEdit +id EditMetaData +``` +^button-SourceEdit + +```button +name Save +type command +action Save current file +id Save +``` +^button-TNSave + +  + +# Gaslight + +  + +> [!summary]+ +> + +  + +```toc +style: number +``` + +  + +--- + +  + +### Cover + +  + +```dataviewjs +dv.el("span", "![](" + dv.current().Source.Cover + ")") +``` + +  + +--- + +  + +### Notes + +  + +Loret ipsum + +  +  \ No newline at end of file diff --git a/00.02 Inbox/Prophet Song.md b/00.02 Inbox/Prophet Song.md new file mode 100644 index 00000000..dd37145f --- /dev/null +++ b/00.02 Inbox/Prophet Song.md @@ -0,0 +1,86 @@ +--- + +Tag: ["๐Ÿ“–", "Novel"] +Date: 2023-12-25 +DocType: "Source" +Hierarchy: "NonRoot" +TimeStamp: +location: +Source: + Type: "Book" + Author: Paul Lynch + Language: EN + Published: 2023-08-24 + Link: + Read: + Cover: http://books.google.com/books/content?id=zSfAEAAAQBAJ&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api +CollapseMetaTable: true + +--- + +Parent:: [[@Reading master|Reading list]] +ReadingState:: ๐ŸŸฅ + +--- + +  + +```button +name Edit Source parameters +type command +action MetaEdit: Run MetaEdit +id EditMetaData +``` +^button-SourceEdit + +```button +name Save +type command +action Save current file +id Save +``` +^button-TNSave + +  + +# Prophet Song + +  + +> [!summary]+ +> + +  + +```toc +style: number +``` + +  + +--- + +  + +### Cover + +  + +```dataviewjs +dv.el("span", "![](" + dv.current().Source.Cover + ")") +``` + +  + +--- + +  + +### Notes + +  + +Loret ipsum + +  +  \ No newline at end of file diff --git a/00.02 Inbox/Soldier Sailor.md b/00.02 Inbox/Soldier Sailor.md new file mode 100644 index 00000000..91ec92bc --- /dev/null +++ b/00.02 Inbox/Soldier Sailor.md @@ -0,0 +1,86 @@ +--- + +Tag: ["๐Ÿ“–", "Novel"] +Date: 2023-12-25 +DocType: "Source" +Hierarchy: "NonRoot" +TimeStamp: +location: +Source: + Type: "Book" + Author: CLAIRE. KILROY + Language: EN + Published: 2023-05-22 + Link: + Read: + Cover: "https://dauntbooks.co.uk/wp-content/uploads/2023/05/9780571381142.jpg" +CollapseMetaTable: true + +--- + +Parent:: [[@Reading master|Reading list]] +ReadingState:: ๐ŸŸฅ + +--- + +  + +```button +name Edit Source parameters +type command +action MetaEdit: Run MetaEdit +id EditMetaData +``` +^button-SourceEdit + +```button +name Save +type command +action Save current file +id Save +``` +^button-TNSave + +  + +# SOLDIER SAILOR + +  + +> [!summary]+ +> + +  + +```toc +style: number +``` + +  + +--- + +  + +### Cover + +  + +```dataviewjs +dv.el("span", "![](" + dv.current().Source.Cover + ")") +``` + +  + +--- + +  + +### Notes + +  + +Loret ipsum + +  +  \ No newline at end of file diff --git a/00.02 Inbox/The House of Doors.md b/00.02 Inbox/The House of Doors.md new file mode 100644 index 00000000..46864eeb --- /dev/null +++ b/00.02 Inbox/The House of Doors.md @@ -0,0 +1,86 @@ +--- + +Tag: ["๐Ÿ“–", "Novel", "๐Ÿ‡ฒ๐Ÿ‡พ"] +Date: 2023-12-25 +DocType: "Source" +Hierarchy: "NonRoot" +TimeStamp: +location: +Source: + Type: "Book" + Author: Tan Twan Eng + Language: MY + Published: 2023-10-17 + Link: + Read: + Cover: http://books.google.com/books/content?id=h6ivEAAAQBAJ&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api +CollapseMetaTable: true + +--- + +Parent:: [[@Reading master|Reading list]] +ReadingState:: ๐ŸŸฅ + +--- + +  + +```button +name Edit Source parameters +type command +action MetaEdit: Run MetaEdit +id EditMetaData +``` +^button-SourceEdit + +```button +name Save +type command +action Save current file +id Save +``` +^button-TNSave + +  + +# The House of Doors + +  + +> [!summary]+ +> + +  + +```toc +style: number +``` + +  + +--- + +  + +### Cover + +  + +```dataviewjs +dv.el("span", "![](" + dv.current().Source.Cover + ")") +``` + +  + +--- + +  + +### Notes + +  + +Loret ipsum + +  +  \ No newline at end of file diff --git a/00.02 Inbox/Water.md b/00.02 Inbox/Water.md new file mode 100644 index 00000000..2b11748f --- /dev/null +++ b/00.02 Inbox/Water.md @@ -0,0 +1,86 @@ +--- + +Tag: ["๐Ÿ“–", "Novel"] +Date: 2023-12-25 +DocType: "Source" +Hierarchy: "NonRoot" +TimeStamp: +location: +Source: + Type: "Book" + Author: John Boyne + Language: EN + Published: 2023-11-02 + Link: + Read: + Cover: http://books.google.com/books/content?id=ry66zwEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api +CollapseMetaTable: true + +--- + +Parent:: [[@Reading master|Reading list]] +ReadingState:: ๐ŸŸฅ + +--- + +  + +```button +name Edit Source parameters +type command +action MetaEdit: Run MetaEdit +id EditMetaData +``` +^button-SourceEdit + +```button +name Save +type command +action Save current file +id Save +``` +^button-TNSave + +  + +# Water + +  + +> [!summary]+ +> + +  + +```toc +style: number +``` + +  + +--- + +  + +### Cover + +  + +```dataviewjs +dv.el("span", "![](" + dv.current().Source.Cover + ")") +``` + +  + +--- + +  + +### Notes + +  + +Loret ipsum + +  +  \ No newline at end of file diff --git a/00.02 Inbox/Yoga.md b/00.02 Inbox/Yoga.md new file mode 100644 index 00000000..9a8c0e63 --- /dev/null +++ b/00.02 Inbox/Yoga.md @@ -0,0 +1,86 @@ +--- + +Tag: ["๐Ÿ“–", "Novel", "๐Ÿ‡ซ๐Ÿ‡ท", "๐Ÿคฏ"] +Date: 2023-12-25 +DocType: "Source" +Hierarchy: "NonRoot" +TimeStamp: +location: +Source: + Type: "Book" + Author: "Emmanuel Carrรจre" + Language: FR + Published: 2022-09 + Link: "https://www.babelio.com/livres/Carrere-Yoga/1238561" + Read: + Cover: "https://nimblespirit.com/wp-content/uploads/2022/12/Yoga-dEmmanuel-Carrere-Emoi-et-moi.jpg" +CollapseMetaTable: true + +--- + +Parent:: [[@Reading master|Reading list]] +ReadingState:: ๐ŸŸฅ + +--- + +  + +```button +name Edit Source parameters +type command +action MetaEdit: Run MetaEdit +id EditMetaData +``` +^button-SourceEdit + +```button +name Save +type command +action Save current file +id Save +``` +^button-TNSave + +  + +# Yoga + +  + +> [!summary]+ +> + +  + +```toc +style: number +``` + +  + +--- + +  + +### Cover + +  + +```dataviewjs +dv.el("span", "![](" + dv.current().Source.Cover + ")") +``` + +  + +--- + +  + +### Notes + +  + +[Editor's Choice: Our 2022 Novels of the Year - Five Books Expert Recommendations](https://fivebooks.com/best-books/editors-choice-our-novels-of-the-year-2022-cal-flyn/) + +  +  \ No newline at end of file diff --git a/00.08 Bookmarks/Bookmarks - Admin & services.md b/00.08 Bookmarks/Bookmarks - Admin & services.md index f1093942..358efe41 100644 --- a/00.08 Bookmarks/Bookmarks - Admin & services.md +++ b/00.08 Bookmarks/Bookmarks - Admin & services.md @@ -112,7 +112,6 @@ favicon: https://www.billigbuch.ch/img/favicon.png   - [ ] :label: [[Bookmarks - Admin & services]]: Review bookmarks %%done_del%% ๐Ÿ” every 3 months ๐Ÿ“… 2024-01-30 -- [x] :label: [[Bookmarks - Admin & services]]: Review bookmarks %%done_del%% ๐Ÿ” every 3 months ๐Ÿ“… 2023-10-30 โœ… 2023-10-28     \ No newline at end of file diff --git a/00.08 Bookmarks/Bookmarks - Art.md b/00.08 Bookmarks/Bookmarks - Art.md new file mode 100644 index 00000000..9dc852e8 --- /dev/null +++ b/00.08 Bookmarks/Bookmarks - Art.md @@ -0,0 +1,82 @@ +--- + +Tag: ["๐Ÿ”–"] +Date: 2023-12-25 +DocType: "Source" +Hierarchy: "NonRoot" +TimeStamp: +location: +CollapseMetaTable: true + +--- + +Parent:: [[@Bookmarks]], [[@Lifestyle|Lifestyle]] + +--- + +  + +```button +name Edit Source parameters +type command +action MetaEdit: Run MetaEdit +id EditMetaData +``` +^button-BookmarksArtSourceEdit + +```button +name Save +type command +action Save current file +id Save +``` +^button-BookmarksArtSourceSave + +  + +# Bookmarks - Art + +  + +> [!summary]+ +> Bookmark Description + +  + +```toc +style: number +``` + +  + +--- + +  + +### Photography + +  + + +```cardlink +url: https://www.fnac.com/a18166847/Anthony-Penrose-Lee-Miller +title: "Lee Miller. Photographies Photographies - reliรฉ - Antony Penrose - Achat Livre | fnac" +description: "Photographies, Lee Miller. Photographies, Antony Penrose, Delpire. Des milliers de livres avec la livraison chez vous en 1 jour ou en magasin avec -5% de rรฉduction ." +host: www.fnac.com +favicon: https://www.fnac.com/Assets/dist/nav/61dae59520fe055d.ico +``` + +  + +--- + +  + +### Review cycle + +  + +- [ ] :label: [[Bookmarks - Art]]: Review bookmarks %%done_del%% ๐Ÿ” every 3 months ๐Ÿ“… 2024-02-26 + +  +  \ No newline at end of file diff --git a/00.08 Bookmarks/Bookmarks - Investments.md b/00.08 Bookmarks/Bookmarks - Investments.md index 8c5ffd30..d0db3731 100644 --- a/00.08 Bookmarks/Bookmarks - Investments.md +++ b/00.08 Bookmarks/Bookmarks - Investments.md @@ -75,7 +75,6 @@ host: www.lendosphere.com   - [ ] :label: [[Bookmarks - Investments]]: Review bookmarks %%done_del%% ๐Ÿ” every 3 months ๐Ÿ“… 2024-02-07 -- [x] :label: [[Bookmarks - Investments]]: Review bookmarks %%done_del%% ๐Ÿ” every 3 months ๐Ÿ“… 2023-11-07 โœ… 2023-11-04     \ No newline at end of file diff --git a/00.08 Bookmarks/Bookmarks - Mac applications.md b/00.08 Bookmarks/Bookmarks - Mac applications.md index 473cbaa7..6a4861c3 100644 --- a/00.08 Bookmarks/Bookmarks - Mac applications.md +++ b/00.08 Bookmarks/Bookmarks - Mac applications.md @@ -102,12 +102,7 @@ image: https://cdn.sanity.io/images/pvn35iyy/production/38d2b681648b73c67173e22c   -- [ ] :label: [[Bookmarks - Mac applications]]: review bookmarks ๐Ÿ” every 3 months ๐Ÿ“… 2024-03-09 -- [x] :label: [[Bookmarks - Mac applications]]: review bookmarks ๐Ÿ” every 3 months ๐Ÿ“… 2023-12-09 โœ… 2023-12-08 -- [x] :label: [[Bookmarks - Mac applications]]: review bookmarks ๐Ÿ” every 3 months ๐Ÿ“… 2023-09-09 โœ… 2023-09-08 -- [x] :label: [[Bookmarks - Mac applications]]: review bookmarks ๐Ÿ” every 3 months ๐Ÿ“… 2023-06-09 โœ… 2023-06-09 -- [x] :label: [[Bookmarks - Mac applications]]: review bookmarks ๐Ÿ” every 3 months ๐Ÿ“… 2023-03-09 โœ… 2023-03-09 -- [x] :label: [[Bookmarks - Mac applications]]: review bookmarks ๐Ÿ” every 3 months ๐Ÿ“… 2022-12-09 โœ… 2022-12-08 +- [ ] :label: [[Bookmarks - Mac applications]]: review bookmarks %%done_del%% ๐Ÿ” every 3 months ๐Ÿ“… 2024-03-09     \ No newline at end of file diff --git a/00.08 Bookmarks/Bookmarks - Media.md b/00.08 Bookmarks/Bookmarks - Media.md index e6c7668e..260a7789 100644 --- a/00.08 Bookmarks/Bookmarks - Media.md +++ b/00.08 Bookmarks/Bookmarks - Media.md @@ -78,12 +78,7 @@ image: https://fivebooks.com/app/uploads/2022/01/best-2022-books-category-share-   -- [ ] :label: [[Bookmarks - Media]]: review bookmarls ๐Ÿ” every 3 months ๐Ÿ“… 2024-02-07 -- [x] :label: [[Bookmarks - Media]]: review bookmarls ๐Ÿ” every 3 months ๐Ÿ“… 2023-11-07 โœ… 2023-11-04 -- [x] :label: [[Bookmarks - Media]]: review bookmarls ๐Ÿ” every 3 months ๐Ÿ“… 2023-08-07 โœ… 2023-08-07 -- [x] :label: [[Bookmarks - Media]]: review bookmarls ๐Ÿ” every 3 months ๐Ÿ“… 2023-05-07 โœ… 2023-05-06 -- [x] :label: [[Bookmarks - Media]]: review bookmarls ๐Ÿ” every 3 months ๐Ÿ“… 2023-02-07 โœ… 2023-02-06 -- [x] :label: [[Bookmarks - Media]]: review bookmarls ๐Ÿ” every 3 months ๐Ÿ“… 2022-11-07 โœ… 2022-11-06 +- [ ] :label: [[Bookmarks - Media]]: review bookmarks %%done_del%% ๐Ÿ” every 3 months ๐Ÿ“… 2024-02-07     \ No newline at end of file diff --git a/00.08 Bookmarks/Bookmarks - Obsidian.md b/00.08 Bookmarks/Bookmarks - Obsidian.md index 1934b8de..54d9ef48 100644 --- a/00.08 Bookmarks/Bookmarks - Obsidian.md +++ b/00.08 Bookmarks/Bookmarks - Obsidian.md @@ -317,12 +317,7 @@ image: https://opengraph.githubassets.com/394fddfeeefc1816e94e8caf9c996dd3b8b1e6   -- [ ] :label: [[Bookmarks - Obsidian]]: Review bookmarks ๐Ÿ” every 3 months ๐Ÿ“… 2024-02-15 -- [x] :label: [[Bookmarks - Obsidian]]: Review bookmarks ๐Ÿ” every 3 months ๐Ÿ“… 2023-11-15 โœ… 2023-11-15 -- [x] :label: [[Bookmarks - Obsidian]]: Review bookmarks ๐Ÿ” every 3 months ๐Ÿ“… 2023-08-15 โœ… 2023-08-14 -- [x] :label: [[Bookmarks - Obsidian]]: Review bookmarks ๐Ÿ” every 3 months ๐Ÿ“… 2023-05-15 โœ… 2023-05-15 -- [x] :label: [[Bookmarks - Obsidian]]: Review bookmarks ๐Ÿ” every 3 months ๐Ÿ“… 2023-02-15 โœ… 2023-02-14 -- [x] :label: [[Bookmarks - Obsidian]]: Review bookmarks ๐Ÿ” every 3 months ๐Ÿ“… 2022-11-15 โœ… 2022-11-14 +- [ ] :label: [[Bookmarks - Obsidian]]: Review bookmarks %%done_del%% ๐Ÿ” every 3 months ๐Ÿ“… 2024-02-15     \ No newline at end of file diff --git a/00.08 Bookmarks/Bookmarks - Selfhosted Apps.md b/00.08 Bookmarks/Bookmarks - Selfhosted Apps.md index 840a3b15..42006d87 100644 --- a/00.08 Bookmarks/Bookmarks - Selfhosted Apps.md +++ b/00.08 Bookmarks/Bookmarks - Selfhosted Apps.md @@ -176,12 +176,7 @@ image: https://opengraph.githubassets.com/331b0310853a6db93c4687437b1481c166928b   -- [ ] :label: [[Bookmarks - Selfhosted apps]]: Review bookmarks ๐Ÿ” every 3 months ๐Ÿ“… 2024-02-22 -- [x] :label: [[Bookmarks - Selfhosted apps]]: Review bookmarks ๐Ÿ” every 3 months ๐Ÿ“… 2023-11-22 โœ… 2023-11-22 -- [x] :label: [[Bookmarks - Selfhosted apps]]: Review bookmarks ๐Ÿ” every 3 months ๐Ÿ“… 2023-08-22 โœ… 2023-08-22 -- [x] :label: [[Bookmarks - Selfhosted apps]]: Review bookmarks ๐Ÿ” every 3 months ๐Ÿ“… 2023-05-22 โœ… 2023-05-22 -- [x] :label: [[Bookmarks - Selfhosted apps]]: Review bookmarks ๐Ÿ” every 3 months ๐Ÿ“… 2023-02-22 โœ… 2023-02-20 -- [x] :label: [[Bookmarks - Selfhosted apps]]: Review bookmarks ๐Ÿ” every 3 months ๐Ÿ“… 2022-11-22 โœ… 2022-11-19 +- [ ] :label: [[Bookmarks - Selfhosted apps]]: Review bookmarks %%done_del%% ๐Ÿ” every 3 months ๐Ÿ“… 2024-02-22     \ No newline at end of file diff --git a/00.08 Bookmarks/Bookmarks - Social Media.md b/00.08 Bookmarks/Bookmarks - Social Media.md index fb06e4b3..c48b34f4 100644 --- a/00.08 Bookmarks/Bookmarks - Social Media.md +++ b/00.08 Bookmarks/Bookmarks - Social Media.md @@ -78,7 +78,6 @@ image: https://scontent-atl3-2.cdninstagram.com/v/t51.2885-19/18444703_153716075   - [ ] :label: [[Bookmarks - Social Media]]: Review bookmarks %%done_del%% ๐Ÿ” every 3 months ๐Ÿ“… 2024-02-14 -- [x] :label: [[Bookmarks - Social Media]]: Review bookmarks %%done_del%% ๐Ÿ” every 3 months ๐Ÿ“… 2023-11-14 โœ… 2023-11-13     \ No newline at end of file diff --git a/00.08 Bookmarks/Bookmarks - Travels & Sport.md b/00.08 Bookmarks/Bookmarks - Travels & Sport.md index 76a9df6e..c81efc30 100644 --- a/00.08 Bookmarks/Bookmarks - Travels & Sport.md +++ b/00.08 Bookmarks/Bookmarks - Travels & Sport.md @@ -124,7 +124,7 @@ host: www.polotimes.co.uk   -- [b] :label: [[Bookmarks - Travels & Sport]]: review bookmarks ๐Ÿ” every 3 months ๐Ÿ“… 2023-12-23 +- [ ] :label: [[Bookmarks - Travels & Sport]]: review bookmarks %%done_del%% ๐Ÿ” every 3 months ๐Ÿ“… 2024-03-23     \ No newline at end of file diff --git a/00.08 Bookmarks/Bookmarks - Utilities.md b/00.08 Bookmarks/Bookmarks - Utilities.md index 6eaf4411..27e8d1f8 100644 --- a/00.08 Bookmarks/Bookmarks - Utilities.md +++ b/00.08 Bookmarks/Bookmarks - Utilities.md @@ -170,12 +170,7 @@ image: https://cdn.osxdaily.com/wp-content/uploads/2012/05/mac-security-cam-face   -- [ ] :label: [[Bookmarks - Utilities]]: review bookmarks ๐Ÿ” every 3 months ๐Ÿ“… 2024-03-02 -- [x] :label: [[Bookmarks - Utilities]]: review bookmarks ๐Ÿ” every 3 months ๐Ÿ“… 2023-12-02 โœ… 2023-12-01 -- [x] :label: [[Bookmarks - Utilities]]: review bookmarks ๐Ÿ” every 3 months ๐Ÿ“… 2023-09-02 โœ… 2023-09-02 -- [x] :label: [[Bookmarks - Utilities]]: review bookmarks ๐Ÿ” every 3 months ๐Ÿ“… 2023-06-02 โœ… 2023-06-03 -- [x] :label: [[Bookmarks - Utilities]]: review bookmarks ๐Ÿ” every 3 months ๐Ÿ“… 2023-03-02 โœ… 2023-03-01 -- [x] :label: [[Bookmarks - Utilities]]: review bookmarks ๐Ÿ” every 3 months ๐Ÿ“… 2022-12-02 โœ… 2022-12-01 +- [ ] :label: [[Bookmarks - Utilities]]: review bookmarks %%done_del%% ๐Ÿ” every 3 months ๐Ÿ“… 2024-03-02     diff --git a/00.08 Bookmarks/Bookmarks - Webpages.md b/00.08 Bookmarks/Bookmarks - Webpages.md index f3cdd01c..d75555b7 100644 --- a/00.08 Bookmarks/Bookmarks - Webpages.md +++ b/00.08 Bookmarks/Bookmarks - Webpages.md @@ -111,7 +111,7 @@ image: https://cdn.tosdr.org/themes/crisp/img/ogp.png?e5a20081619b3c9ce686523b0a   -- [b] :label: [[Bookmarks - Webpages]]: review bookmarks ๐Ÿ” every 3 months ๐Ÿ“… 2023-12-30 +- [ ] :label: [[Bookmarks - Webpages]]: review bookmarks %%done_del%% ๐Ÿ” every 3 months ๐Ÿ“… 2024-03-30     \ No newline at end of file diff --git a/00.08 Bookmarks/Bookmarks - Work.md b/00.08 Bookmarks/Bookmarks - Work.md index 1cbf51df..c2fad468 100644 --- a/00.08 Bookmarks/Bookmarks - Work.md +++ b/00.08 Bookmarks/Bookmarks - Work.md @@ -70,11 +70,6 @@ image: https://cdn.wallpaper.com/main/styles/fp_1540x944/s3/07_no_6_babmaes_stre   - [ ] :label: [[Bookmarks - Work]]: review bookmarks %%done_del%% ๐Ÿ” every 3 months ๐Ÿ“… 2024-03-16 -- [x] :label: [[Bookmarks - Work]]: review bookmarks %%done_del%% ๐Ÿ” every 3 months ๐Ÿ“… 2023-12-16 โœ… 2023-12-16 -- [x] :label: [[Bookmarks - Work]]: review bookmarks %%done_del%% ๐Ÿ” every 3 months ๐Ÿ“… 2023-09-16 โœ… 2023-09-11 -- [x] :label: [[Bookmarks - Work]]: review bookmarks %%done_del%% ๐Ÿ” every 3 months ๐Ÿ“… 2023-06-16 โœ… 2023-06-16 -- [x] :label: [[Bookmarks - Work]]: review bookmarks %%done_del%% ๐Ÿ” every 3 months ๐Ÿ“… 2023-03-16 โœ… 2023-03-16 -- [x] :label: [[Bookmarks - Work]]: review bookmarks %%done_del%% ๐Ÿ” every 3 months ๐Ÿ“… 2022-12-16 โœ… 2022-12-14     \ No newline at end of file diff --git a/01.02 Home/@Shopping list.md b/01.02 Home/@Shopping list.md index b314fb95..8d5969bc 100644 --- a/01.02 Home/@Shopping list.md +++ b/01.02 Home/@Shopping list.md @@ -92,7 +92,7 @@ style: number #### Dairy -- [x] ๐Ÿงˆ Beurre โœ… 2023-12-19 +- [x] ๐Ÿงˆ Beurre โœ… 2023-12-23 - [x] ๐Ÿง€ Fromage ร  servir โœ… 2023-06-12 - [x] ๐Ÿง€ Fromage rapรฉ โœ… 2023-10-26 - [x] ๐Ÿง€ Parmeggiano โœ… 2023-12-02 @@ -119,16 +119,19 @@ style: number - [x] ๐ŸŽ Fruit โœ… 2023-12-21 - [x] ๐ŸŒ Bananas โœ… 2023-09-23 -- [x] ๐Ÿ… Tomatoes โœ… 2023-12-21 +- [x] ๐ŸŒฐ Walnuts โœ… 2023-12-23 +- [x] ๐Ÿฅœ Peanuts โœ… 2023-12-23 +- [x] ๐Ÿฅœ Pine nuts โœ… 2023-10-08 +- [x] ๐Ÿ… Tomatoes โœ… 2023-12-23 - [x] ๐Ÿซ‘ Bell pepper โœ… 2023-12-08 - [x] ๐Ÿฅฆ Fennel โœ… 2022-10-29 - [x] ๐Ÿฅฆ Radish โœ… 2022-10-29 - [x] ๐Ÿฅฆ Broccoli โœ… 2023-12-08 -- [x] ๐Ÿซ› Green beans โœ… 2023-10-25 -- [x] ๐Ÿซ˜ Red beans โœ… 2023-12-08 -- [x] ๐Ÿง… Onions โœ… 2023-12-15 +- [x] ๐Ÿซ› Green beans โœ… 2023-12-23 +- [x] ๐Ÿซ˜ Red beans โœ… 2023-12-23 +- [ ] ๐Ÿง… Onions - [x] ๐Ÿง… Spring onion โœ… 2023-12-15 -- [x] ๐Ÿง„ Garlic โœ… 2023-11-22 +- [ ] ๐Ÿง„ Garlic - [x] ๐Ÿ‹ Lemon โœ… 2023-12-08 - [x] ๐Ÿ‹ Lime โœ… 2023-11-22 - [x] ๐Ÿซ Pomegranate seeds โœ… 2023-10-09 @@ -141,6 +144,7 @@ style: number - [x] ๐Ÿ– Fresh meat โœ… 2023-11-04 - [x] ๐Ÿ– Minced meat โœ… 2023-12-15 - [x] ๐Ÿฅ“ Bacon โœ… 2023-04-07 +- [x] ๐Ÿ‘ Lamb shank โœ… 2023-12-23 - [x] ๐Ÿ” Chicken thighs โœ… 2023-10-07 - [x] ๐Ÿ” Chicken breasts โœ… 2023-12-15 - [x] ๐ŸŒญ Spicy sausage โœ… 2023-12-15 @@ -150,7 +154,7 @@ style: number #### Bases -- [x] ๐Ÿ Pasta โœ… 2023-10-26 +- [x] ๐Ÿ Pasta โœ… 2023-12-23 - [x] ๐Ÿœ Noodles โœ… 2023-12-15 - [x] ๐ŸŒพ Bulgur โœ… 2022-10-29 - [x] ๐Ÿš Rice โœ… 2023-11-10 @@ -191,7 +195,7 @@ style: number - [x] ๐ŸŒฟ Herbes de Provence โœ… 2022-03-14 - [x] ๐ŸŒฟ Coriander โœ… 2023-12-21 - [x] ๐ŸŒฟ Parsley โœ… 2023-10-08 -- [x] ๐ŸŒฟ Fresh mint โœ… 2023-01-09 +- [x] ๐ŸŒฟ Fresh mint โœ… 2023-12-23   @@ -201,6 +205,7 @@ style: number - [x] ๐Ÿซ’ Olive oil โœ… 2023-12-14 - [x] ๐Ÿฅ‘ Avocado oil โœ… 2023-12-14 - [x] ๐Ÿฅ— Vinegar โœ… 2023-01-19 +- [x] ๐Ÿฅ— White Wine Vinegar โœ… 2023-12-23 - [x] ๐Ÿฅฃ Beef broth โœ… 2022-08-05 - [x] ๐Ÿฅฃ Chicken broth โœ… 2023-04-18 - [x] ๐Ÿฅฃ Vegetable broth โœ… 2022-08-05 @@ -208,7 +213,6 @@ style: number - [x] ๐Ÿง‚ Pepper (black) โœ… 2023-06-15 - [x] ๐Ÿง‚ Pepper (white) โœ… 2022-10-19 - [x] ๐Ÿฅ’ Gherkins โœ… 2023-01-10 -- [x] ๐Ÿฅœ Pine nuts โœ… 2023-10-08 - [x] ๐Ÿฅซ Tomato paste โœ… 2023-12-02   diff --git a/01.02 Home/Fashion.md b/01.02 Home/Fashion.md index 4b052c90..5cc758df 100644 --- a/01.02 Home/Fashion.md +++ b/01.02 Home/Fashion.md @@ -62,6 +62,30 @@ style: number Missรจgle +  + +##### Chausseur + + +```cardlink +url: https://www.septiemelargeur.fr/fr/magasins +title: "Magasins" +host: www.septiemelargeur.fr +favicon: https://www.septiemelargeur.fr/img/favicon-1.ico?1675869025 +``` + +  + +```cardlink +url: https://meermin.com/ +title: "Meermin Shoes โ€” Quality Footwear. Radical Value." +description: "Properly made quality Goodyear Welted shoes & boots at radical prices โ€” Properly made to last. Our wide range of options go from classic dress oxfords to unlined laofers & wholecut Chelsea Boots in rare materials including Shell Cordovan, French calf & Waxy Kudu." +host: meermin.com +favicon: https://meermin.com/cdn/shop/files/Meermin_Favicon_196x.jpg?v=1613728954 +image: https://cdn.shopify.com/s/files/1/0312/7659/7384/files/Meermin-Shoes_8ef59cda-cd97-466e-8f3a-4bbc9f93329d.jpg?v=1620948813 +``` + +   #### Online diff --git a/01.02 Home/Household.md b/01.02 Home/Household.md index e0f56355..c0677d91 100644 --- a/01.02 Home/Household.md +++ b/01.02 Home/Household.md @@ -74,14 +74,18 @@ style: number #### ๐Ÿšฎ Garbage collection - [ ] โ™ป [[Household]]: *Paper* recycling collection %%done_del%% ๐Ÿ” every 2 weeks on Tuesday ๐Ÿ“… 2024-01-02 -- [ ] โ™ป [[Household]]: *Cardboard* recycling collection %%done_del%% ๐Ÿ” every 2 weeks on Tuesday ๐Ÿ“… 2023-12-26 +- [ ] โ™ป [[Household]]: *Cardboard* recycling collection %%done_del%% ๐Ÿ” every 2 weeks on Tuesday ๐Ÿ“… 2024-01-09 +- [x] โ™ป [[Household]]: *Cardboard* recycling collection %%done_del%% ๐Ÿ” every 2 weeks on Tuesday ๐Ÿ“… 2023-12-26 โœ… 2023-12-26   #### ๐Ÿ  House chores -- [ ] ๐Ÿ›Ž๏ธ :house: [[Household]]: Pay rent %%done_del%% ๐Ÿ” every month on the last ๐Ÿ“… 2023-12-31 -- [ ] ๐Ÿ›Ž ๐Ÿงป REMINDER [[Household]]: check need for toilet paper %%done_del%% ๐Ÿ” every week ๐Ÿ“… 2023-12-25 +- [ ] ๐Ÿ›Ž๏ธ :house: [[Household]]: Pay rent %%done_del%% ๐Ÿ” every month on the last ๐Ÿ“… 2024-01-31 +- [x] ๐Ÿ›Ž๏ธ :house: [[Household]]: Pay rent %%done_del%% ๐Ÿ” every month on the last ๐Ÿ“… 2023-12-31 โœ… 2023-12-25 +- [ ] ๐Ÿ›Ž ๐Ÿงป REMINDER [[Household]]: check need for toilet paper %%done_del%% ๐Ÿ” every week ๐Ÿ“… 2024-01-08 +- [x] ๐Ÿ›Ž ๐Ÿงป REMINDER [[Household]]: check need for toilet paper %%done_del%% ๐Ÿ” every week ๐Ÿ“… 2024-01-01 โœ… 2023-12-25 +- [x] ๐Ÿ›Ž ๐Ÿงป REMINDER [[Household]]: check need for toilet paper %%done_del%% ๐Ÿ” every week ๐Ÿ“… 2023-12-25 โœ… 2023-12-23 - [ ] :bed: [[Household]] Change bedsheets %%done_del%% ๐Ÿ” every 2 weeks on Saturday ๐Ÿ“… 2024-01-06   diff --git a/01.02 Home/Seasonal Activities.md b/01.02 Home/Seasonal Activities.md new file mode 100644 index 00000000..7e318d23 --- /dev/null +++ b/01.02 Home/Seasonal Activities.md @@ -0,0 +1,122 @@ +--- + +Alias: [""] +Tag: ["๐Ÿ“…", "๐ŸŽ‰"] +Date: 2023-12-25 +DocType: Confidential +Hierarchy: NonRoot +TimeStamp: 2023-12-25 +location: +CollapseMetaTable: true + +--- + +Parent:: [[@Lifestyle|Lifestyle]] + +--- + +  + +```button +name Save +type command +action Save current file +id Save +``` +^button-SeasonalstrollNSave + +  + +# Seasonal stroll + +  + +> [!summary]+ +> Note Description + +  + +```toc +style: number +``` + +  + +--- + +  + +### Winter + +  + +- [ ] :snowflake:๐ŸŽญ [[Seasonal Activities]]: Check out floating theatre in Zรผrich ([Herzlich willkommen!](http://herzbaracke.ch/)) %%done_del%% ๐Ÿ”every year ๐Ÿ“…2024-10-15 +- [ ] :snowflake: :person_in_steamy_room: [[Seasonal Activities]]: Check out [Sauna Cubes at Strandbad Kรผsnacht โ€” Strandbadsauna](https://www.strandbadsauna.ch/home-eng) %%done_del%% ๐Ÿ”every year ๐Ÿ“…2024-11-15 +- [ ] :snowflake: :swimmer: [[Seasonal Activities]]: Samichlausschwimmen (:test_zurich_coat_of_arms:) %%done_del%% ๐Ÿ”every year ๐Ÿ“…2024-12-08 +- [ ] :snowflake: :honey_pot: [[Seasonal Activities]]: Fรชte de lโ€™Escalade (:test_wappen_genf_matt:) %%done_del%% ๐Ÿ”every year ๐Ÿ“…2024-12-12 +- [ ] :snowflake: :partying_face: [[Seasonal Activities]]: ZรผriCarneval weekend (:test_zurich_coat_of_arms:) %%done_del%% ๐Ÿ”every year ๐Ÿ“…2024-02-15 + +  + +--- + +  + +### Christmas + +  + +- [ ] :christmas_tree: :cocktail: [[Seasonal Activities]]: Check out pop-up bars in Zรผrich ([Pop-ups at Christmas | zuerich.com](https://www.zuerich.com/en/visit/christmas-in-zurich/pop-ups)) %%done_del%% ๐Ÿ”every year ๐Ÿ“…2024-12-01 +- [ ] :christmas_tree: :shopping_bags: [[Seasonal Activities]]: Organise a trip to a famous Christmas market (Nรผrnberg, Salzburg, Praha, Budapest, Wien, Basel, Merano, Esslingen, Strasbourg) %%done_del%% ๐Ÿ”every year ๐Ÿ“…2024-12-01 + +  + +--- + +  + +### Spring + +  + +- [ ] :hibiscus: :partying_face: [[Seasonal Activities]]: Sechselรคuten (:test_zurich_coat_of_arms:) %%done_del%% ๐Ÿ”every year ๐Ÿ“…2024-04-15 +- [ ] :hibiscus: :runner: [[Seasonal Activities]]: Zรผrich Marathon %%done_del%% ๐Ÿ”every year ๐Ÿ“…2024-04-21 +- [ ] :hibiscus: :fork_and_knife: [[Seasonal Activities]]: Book a restaurant with terrace for the season: [[Albishaus]], [[Restaurant Boldern]], [[Zur Buech]], [[Jardin Zรผrichberg]], [[Bistro Rigiblick]], [[Portofino am See]], [[La Rรฉserve|La Muรฑa]] %%done_del%% ๐Ÿ”every year ๐Ÿ“…2024-05-01 +- [ ] :hibiscus: :canned_food: [[Seasonal Activities]]: Check out [FOOD ZURICH - MEHR ALS EIN FESTIVAL](https://www.foodzurich.com/de/) %%done_del%% ๐Ÿ”every year ๐Ÿ“…2024-06-01 +- [ ] :hibiscus: :partying_face: [[Seasonal Activities]]: Zรผrich Pride Festival %%done_del%% ๐Ÿ”every year ๐Ÿ“…2024-06-15 + +  + +--- + +  + +### Summer + +  + +- [ ] :sunny: :racehorse: [[Seasonal Activities]]: Check out the [Palio di Siena](https://www.comune.siena.it/node/135) %%done_del%% ๐Ÿ”every year ๐Ÿ“…2024-05-15 +- [ ] :sunny: :movie_camera: [[Seasonal Activities]]: Check out programmation of the [Zurich's finest open-air cinema | Allianz Cinema -](https://zuerich.allianzcinema.ch/en) %%done_del%% ๐Ÿ”every year ๐Ÿ“…2024-07-01 +- [ ] :sunny: :partying_face: [[Seasonal Activities]]: Street Parade (:test_zurich_coat_of_arms:) %%done_del%% ๐Ÿ”every year ๐Ÿ“…2024-08-10 +- [ ] :sunny: :partying_face: [[Seasonal Activities]]: Zรผrich Openair %%done_del%% ๐Ÿ”every year ๐Ÿ“…2024-08-23 +- [ ] :sunny: :partying_face: [[Seasonal Activities]]: Check out Seenachtfest Rapperswil-Jona %%done_del%% ๐Ÿ” every 3 years ๐Ÿ“… 2024-08-01 +- [ ] :sunny: :runner: [[Seasonal Activities]]: Check out tickets to Weltklasse Zรผrich %%done_del%% ๐Ÿ”every year ๐Ÿ“…2024-08-01 + +  + +--- + +  + +### Fall + +  + + +- [ ] :maple_leaf: :movie_camera: [[Seasonal Activities]]: Check out Zรผrich Film Festival %%done_del%% ๐Ÿ”every year ๐Ÿ“…2024-09-15 +- [ ] :maple_leaf: :canned_food: [[Seasonal Activities]]: Check out the [International White Truffle Fair - Find out all the events](https://www.fieradeltartufo.org/en/) %%done_del%% ๐Ÿ”every year ๐Ÿ“…2024-09-18 +- [ ] :maple_leaf: :wine_glass: [[Seasonal Activities]]: Check out Zรผrichโ€™s Wine festival ([ZWF - Zurich Wine Festival](https://zurichwinefestival.ch/)) %%done_del%% ๐Ÿ”every year ๐Ÿ“…2024-09-25 +- [ ] :maple_leaf: :wine_glass: [[Seasonal Activities]]: Check out [Discover the Excitement of EXPOVINA Wine Events | Join Us at Weinschiffe, Primavera, and Wine Trophy | EXPOVINA](https://expovina.ch/en-ch/) %%done_del%% ๐Ÿ”every year ๐Ÿ“…2024-10-15 + +  +  \ No newline at end of file diff --git a/01.05 Done/@@MRCK.md b/01.05 Done/@@MRCK.md index 1a64d73c..900140a4 100644 --- a/01.05 Done/@@MRCK.md +++ b/01.05 Done/@@MRCK.md @@ -143,7 +143,7 @@ Paris, Zรผrich, London #### Looting - moving out - [ ] plates -- [ ] Chopsticks +- [x] Chopsticks โœ… 2023-12-27   @@ -290,24 +290,5 @@ where !contains(file.name, "@@Travel") sort DocType asc ``` -  - ---- - -  - -### ๐Ÿ” Recurring tasks - -  - -- [ ] :birthday: **[[@@MRCK|Meggi-mo]]** %%done_del%% ๐Ÿ” every year ๐Ÿ“… 2024-02-28 -- [x] :birthday: **[[@@MRCK|Meggi-mo]]** %%done_del%% ๐Ÿ” every year ๐Ÿ“… 2023-02-28 โœ… 2023-02-28 -- [ ] :birthday: **[[@@MRCK|Meggi-mo]]'s Papa** (1962) %%done_del%% ๐Ÿ” every year ๐Ÿ“… 2024-02-02 -- [w] :birthday: **[[@@MRCK|Meggi-mo]]โ€˜s Mama** (1952) %%done_del%% ๐Ÿ” every year ๐Ÿ“… 2024-01-10 -- [ ] โ˜˜๏ธ [[@@MRCK|Meggi-mo]] **Saint Patrick's Day** %%done_del%% ๐Ÿ” every year ๐Ÿ“… 2024-03-17 -- [x] โ˜˜๏ธ [[@@MRCK|Meggi-mo]] **Saint Patrick's Day** %%done_del%% ๐Ÿ” every year ๐Ÿ“… 2023-03-17 โœ… 2023-03-17 -- [ ] ๐Ÿ‘‘ [[@@MRCK|Meggi-mo]] **Valentineโ€™s Day** %%done_del%% ๐Ÿ” every year ๐Ÿ“… 2024-02-14 -- [x] ๐Ÿ‘‘ [[@@MRCK|Meggi-mo]] **Valentineโ€™s Day** %%done_del%% ๐Ÿ” every year ๐Ÿ“… 2023-02-14 โœ… 2023-02-14 -     \ No newline at end of file diff --git a/01.07 Animals/2023-07-13 Health check.md b/01.07 Animals/2023-07-13 Health check.md index a35abbca..e91efe6c 100644 --- a/01.07 Animals/2023-07-13 Health check.md +++ b/01.07 Animals/2023-07-13 Health check.md @@ -51,7 +51,8 @@ style: number [[2023-07-13|This day]], ripped hoof (front right) is healing well โ€“> On track to heal fully by the end of the Summer season -- [ ] :racehorse: [[@Sally|Sally]], [[2023-07-13 Health check|Note]]: Check front hoofs healing ๐Ÿ” every 2 weeks ๐Ÿ“… 2024-01-02 +- [ ] :racehorse: [[@Sally|Sally]], [[2023-07-13 Health check|Note]]: Check front hoofs healing ๐Ÿ” every 2 weeks ๐Ÿ“… 2024-01-16 +- [x] :racehorse: [[@Sally|Sally]], [[2023-07-13 Health check|Note]]: Check front hoofs healing ๐Ÿ” every 2 weeks ๐Ÿ“… 2024-01-02 โœ… 2023-12-26 - [x] :racehorse: [[@Sally|Sally]], [[2023-07-13 Health check|Note]]: Check front hoofs healing ๐Ÿ” every 2 weeks ๐Ÿ“… 2023-12-19 โœ… 2023-12-18 - [x] :racehorse: [[@Sally|Sally]], [[2023-07-13 Health check|Note]]: Check front hoofs healing ๐Ÿ” every 2 weeks ๐Ÿ“… 2023-12-05 โœ… 2023-12-01 - [x] :racehorse: [[@Sally|Sally]], [[2023-07-13 Health check|Note]]: Check front hoofs healing ๐Ÿ” every 2 weeks ๐Ÿ“… 2023-11-21 โœ… 2023-11-13 diff --git a/01.07 Animals/2023-12-23 Visit.md b/01.07 Animals/2023-12-23 Visit.md new file mode 100644 index 00000000..ac97f677 --- /dev/null +++ b/01.07 Animals/2023-12-23 Visit.md @@ -0,0 +1,55 @@ +--- + +Alias: [""] +Tag: ["timeline", "๐ŸŽ", "๐Ÿฟ๏ธ"] +Date: 2023-12-26 +DocType: Confidential +Hierarchy: NonRoot +TimeStamp: +location: +CollapseMetaTable: true + +--- + +Parent:: [[@Sally|Sally]] + +--- + +  + +```button +name Save +type command +action Save current file +id Save +``` +^button-2023-12-23VisitNSave + +  + +# 2023-12-23 Visit + +  + +> [!summary]+ +> Note Description + +  + + Visit to Sally in her winter abode + + +```toc +style: number +``` +  + +--- + +  + +[[2023-12-23|This day]], Visit of [[@Sally|Sally]] in Germany with [[Felix Hoffmann]]: +- Wolfbaumweg, 72172 Sulz + +  +  \ No newline at end of file diff --git a/01.07 Animals/@Sally.md b/01.07 Animals/@Sally.md index 463e96f2..faecaaeb 100644 --- a/01.07 Animals/@Sally.md +++ b/01.07 Animals/@Sally.md @@ -135,15 +135,9 @@ divWidth=100   - [ ] :racehorse: [[@Sally|Sally]]: Vet check %%done_del%% ๐Ÿ” every 6 months ๐Ÿ“… 2024-03-30 -- [x] :racehorse: [[@Sally|Sally]]: Vet check %%done_del%% ๐Ÿ” every 6 months ๐Ÿ“… 2023-09-30 โœ… 2023-09-28 - [ ] :racehorse: [[@Sally|Sally]]: EHV-1 vaccination dose %%done_del%% ๐Ÿ” every year ๐Ÿ“… 2024-01-31 - [ ] :racehorse: [[@Sally|Sally]]: Influenza vaccination dose %%done_del%% ๐Ÿ” every year ๐Ÿ“… 2024-01-31 - [ ] :racehorse: [[@Sally|Sally]]: Pay for horseshoes (150 CHF) %%done_del%% ๐Ÿ” every month ๐Ÿ“… 2024-01-10 -- [x] :racehorse: [[@Sally|Sally]]: Pay for horseshoes (150 CHF) %%done_del%% ๐Ÿ” every month ๐Ÿ“… 2023-12-10 โœ… 2023-12-08 -- [x] :racehorse: [[@Sally|Sally]]: Pay for horseshoes (150 CHF) %%done_del%% ๐Ÿ” every month ๐Ÿ“… 2023-11-10 โœ… 2023-11-08 -- [x] :racehorse: [[@Sally|Sally]]: Pay for horseshoes (150 CHF) %%done_del%% ๐Ÿ” every month ๐Ÿ“… 2023-10-10 โœ… 2023-10-09 -- [x] :racehorse: [[@Sally|Sally]]: Pay for horseshoes (150 CHF) %%done_del%% ๐Ÿ” every month ๐Ÿ“… 2023-09-10 โœ… 2023-09-10 -- [x] :racehorse: [[@Sally|Sally]]: Pay for horseshoes (150 CHF) %%done_del%% ๐Ÿ” every month ๐Ÿ“… 2023-08-10 โœ… 2023-08-12 ```timeline ๐Ÿถ;Sally ``` \ No newline at end of file diff --git a/01.07 Animals/Felix Hoffmann.md b/01.07 Animals/Felix Hoffmann.md index 878385f6..8f4377d2 100644 --- a/01.07 Animals/Felix Hoffmann.md +++ b/01.07 Animals/Felix Hoffmann.md @@ -92,7 +92,10 @@ style: number   -Loret ipsum +Secondary address for horse pen: +Wolfbaumweg +72172 Sulz am Neckar +Germany   diff --git a/02.01 London/@@London.md b/02.01 London/@@London.md index aadef1e6..bc688f47 100644 --- a/02.01 London/@@London.md +++ b/02.01 London/@@London.md @@ -26,8 +26,6 @@ Parent:: [[@@Life Organisation|Life Orga]] --- - ^Top -   ```button @@ -50,7 +48,8 @@ id Save   -# Folder map +# :TpCoatOfArmsOfTheCityOfLondon: Folder map +   ```ad-abstract @@ -72,10 +71,10 @@ style: number   ### Master Navigation -[[#^Top|TOP]] +   -  [[@Restaurants London|๐Ÿฝ]]    [[@Brunchs London|:fried_egg:]]    [[@Cafรฉ London|:coffee:]]     [[@Sport London|:soccer:]]     [[@Bars London|:cocktail:]]     [[Royal Automobile Club|:clubs:]] +  [[@Restaurants London|๐Ÿฝ]]    [[@Brunchs London|:fried_egg:]]    [[@Cafรฉ London|:coffee:]]     [[@Sport London|:soccer:]]     [[@Bars London|:cocktail:]]     [[Royal Automobile Club|โ™ฃ๏ธ]]   @@ -84,7 +83,7 @@ style: number   ### Search -[[#^Top|TOP]] +   ```button diff --git a/02.01 London/Bao Bun.md b/02.01 London/Bao Bun.md index 6333f200..17a458e3 100644 --- a/02.01 London/Bao Bun.md +++ b/02.01 London/Bao Bun.md @@ -1,6 +1,6 @@ --- -Tag: ["bao", "๐Ÿด"] +Tag: ["๐ŸฅŸ", "๐Ÿด", "๐Ÿ‡น๐Ÿ‡ผ"] Date: 2021-10-05 DocType: "Place" Hierarchy: "NonRoot" diff --git a/02.01 London/Callum Anderson.md b/02.01 London/Callum Anderson.md index 9b9024a5..6ed77931 100644 --- a/02.01 London/Callum Anderson.md +++ b/02.01 London/Callum Anderson.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Polo", "๐ŸŽก", "๐Ÿง"] +Tag: [":TpRL:", "๐ŸŽก", "๐Ÿง"] Date: 2022-09-16 DocType: "Person" Hierarchy: "NonRoot" diff --git a/02.01 London/Epsom Polo Club.md b/02.01 London/Epsom Polo Club.md index d42ff059..6ecff106 100644 --- a/02.01 London/Epsom Polo Club.md +++ b/02.01 London/Epsom Polo Club.md @@ -1,7 +1,7 @@ --- Alias: ["EPC"] -Tag: ["๐ŸŽก", "๐Ÿฅ‰", "Polo", "๐Ÿ‡"] +Tag: ["๐ŸŽก", "๐Ÿฅ‰", ":TpRL.D:", "๐Ÿ‡"] Date: 2021-10-04 DocType: "Place" Hierarchy: "NonRoot" diff --git a/02.01 London/Ryan Anderson.md b/02.01 London/Ryan Anderson.md index e070109a..db35f256 100644 --- a/02.01 London/Ryan Anderson.md +++ b/02.01 London/Ryan Anderson.md @@ -1,7 +1,7 @@ --- Alias: [] -Tag: ["๐Ÿง", "Polo", "๐ŸŽก"] +Tag: ["๐Ÿง", ":TpRL.D:", "๐ŸŽก"] Date: 2022-09-16 DocType: "Person" Hierarchy: "NonRoot" diff --git a/02.02 Paris/@@Paris.md b/02.02 Paris/@@Paris.md index c242f52a..bfdc0500 100644 --- a/02.02 Paris/@@Paris.md +++ b/02.02 Paris/@@Paris.md @@ -48,7 +48,8 @@ id Save   -# Folder map +# :TpGrandesArmesDeParis: Folder map +   ```ad-abstract diff --git a/02.02 Paris/Domaine de Courances.md b/02.02 Paris/Domaine de Courances.md index 4346e7c2..8aa16db6 100644 --- a/02.02 Paris/Domaine de Courances.md +++ b/02.02 Paris/Domaine de Courances.md @@ -1,6 +1,6 @@ --- -Tag: ["๐Ÿ—ผ", "๐Ÿ•ด๏ธ", "๐Ÿฅ‰", "Polo", "๐Ÿ‡"] +Tag: ["๐Ÿ—ผ", "๐Ÿ•ด๏ธ", "๐Ÿฅ‰", ":TpRL.D:", "๐Ÿ‡"] Date: 2021-10-04 DocType: "Place" Hierarchy: "NonRoot" diff --git a/02.02 Paris/Paris SG.md b/02.02 Paris/Paris SG.md index a66c4161..723c37a1 100644 --- a/02.02 Paris/Paris SG.md +++ b/02.02 Paris/Paris SG.md @@ -50,7 +50,7 @@ id Save   -# Paris SG +# :TpParisSaintGermainLogo: Paris SG   diff --git a/02.03 Zรผrich/@@Zรผrich.md b/02.03 Zรผrich/@@Zรผrich.md index 5b80c193..ff622ea1 100644 --- a/02.03 Zรผrich/@@Zรผrich.md +++ b/02.03 Zรผrich/@@Zรผrich.md @@ -50,7 +50,7 @@ id Save   -# Zรผrich +# :TpZurichCoatOfArms: Zรผrich   diff --git a/02.03 Zรผrich/Albishaus.md b/02.03 Zรผrich/Albishaus.md new file mode 100644 index 00000000..de9b2896 --- /dev/null +++ b/02.03 Zรผrich/Albishaus.md @@ -0,0 +1,114 @@ +--- + +Alias: [""] +Tag: ["๐Ÿด", "๐Ÿ‡จ๐Ÿ‡ญ", "๐ŸŒ"] +Date: 2023-12-26 +DocType: "Place" +Hierarchy: "NonRoot" +TimeStamp: +location: [47.279486399999996,8.512489446777119] +Place: + Type: Restaurant + SubType: Terrace + Style: Swiss + Location: Albis + Country: CH + Status: Recommended +CollapseMetaTable: true +Phone: "+41 43 377 87 53" +Email: "" +Website: "[Willkommen](https://albishaus.ch/)" + +--- + +Parent:: [[@@Zรผrich|Zรผrich]], [[@Restaurants Zรผrich|Restaurants in Zรผrich]] + +  + +```dataviewjs +let tempPhone = dv.current().Phone ? dv.current().Phone.replaceAll(" ", "") : '+000' +let tempMail = dv.current().Email ? dv.current().Email : "" +let tempCoorSet = dv.current().location ? dv.current().location : [0,0] +dv.el('center', '[๐Ÿ“ฒ](tel:' + tempPhone + ')     [๐Ÿ“ง](mailto:' + tempMail + ')     [๐Ÿ—บ๏ธ](' + "https://waze.com/ul?ll=" + tempCoorSet[0] + "%2C" + tempCoorSet[1] + "&navigate=yes" + ')') +``` + +--- + +  + +```button +name Save +type command +action Save current file +id Save +``` +^button-AlbishausSave + +  + +# Albishaus + +  + +> [!summary]+ +> Note Description + +  + +```toc +style: number +``` + +  + +--- + +  + +### ๐Ÿ“‡ Contact + +  + +> [!address] ๐Ÿ—บ +> Naturfreundeweg 8 +> 8135 Langnau am Albis +> Switzerland + +  + +โ˜Ž๏ธ `= this.Phone` + +๐Ÿ“ง `= this.Email` + +๐ŸŒ `= this.Website` + +  + +--- + +  + +### ๐Ÿ—’ Notes + +  + +Loret ipsum + +  + +--- + +  + +### ๐Ÿ”— Other activity + +  + +```dataview +Table DocType as "Doc type" from [[Albishaus]] +where !contains(file.name, "@@Travel") +sort DocType asc +``` + +  +  \ No newline at end of file diff --git a/02.03 Zรผrich/Almodobar.md b/02.03 Zรผrich/Almodobar.md index 9aca492e..60bc24bb 100644 --- a/02.03 Zรผrich/Almodobar.md +++ b/02.03 Zรผrich/Almodobar.md @@ -13,7 +13,7 @@ Place: Style: Spanish Location: Enge Country: CH - Status: Recommended + Status: Tested CollapseMetaTable: true Phone: "+41 43 844 44 88" Email: "info@almodobar.com" diff --git a/02.03 Zรผrich/Bistro Rigiblick.md b/02.03 Zรผrich/Bistro Rigiblick.md new file mode 100644 index 00000000..7686d613 --- /dev/null +++ b/02.03 Zรผrich/Bistro Rigiblick.md @@ -0,0 +1,114 @@ +--- + +Alias: [""] +Tag: ["๐Ÿด", "๐Ÿ‡จ๐Ÿ‡ญ", "๐ŸŒ"] +Date: 2023-12-26 +DocType: "Place" +Hierarchy: "NonRoot" +TimeStamp: +location: [47.3883804,8.5533903] +Place: + Type: Restaurant + SubType: Terrace + Style: Swiss + Location: Fluntern + Country: CH + Status: Recommended +CollapseMetaTable: true +Phone: "+41 43 255 15 70" +Email: "info@restaurantrigiblick.ch" +Website: "[Bistro Rigiblick Zurich:ยซSorell Hotel Rigiblick - Studios & Spa Suitesยป | Sorell Hotels](https://sorellhotels.com/fr/rigiblick/bars-et-restaurants/bistro-rigiblick)" + +--- + +Parent:: [[@@Zรผrich|Zรผrich]], [[@Restaurants Zรผrich|Restaurants in Zรผrich]] + +  + +```dataviewjs +let tempPhone = dv.current().Phone ? dv.current().Phone.replaceAll(" ", "") : '+000' +let tempMail = dv.current().Email ? dv.current().Email : "" +let tempCoorSet = dv.current().location ? dv.current().location : [0,0] +dv.el('center', '[๐Ÿ“ฒ](tel:' + tempPhone + ')     [๐Ÿ“ง](mailto:' + tempMail + ')     [๐Ÿ—บ๏ธ](' + "https://waze.com/ul?ll=" + tempCoorSet[0] + "%2C" + tempCoorSet[1] + "&navigate=yes" + ')') +``` + +--- + +  + +```button +name Save +type command +action Save current file +id Save +``` +^button-BistroRigiblickSave + +  + +# Bistro Rigiblick + +  + +> [!summary]+ +> Note Description + +  + +```toc +style: number +``` + +  + +--- + +  + +### ๐Ÿ“‡ Contact + +  + +> [!address] ๐Ÿ—บ +> Germaniastrasse 99 +> 8044ย Zรผrich +> Switzerland + +  + +โ˜Ž๏ธ `= this.Phone` + +๐Ÿ“ง `= this.Email` + +๐ŸŒ `= this.Website` + +  + +--- + +  + +### ๐Ÿ—’ Notes + +  + +Loret ipsum + +  + +--- + +  + +### ๐Ÿ”— Other activity + +  + +```dataview +Table DocType as "Doc type" from [[Bistro Rigiblick]] +where !contains(file.name, "@@Travel") +sort DocType asc +``` + +  +  \ No newline at end of file diff --git a/02.03 Zรผrich/Jardin Zรผrichberg.md b/02.03 Zรผrich/Jardin Zรผrichberg.md new file mode 100644 index 00000000..38fe4a01 --- /dev/null +++ b/02.03 Zรผrich/Jardin Zรผrichberg.md @@ -0,0 +1,114 @@ +--- + +Alias: [""] +Tag: ["๐Ÿด", "๐Ÿ‡จ๐Ÿ‡ญ", "๐ŸŒ"] +Date: 2023-12-26 +DocType: "Place" +Hierarchy: "NonRoot" +TimeStamp: +location: [47.3823685,8.5669037] +Place: + Type: Restaurant + SubType: Terrace + Style: Swiss + Location: Fluntern + Country: CH + Status: Recommended +CollapseMetaTable: true +Phone: "+41 44 268 35 35" +Email: "zuerichberg@sorellhotels.com" +Website: "[Jardin Zรผrichberg: Terrace | Sorell Hotels](https://sorellhotels.com/en/zuerichberg/food-drink/jardin-pop-up)" + +--- + +Parent:: [[@@Zรผrich|Zรผrich]], [[@Restaurants Zรผrich|Restaurants in Zรผrich]] + +  + +```dataviewjs +let tempPhone = dv.current().Phone ? dv.current().Phone.replaceAll(" ", "") : '+000' +let tempMail = dv.current().Email ? dv.current().Email : "" +let tempCoorSet = dv.current().location ? dv.current().location : [0,0] +dv.el('center', '[๐Ÿ“ฒ](tel:' + tempPhone + ')     [๐Ÿ“ง](mailto:' + tempMail + ')     [๐Ÿ—บ๏ธ](' + "https://waze.com/ul?ll=" + tempCoorSet[0] + "%2C" + tempCoorSet[1] + "&navigate=yes" + ')') +``` + +--- + +  + +```button +name Save +type command +action Save current file +id Save +``` +^button-JardinZuerichbergSave + +  + +# Jardin Zรผrichberg + +  + +> [!summary]+ +> Note Description + +  + +```toc +style: number +``` + +  + +--- + +  + +### ๐Ÿ“‡ Contact + +  + +> [!address] ๐Ÿ—บ +> Orellistrasse 21 +> 8044ย Zรผrich +> Switzerland + +  + +โ˜Ž๏ธ `= this.Phone` + +๐Ÿ“ง `= this.Email` + +๐ŸŒ `= this.Website` + +  + +--- + +  + +### ๐Ÿ—’ Notes + +  + +Loret ipsum + +  + +--- + +  + +### ๐Ÿ”— Other activity + +  + +```dataview +Table DocType as "Doc type" from [[Jardin Zรผrichberg]] +where !contains(file.name, "@@Travel") +sort DocType asc +``` + +  +  \ No newline at end of file diff --git a/02.03 Zรผrich/Juan Bautista Bossio.md b/02.03 Zรผrich/Juan Bautista Bossio.md index e1138e4d..8f17c89a 100644 --- a/02.03 Zรผrich/Juan Bautista Bossio.md +++ b/02.03 Zรผrich/Juan Bautista Bossio.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Polo", "๐Ÿง", "๐Ÿ‡จ๐Ÿ‡ญ"] +Tag: [":TpRL.D:", "๐Ÿง", "๐Ÿ‡จ๐Ÿ‡ญ"] Date: 2023-04-19 DocType: "Person" Hierarchy: "NonRoot" diff --git a/02.03 Zรผrich/Polo Park Zรผrich.md b/02.03 Zรผrich/Polo Park Zรผrich.md index 2424f0eb..f95552c6 100644 --- a/02.03 Zรผrich/Polo Park Zรผrich.md +++ b/02.03 Zรผrich/Polo Park Zรผrich.md @@ -1,7 +1,7 @@ --- Alias: ["PPZ"] -Tag: ["๐Ÿ‡จ๐Ÿ‡ญ", "๐Ÿฅ‰", "Polo", "๐Ÿ‡"] +Tag: ["๐Ÿ‡จ๐Ÿ‡ญ", "๐Ÿฅ‰", ":TpRL.D:", "๐Ÿ‡"] Date: 2022-08-20 DocType: "Place" Hierarchy: "NonRoot" diff --git a/02.03 Zรผrich/Restaurant Boldern.md b/02.03 Zรผrich/Restaurant Boldern.md new file mode 100644 index 00000000..11a0adf3 --- /dev/null +++ b/02.03 Zรผrich/Restaurant Boldern.md @@ -0,0 +1,114 @@ +--- + +Alias: [""] +Tag: ["๐Ÿด", "๐Ÿ‡จ๐Ÿ‡ญ", "๐ŸŒ"] +Date: 2023-12-26 +DocType: "Place" +Hierarchy: "NonRoot" +TimeStamp: +location: [47.262218,8.7019572] +Place: + Type: Restaurant + SubType: Terrace + Style: Swiss + Location: Mรคnnedorf + Country: CH + Status: Recommended +CollapseMetaTable: true +Phone: "+41 44 921 71 11" +Email: "info@boldern.ch" +Website: "[Terrasse - Boldern - Hotel Restaurant Seminar, Zรผrich](https://www.boldern.ch/de/gastronomie/terrasse/)" + +--- + +Parent:: [[@@Zรผrich|Zรผrich]], [[@Restaurants Zรผrich|Restaurants in Zรผrich]] + +  + +```dataviewjs +let tempPhone = dv.current().Phone ? dv.current().Phone.replaceAll(" ", "") : '+000' +let tempMail = dv.current().Email ? dv.current().Email : "" +let tempCoorSet = dv.current().location ? dv.current().location : [0,0] +dv.el('center', '[๐Ÿ“ฒ](tel:' + tempPhone + ')     [๐Ÿ“ง](mailto:' + tempMail + ')     [๐Ÿ—บ๏ธ](' + "https://waze.com/ul?ll=" + tempCoorSet[0] + "%2C" + tempCoorSet[1] + "&navigate=yes" + ')') +``` + +--- + +  + +```button +name Save +type command +action Save current file +id Save +``` +^button-RestaurantBoldernSave + +  + +# Restaurant Boldern + +  + +> [!summary]+ +> Note Description + +  + +```toc +style: number +``` + +  + +--- + +  + +### ๐Ÿ“‡ Contact + +  + +> [!address] ๐Ÿ—บ +> Boldernstrasse 83 +> 8708 Mรคnnedorf +> Switzerland + +  + +โ˜Ž๏ธ `= this.Phone` + +๐Ÿ“ง `= this.Email` + +๐ŸŒ `= this.Website` + +  + +--- + +  + +### ๐Ÿ—’ Notes + +  + +Loret ipsum + +  + +--- + +  + +### ๐Ÿ”— Other activity + +  + +```dataview +Table DocType as "Doc type" from [[Restaurant Boldern]] +where !contains(file.name, "@@Travel") +sort DocType asc +``` + +  +  \ No newline at end of file diff --git a/02.03 Zรผrich/Sonne.md b/02.03 Zรผrich/Sonne.md index c980a21f..3bf3072c 100644 --- a/02.03 Zรผrich/Sonne.md +++ b/02.03 Zรผrich/Sonne.md @@ -92,7 +92,7 @@ style: number   -Loret ipsum +- [ ] ๐ŸŽ„ [[Sonne]]: Check Advent & Christmas happenings %%done_del%% ๐Ÿ” every year ๐Ÿ“… 2024-12-01   diff --git a/02.03 Zรผrich/Zur Buech.md b/02.03 Zรผrich/Zur Buech.md new file mode 100644 index 00000000..0dceb684 --- /dev/null +++ b/02.03 Zรผrich/Zur Buech.md @@ -0,0 +1,114 @@ +--- + +Alias: [""] +Tag: ["๐Ÿด", "๐Ÿ‡จ๐Ÿ‡ญ", "๐ŸŒ"] +Date: 2023-12-26 +DocType: "Place" +Hierarchy: "NonRoot" +TimeStamp: +location: [47.28855875,8.629695093985324] +Place: + Type: Restaurant + SubType: Terrace + Style: Swiss + Location: Herrliberg + Country: CH + Status: Recommended +CollapseMetaTable: true +Phone: "+41 44 915 10 10" +Email: "info@restaurantbuech.ch" +Website: "[Home - Restaurant Buech](https://www.restaurantbuech.ch/de/home)" + +--- + +Parent:: [[@@Zรผrich|Zรผrich]], [[@Restaurants Zรผrich|Restaurants in Zรผrich]] + +  + +```dataviewjs +let tempPhone = dv.current().Phone ? dv.current().Phone.replaceAll(" ", "") : '+000' +let tempMail = dv.current().Email ? dv.current().Email : "" +let tempCoorSet = dv.current().location ? dv.current().location : [0,0] +dv.el('center', '[๐Ÿ“ฒ](tel:' + tempPhone + ')     [๐Ÿ“ง](mailto:' + tempMail + ')     [๐Ÿ—บ๏ธ](' + "https://waze.com/ul?ll=" + tempCoorSet[0] + "%2C" + tempCoorSet[1] + "&navigate=yes" + ')') +``` + +--- + +  + +```button +name Save +type command +action Save current file +id Save +``` +^button-BuechSave + +  + +# Zur Buech + +  + +> [!summary]+ +> Note Description + +  + +```toc +style: number +``` + +  + +--- + +  + +### ๐Ÿ“‡ Contact + +  + +> [!address] ๐Ÿ—บ +> Forchstrasse 267 +> CH-8704 Herrliberg +> Switzerland + +  + +โ˜Ž๏ธ `= this.Phone` + +๐Ÿ“ง `= this.Email` + +๐ŸŒ `= this.Website` + +  + +--- + +  + +### ๐Ÿ—’ Notes + +  + +Loret ipsum + +  + +--- + +  + +### ๐Ÿ”— Other activity + +  + +```dataview +Table DocType as "Doc type" from [[Buech]] +where !contains(file.name, "@@Travel") +sort DocType asc +``` + +  +  \ No newline at end of file diff --git a/03.01 Reading list/@Reading master.md b/03.01 Reading list/@Reading master.md index 839a7501..a7cbf9ac 100644 --- a/03.01 Reading list/@Reading master.md +++ b/03.01 Reading list/@Reading master.md @@ -159,9 +159,9 @@ dv.view("00.01 Admin/dv-views/book_query", {sourcetype: "Book", language: "EN"})   #### International literature -[[#^Top|TOP]] + ```dataviewjs -dv.view("00.01 Admin/dv-views/book_query", {sourcetype: "Book", language: ["BR", "ES", "NG", "CH"]}) +dv.view("00.01 Admin/dv-views/book_query", {sourcetype: "Book", language: ["BR", "ES", "NG", "CH", "CN", "MY"]}) ```   diff --git a/03.02 Travels/Francisco Podesta.md b/03.02 Travels/Francisco Podesta.md index 4e9428c8..153f3506 100644 --- a/03.02 Travels/Francisco Podesta.md +++ b/03.02 Travels/Francisco Podesta.md @@ -1,6 +1,6 @@ --- -Tag: ["Polo", "๐Ÿ‡ช๐Ÿ‡ธ", "๐Ÿง"] +Tag: [":TpRL.D:", "๐Ÿ‡ช๐Ÿ‡ธ", "๐Ÿง"] Date: 2022-09-16 DocType: "Person" Hierarchy: "NonRoot" diff --git a/03.02 Travels/Lucho Irazabal.md b/03.02 Travels/Lucho Irazabal.md index b351c8c0..89cc2794 100644 --- a/03.02 Travels/Lucho Irazabal.md +++ b/03.02 Travels/Lucho Irazabal.md @@ -1,7 +1,7 @@ --- Alias: ["Lucho Irazabal"] -Tag: ["๐Ÿฅ‰", "Polo", "๐Ÿง"] +Tag: ["๐Ÿฅ‰", ":TpRL.D:", "๐Ÿง"] Date: 2022-09-23 DocType: "Person" Hierarchy: "NonRoot" diff --git a/03.02 Travels/Nano Iturroz.md b/03.02 Travels/Nano Iturroz.md index 767a4246..4f484082 100644 --- a/03.02 Travels/Nano Iturroz.md +++ b/03.02 Travels/Nano Iturroz.md @@ -1,7 +1,7 @@ --- Alias: ["Nano"] -Tag: ["๐Ÿง", "Polo", "๐Ÿฅ‰"] +Tag: ["๐Ÿง", ":TpRL.D:", "๐Ÿฅ‰"] Date: 2022-09-23 DocType: "Person" Hierarchy: "NonRoot" diff --git a/03.03 Food & Wine/!!Coffee.md b/03.03 Food & Wine/!!Coffee.md index 7f09950f..e92341c0 100644 --- a/03.03 Food & Wine/!!Coffee.md +++ b/03.03 Food & Wine/!!Coffee.md @@ -154,6 +154,26 @@ dv.view("00.01 Admin/dv-views/query_coffee", {country: "Brazil"})   +##### Mexico + +  + +```dataviewjs +dv.view("00.01 Admin/dv-views/query_coffee", {country: "Mexico"}) +``` + +  + +##### Ethiopia + +  + +```dataviewjs +dv.view("00.01 Admin/dv-views/query_coffee", {country: "Ethiopia"}) +``` + +  + ---   diff --git a/03.03 Food & Wine/Fazenda Dutra.md b/03.03 Food & Wine/Fazenda Dutra.md new file mode 100644 index 00000000..dceeebe3 --- /dev/null +++ b/03.03 Food & Wine/Fazenda Dutra.md @@ -0,0 +1,78 @@ +--- + +Tag: ["๐ŸŒฐ", "๐Ÿซ"] +Date: 2023-12-24 +DocType: "Coffee" +Hierarchy: "NonRoot" +TimeStamp: +location: +CollapseMetaTable: true +Source: +cssclass: recipeTable +Coffee: + Brand: Stoll + Type: Arabica + Roast: Medium + Strength: 6 + Country: Brazil + +--- + +parent:: [[!!Coffee|Coffee]] + +--- + +  + +```button +name Save +type command +action Save current file +id Save +``` +^button-FazendaDutraNSave + +# Fazenda Dutra + +  + +> [!summary]+ +>Description + +  + +```toc +style: number +``` + +  + +--- + +  + +### ๐Ÿ“‡ Summary + +  + +| | +|-|- +| ๐Ÿ‡**Coffee type**: | `$=dv.current().Coffee.Type` +| ๐ŸŒถ **Strength**: | `$=dv.current().Coffee.Strength` +| ๐Ÿ—บ **Country**: | `$=dv.current().Coffee.Country` +| ๐Ÿ”ฅ **Roast**: | `$=dv.current().Coffee.Roast` +| โญ๏ธ **Brand**: | `$=dv.current().Coffee.Brand` + +  + +--- + +  + +### ๐Ÿ—’ Notes + +  + +[Stoll Kaffee - Stoll Kaffee AG](https://www.stoll-kaffee.ch/) + +[Fazendas Dutra Organic Specialty Coffee | Organic Specialty Coffee | Direct Trade](https://www.fazendasdutra.com.br/) \ No newline at end of file diff --git a/03.03 Food & Wine/Finca Racons.md b/03.03 Food & Wine/Finca Racons.md new file mode 100644 index 00000000..af8492f1 --- /dev/null +++ b/03.03 Food & Wine/Finca Racons.md @@ -0,0 +1,84 @@ +--- + +Tag: ["๐Ÿ", "๐Ÿ", "๐Ÿฅฅ", "๐Ÿชต"] +Date: 2023-12-24 +DocType: "Wine" +Hierarchy: "NonRoot" +TimeStamp: +location: +CollapseMetaTable: true +Source: +cssclass: recipeTable +Wine: + Vintage: 2017 + Type: White + Producer: "Tomร s Cusinรฉ" + Varietal: "Macabeu" + Designation: + Vineyard: + Country: Spain + Region: Cataluรฑa + SubRegion: "Costers del Segre" + Appellation: "Vinyes Velles" + +--- + +parent:: [[!!Wine|Wine]], [[@Spain|Spain]] + +--- + +  + +```button +name Save +type command +action Save current file +id Save +``` +^button-FincaRaconsNSave + +# Finca Racons + +  + +> [!summary]+ +> Description + +  + +```toc +style: number +``` + +  + +--- + +  + +### ๐Ÿ“‡ Summary + +  + +| | +|-|- +| ๐Ÿท **Wine type**: | `$=dv.current().Wine.Type` +| ๐Ÿพ **Variety**: | `$=dv.current().Wine.Varietal` +| ๐Ÿ‡ **Vineyard**: | `$=dv.current().Wine.Vineyard` +| ๐Ÿ—บ **Region**: | `$=dv.current().Wine.Region` +| ๐Ÿ—ป **Terroir**: | `$=dv.current().Wine.SubRegion` +| ๐Ÿท **Appellation**: | `$=dv.current().Wine.Appellation` +| ๐Ÿง‘๐Ÿผโ€๐ŸŒพ **Producer**: | `$=dv.current().Wine.Producer` +| ๐Ÿ“† **Vintage**: | `$=dv.current().Wine.Vintage` + +  + +--- + +  + +### ๐Ÿ—’ Notes + +  + +[Products โ€“ Tomร s Cusinรฉ](https://www.tomascusine.com/en/shop-online/) \ No newline at end of file diff --git a/03.03 Food & Wine/Mint Sauce.md b/03.03 Food & Wine/Mint Sauce.md new file mode 100644 index 00000000..bc76614d --- /dev/null +++ b/03.03 Food & Wine/Mint Sauce.md @@ -0,0 +1,142 @@ +--- + +ServingSize: 2 +cssclass: recipeTable +Tag: ["๐Ÿต"] +Date: 2023-12-25 +DocType: "Recipe" +Hierarchy: "NonRoot" +location: +CollapseMetaTable: true +Meta: + IsFavourite: False + Rating: 3 +Recipe: + Courses: "Side Dish" + Categories: Condiment + Collections: British + Source: "[Mint Recipes](https://www.greatbritishchefs.com/collections/mint-recipes)" + PreparationTime: 15 + CookingTime: 15 + OServingSize: 10 +Ingredients: + - 2 bunches mint, large + - 150 grams sugar + - 150 ml white wine vinegar + - 150 ml water + - 1 pinch salt + +--- + +Parent:: [[@@Recipes|Recipes]], [[@Side dishes|Side dishes]] + +--- + +  + +```button +name Edit Recipe parameters +type command +action MetaEdit: Run MetaEdit +id EditMetaData +``` +^button-MintSauceEdit + + +```button +name Save +type command +action Save current file +id Save +``` +^button-MintSauceNSave + + + +  + +# Mint Sauce + +  + +```toc +style: number +``` + +  + +--- + +  + +### ๐Ÿ—’ Practical Informations + +```dataview +list without id + "" + + + "" ++ + "" + + + "" + + + "" + + + "" + + + "" + + + "" + + + "" + + + "
๐Ÿฝ Courses" + this.Recipe.Courses + "
๐Ÿฅ˜ Categories" + this.Recipe.Categories + "
๐Ÿ“š Collections" + this.Recipe.Collections + "
๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ Serving size" + this.ServingSize + "
โฒ Cooking time" + this.Recipe.CookingTime + " min
" +FROM "03.03 Food & Wine/Mint Sauce" +``` + +  + +--- + +  + +### ๐Ÿงซ Ingredients + +  + +```dataviewjs +dv.view("00.01 Admin/dv-views/query_ingredient", {ingredients: dv.current().Ingredients, originalportioncount: dv.current().Recipe.OServingSize}) +``` + +  + +--- + +  + +### ๐Ÿ”€ Instructions + +  + +#### Step 1 + +To begin, pick the mint leaves and reserve the stalks. Blanch the mint leaves for a few seconds in boiling water, then refresh in ice water to stop the cooking process. Drain and squeeze out any excess moisture before finely chopping + +  + +#### Step 2 + +Add the sugar, water, vinegar and mint stalks to a pan and bring to the boil, seasoning with a pinch of salt. Once boiling, remove from the heat and leave to cool + +  + +#### Step 3 + +Once cool, remove the stalks and pour the liquid over the chopped mint. Transfer to a jar and store in the fridge + +  +  + +--- +`$= dv.el('center', 'Source: ' + dv.current().Recipe.Source + ', ' + dv.current().Date.toLocaleString("fr-FR"))` \ No newline at end of file diff --git a/03.03 Food & Wine/Sidamo Bio.md b/03.03 Food & Wine/Sidamo Bio.md new file mode 100644 index 00000000..12f3507e --- /dev/null +++ b/03.03 Food & Wine/Sidamo Bio.md @@ -0,0 +1,76 @@ +--- + +Tag: ["๐ŸŠ", "๐ŸŒ", "๐Ÿซ"] +Date: 2023-12-24 +DocType: "Coffee" +Hierarchy: "NonRoot" +TimeStamp: +location: +CollapseMetaTable: true +Source: +cssclass: recipeTable +Coffee: + Brand: "Cafรฉ Noir" + Type: Arabica + Roast: Medium + Strength: 4 + Country: Ethiopia + +--- + +parent:: [[!!Coffee|Coffee]] + +--- + +  + +```button +name Save +type command +action Save current file +id Save +``` +^button-SidamoBioNSave + +# Sidamo Bio + +  + +> [!summary]+ +>Description + +  + +```toc +style: number +``` + +  + +--- + +  + +### ๐Ÿ“‡ Summary + +  + +| | +|-|- +| ๐Ÿ‡**Coffee type**: | `$=dv.current().Coffee.Type` +| ๐ŸŒถ **Strength**: | `$=dv.current().Coffee.Strength` +| ๐Ÿ—บ **Country**: | `$=dv.current().Coffee.Country` +| ๐Ÿ”ฅ **Roast**: | `$=dv.current().Coffee.Roast` +| โญ๏ธ **Brand**: | `$=dv.current().Coffee.Brand` + +  + +--- + +  + +### ๐Ÿ—’ Notes + +  + +[Noir Kaffeerรถsterei](https://cafe-noir.ch/) \ No newline at end of file diff --git a/03.04 Cinematheque/Dances with Wolves (1990).md b/03.04 Cinematheque/Dances with Wolves (1990).md new file mode 100644 index 00000000..7ea2ad51 --- /dev/null +++ b/03.04 Cinematheque/Dances with Wolves (1990).md @@ -0,0 +1,103 @@ +--- +type: "movie" +subType: null +title: "Dances with Wolves" +englishTitle: "Dances with Wolves" +year: "1990" +dataSource: "OMDbAPI" +url: "https://www.imdb.com/title/tt0099348/" +id: "tt0099348" +plot: "Lieutenant John Dunbar, assigned to a remote western Civil War outpost, finds himself engaging with a neighbouring Sioux settlement, causing him to question his own purpose." +genres: + - "Adventure" + - "Drama" + - "Western" +director: + - "Kevin Costner" +writer: + - "Michael Blake" +studio: + - "N/A" +duration: "181 min" +onlineRating: 8 +actors: + - "Kevin Costner" + - "Mary McDonnell" + - "Graham Greene" +image: "https://m.media-amazon.com/images/M/MV5BMTY3OTI5NDczN15BMl5BanBnXkFtZTcwNDA0NDY3Mw@@._V1_SX300.jpg" +released: true +streamingServices: +premiere: "21/11/1990" +watched: true +lastWatched: "[[2023-12-22]]" +personalRating: 8 + +--- + +Parent:: [[@Cinematheque]] + +--- + +```dataviewjs +dv.paragraph(`> [!${dv.current().watched ? 'SUCCESS' : 'WARNING'}] ${dv.current().watched ? 'last watched on ' + dv.current().lastWatched : 'not yet watched'}`) +``` + +  + +# `$= dv.current().title` + +  + +`$= dv.current().watched ? '**Rating**: ' + dv.current().personalRating + ' out of 10' : ''` + +```toc +``` + +  + +### Details + +  + +**Genres**: +`$= dv.current().genres.length === 0 ? ' - none' : dv.list(dv.current().genres)` + +`$= !dv.current().released ? '**Not released** The movie is not yet released.' : ''` + +  + +```dataview +list without id + "" + + + "" ++ + "" + + + "" + + + "" + + + "" + + + "" + + + "" + + + "" + + + "
Type" + this.type + "
Online Rating" + this.onlineRating + "
Duration" + this.duration + "
Premiered" + this.premiere + "
Producer" + this.producer + "
" +FROM "03.04 Cinematheque/Dances with Wolves (1990)" +``` + +  + +--- + +  + +### Poster + +  + +`$= '![Image|360](' + dv.current().image + ')'` \ No newline at end of file diff --git a/03.04 Cinematheque/The Man from Laramie (1955).md b/03.04 Cinematheque/The Man from Laramie (1955).md new file mode 100644 index 00000000..306df0f6 --- /dev/null +++ b/03.04 Cinematheque/The Man from Laramie (1955).md @@ -0,0 +1,104 @@ +--- +type: "movie" +subType: null +title: "The Man from Laramie" +englishTitle: "The Man from Laramie" +year: "1955" +dataSource: "OMDbAPI" +url: "https://www.imdb.com/title/tt0048342/" +id: "tt0048342" +plot: "Newcomer Will Lockhart defies the local cattle baron and his sadistic son by working for one of his oldest rivals." +genres: + - "Drama" + - "Western" +director: + - "Anthony Mann" +writer: + - "Philip Yordan" + - "Frank Burt" + - "Thomas T. Flynn" +studio: + - "N/A" +duration: "103 min" +onlineRating: 7.3 +actors: + - "James Stewart" + - "Arthur Kennedy" + - "Donald Crisp" +image: "https://m.media-amazon.com/images/M/MV5BOWE2ZTA5MjItMjBmMy00MzcyLTk2M2ItYmUyNmRiZjM0Y2E2XkEyXkFqcGdeQXVyMTI1NDQ4NQ@@._V1_SX300.jpg" +released: true +streamingServices: +premiere: "31/08/1955" +watched: true +lastWatched: "[[2023-12-23]]" +personalRating: 5.5 + +--- + +Parent:: [[@Cinematheque]] + +--- + +```dataviewjs +dv.paragraph(`> [!${dv.current().watched ? 'SUCCESS' : 'WARNING'}] ${dv.current().watched ? 'last watched on ' + dv.current().lastWatched : 'not yet watched'}`) +``` + +  + +# `$= dv.current().title` + +  + +`$= dv.current().watched ? '**Rating**: ' + dv.current().personalRating + ' out of 10' : ''` + +```toc +``` + +  + +### Details + +  + +**Genres**: +`$= dv.current().genres.length === 0 ? ' - none' : dv.list(dv.current().genres)` + +`$= !dv.current().released ? '**Not released** The movie is not yet released.' : ''` + +  + +```dataview +list without id + "" + + + "" ++ + "" + + + "" + + + "" + + + "" + + + "" + + + "" + + + "" + + + "
Type" + this.type + "
Online Rating" + this.onlineRating + "
Duration" + this.duration + "
Premiered" + this.premiere + "
Producer" + this.producer + "
" +FROM "03.04 Cinematheque/The Man from Laramie (1955)" +``` + +  + +--- + +  + +### Poster + +  + +`$= '![Image|360](' + dv.current().image + ')'` \ No newline at end of file diff --git a/04.01 lebv.org/lebv Research Tasks.md b/04.01 lebv.org/lebv Research Tasks.md index a31c53c2..5f44c357 100644 --- a/04.01 lebv.org/lebv Research Tasks.md +++ b/04.01 lebv.org/lebv Research Tasks.md @@ -67,7 +67,7 @@ Overview of tasks & todos for lebv.org   -- [ ] :fleur_de_lis: [[lebv Research Tasks|Research]]: Lieux: que sont devenus Fleurimont & Le Pavillon aujourd'hui? ๐Ÿ“… 2024-02-25 +- [ ] :fleur_de_lis:: [[lebv Research Tasks|Research]]: Lieux: que sont devenus Fleurimont & Le Pavillon aujourd'hui? ๐Ÿ“… 2024-02-25 - [ ] :fleur_de_lis: [[lebv Research Tasks|Research]]: membres de la famille: reprendre les citations militaires (promotion/dรฉcoration) ๐Ÿ“… 2024-03-31 - [ ] :fleur_de_lis: [[lebv Research Tasks|Research]]: membres de la famille: รฉplucher les mentions du Nobiliaire de Guyenne & Gascogne ๐Ÿ“… 2024-12-31 - [x] [[lebv Research Tasks|Research]]: Archivage: complรฉter les fichiers de Source diff --git a/05.02 Networks/Configuring UFW.md b/05.02 Networks/Configuring UFW.md index 9ced653b..8131d0e9 100644 --- a/05.02 Networks/Configuring UFW.md +++ b/05.02 Networks/Configuring UFW.md @@ -237,7 +237,8 @@ sudo bash /etc/addip4ban/addip4ban.sh #### Ban List Tasks -- [ ] ๐Ÿ–ฅ [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%% ๐Ÿ” every week on Saturday ๐Ÿ“… 2023-12-23 +- [ ] ๐Ÿ–ฅ [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%% ๐Ÿ” every week on Saturday ๐Ÿ“… 2023-12-30 +- [x] ๐Ÿ–ฅ [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%% ๐Ÿ” every week on Saturday ๐Ÿ“… 2023-12-23 โœ… 2023-12-23 - [x] ๐Ÿ–ฅ [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%% ๐Ÿ” every week on Saturday ๐Ÿ“… 2023-12-16 โœ… 2023-12-16 - [x] ๐Ÿ–ฅ [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%% ๐Ÿ” every week on Saturday ๐Ÿ“… 2023-12-09 โœ… 2023-12-08 - [x] ๐Ÿ–ฅ [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%% ๐Ÿ” every week on Saturday ๐Ÿ“… 2023-12-02 โœ… 2023-12-01 @@ -286,7 +287,8 @@ sudo bash /etc/addip4ban/addip4ban.sh - [x] ๐Ÿ–ฅ [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%% ๐Ÿ” every week on Saturday ๐Ÿ“… 2023-08-12 โœ… 2023-08-07 - [x] ๐Ÿ–ฅ [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%% ๐Ÿ” every week on Saturday ๐Ÿ“… 2023-08-05 โœ… 2023-08-05 - [x] ๐Ÿ–ฅ [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%% ๐Ÿ” every week on Saturday ๐Ÿ“… 2023-07-29 โœ… 2023-08-04 -- [ ] ๐Ÿ–ฅ [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list %%done_del%% ๐Ÿ” every month on Saturday ๐Ÿ“… 2023-12-23 +- [ ] ๐Ÿ–ฅ [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list %%done_del%% ๐Ÿ” every month on Saturday ๐Ÿ“… 2023-12-30 +- [x] ๐Ÿ–ฅ [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list %%done_del%% ๐Ÿ” every month on Saturday ๐Ÿ“… 2023-12-23 โœ… 2023-12-23 - [x] ๐Ÿ–ฅ [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list %%done_del%% ๐Ÿ” every month on Saturday ๐Ÿ“… 2023-12-16 โœ… 2023-12-16 - [x] ๐Ÿ–ฅ [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list %%done_del%% ๐Ÿ” every month on Saturday ๐Ÿ“… 2023-12-09 โœ… 2023-12-08 - [x] ๐Ÿ–ฅ [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list %%done_del%% ๐Ÿ” every month on Saturday ๐Ÿ“… 2023-12-02 โœ… 2023-12-01 diff --git a/06.02 Investments/Crypto Tasks.md b/06.02 Investments/Crypto Tasks.md index 7ea35624..13035c7a 100644 --- a/06.02 Investments/Crypto Tasks.md +++ b/06.02 Investments/Crypto Tasks.md @@ -70,7 +70,7 @@ All tasks and to-dos Crypto-related.   %%- [ ] ๐Ÿ’ฐ[[Crypto Tasks#internet alerts|monitor Crypto news and publications]] %%done_del%% ๐Ÿ” every week on Friday ๐Ÿ“… 2022-12-16%% -- [ ] :ballot_box: [[Crypto Tasks]]: Vote for [[EOS]] block producers %%done_del%% ๐Ÿ” every month on the 1st Tuesday ๐Ÿ“… 2024-01-02 +- [ ] :ballot_box_with_ballot: [[Crypto Tasks]]: Vote for [[EOS]] block producers %%done_del%% ๐Ÿ” every month on the 1st Tuesday ๐Ÿ“… 2024-01-02 - [x] :ballot_box: [[Crypto Tasks]]: Vote for [[EOS]] block producers %%done_del%% ๐Ÿ” every month on the 1st Tuesday ๐Ÿ“… 2023-12-05 โœ… 2023-12-05 - [x] :ballot_box: [[Crypto Tasks]]: Vote for [[EOS]] block producers %%done_del%% ๐Ÿ” every month on the 1st Tuesday ๐Ÿ“… 2023-11-07 โœ… 2023-11-07 - [x] :ballot_box: [[Crypto Tasks]]: Vote for [[EOS]] block producers %%done_del%% ๐Ÿ” every month on the 1st Tuesday ๐Ÿ“… 2023-10-03 โœ… 2023-10-03 diff --git a/test.zip b/test.zip new file mode 100644 index 00000000..15cb0ecb Binary files /dev/null and b/test.zip differ