diff options
Diffstat (limited to 'src')
74 files changed, 2597 insertions, 6951 deletions
diff --git a/src/_locales/ar/messages.json b/src/_locales/ar/messages.json index 1e757e48..9511c4e7 100644 --- a/src/_locales/ar/messages.json +++ b/src/_locales/ar/messages.json @@ -15,75 +15,14 @@ "message": "الإعدادات", "description": "used in the popup" }, - "copyRaw": { - "message": "الرابط الأصلي", - "description": "used in the popup" - }, - "copied": { - "message": "تم النسخ", - "description": "used in the popup" - }, - "unifySettings": { - "message": "توحيد الإعدادات", - "description": "used in the popup" - }, "general": { "message": "العامة", "description": "used in the settings page" }, - "youtube": { - "message": "يوتيوب" - }, - "ytmusic": { - "message": "يوتيوب ميوزيك" - }, - "instagram": { - "message": "إنستغرام" - }, - "twitter": { - "message": "تويتر" - }, - "reddit": { - "message": "ريديت" - }, - "tiktok": { - "message": "تيك توك" - }, - "lbry": { - "message": "LBRY" - }, - "imgur": { - "message": "إمجور" - }, - "wikipedia": { - "message": "ويكيبيديا" - }, - "peertube": { - "message": "PeerTube" - }, - "medium": { - "message": "ميديام" - }, - "search": { - "message": "البحث" - }, - "translate": { - "message": "الترجمة" - }, - "maps": { - "message": "الخرائط" - }, - "sendFiles": { - "message": "إرسال الملفات" - }, "theme": { "message": "السمة", "description": "used in the settings page" }, - "system": { - "message": "النظام", - "description": "used in the settings page" - }, "light": { "message": "فاتح", "description": "used in the settings page" @@ -92,12 +31,12 @@ "message": "داكن", "description": "used in the settings page" }, - "autoRedirect": { - "message": "إعادة التوجيه التلقائي من النظراء الخربانين إلى النظراء الشغالين", + "auto": { + "message": "تلقائي", "description": "used in the settings page" }, - "exceptions": { - "message": "الاستثناءات", + "excludeFromRedirecting": { + "message": "استبعاد من التوجيه", "description": "used in the settings page" }, "updateInstances": { @@ -116,78 +55,26 @@ "message": "إعادة تعيين الإعدادات", "description": "used in the settings page" }, - "customPopup": { - "message": "تخصيص النافذة المنبثقة", - "description": "used in the settings page" - }, "enable": { "message": "تفعيل", "description": "used in the settings page" }, - "protocol": { - "message": "البروتوكول", - "description": "used in the settings page" - }, - "normal": { - "message": "العادي", - "description": "used in the settings page" - }, - "tor": { - "message": "تور", - "description": "used in the settings page" - }, - "i2p": { - "message": "i2p", - "description": "used in the settings page" - }, - "defaultInstances": { - "message": "النظراء الافتراضيين", - "description": "used in the settings page" - }, - "customInstances": { - "message": "النظراء المخصصين", - "description": "used in the settings page" - }, - "toggleAll": { - "message": "تبديل الكل", + "showInPopup": { + "message": "الإظهار في المنبثقة", "description": "used in the settings page" }, "frontend": { "message": "الواجهة الأمامية", "description": "used in the settings page" }, - "notFullyPrivate": { - "message": "هذه الواجهة لا تحترم الخصوصية تماماً.", - "description": "used in the settings page" - }, - "instanceOffline": { - "message": "هذا النظير غير متصل بالإنترنت، سيتم إعادة توجيهك بعد", - "description": "used in instance_offline.html" - }, - "cancel": { - "message": "إلغاء", - "description": "used in instance_offline.html" - }, - "instanceIsOff": { - "message": "النظير غير متصل على النت", - "description": "used in instance_offline.html" - }, - "redirectionCanceled": { - "message": "تم إلغاء إعادة التوجيه", - "description": "used in instance_offline.html" - }, - "testInstancesLatency": { - "message": "تجربة سرعة استجابة النظراء", + "searchNote": { + "message": "ملاحظة: استعمل خاصية البحث بكامل إمكانيتها عبر وضع LibRedirect محرك البحث الافتراضي.", "description": "used in the settings page" }, "redirectType": { "message": "نوع التوجيه", "description": "used in the settings page" }, - "embeddedVids": { - "message": "الواجهة الأمامية للفيديوهات المضمنة", - "description": "used in the settings page" - }, "both": { "message": "الإثنين", "description": "used in the settings page" @@ -200,8 +87,8 @@ "message": "فقط الغير مضمنة", "description": "used in the settings page" }, - "searchNote": { - "message": "ملاحظة: استعمل خاصية البحث بكامل إمكانيتها عبر وضع LibRedirect محرك البحث الافتراضي.", + "addYourFavoriteInstances": { + "message": "أضف نظرائك المفضلين", "description": "used in the settings page" }, "lbryDesktop": { @@ -214,4 +101,4 @@ "protocolFallback": { "message": "الرجوع إلى الوضع الطبيعي إذا لم تتوفر مثيلات للبروتوكول الحالي" } -} +} \ No newline at end of file diff --git a/src/_locales/bs/messages.json b/src/_locales/bs/messages.json index bcf6cfd0..1396f78f 100644 --- a/src/_locales/bs/messages.json +++ b/src/_locales/bs/messages.json @@ -11,140 +11,32 @@ "message": "Prebaci instancu", "description": "used in manifest.json as shortcut description" }, - "medium": { - "message": "Medium", - "description": "used in the settings page" - }, - "theme": { - "message": "Tema", - "description": "used in the settings page" - }, - "redirectLink": { - "message": "Pokušajte preusmjeriti ovu hipervezu", - "description": "Used in context menus when right clicking on a hyperlink" - }, - "notFullyPrivate": { - "message": "Ovo nije potpuno privatno sučelje." - }, - "dark": { - "message": "Mračna", - "description": "used in the settings page" - }, - "defaultInstances": { - "message": "Zadane instance", - "description": "used in the settings page" - }, - "unifySettings": { - "message": "Objedinite podešavanja" - }, - "instanceIsOff": { - "message": "Instanca je nedostupna", - "description": "used in instance_offline.html" - }, - "autoRedirect": { - "message": "Automatski preusmjerite nedostupne instance na dostupne", - "description": "used in the settings page" - }, - "onlyEmbedded": { - "message": "samo ugrađeno", - "description": "used in the settings page" - }, - "protocolFallback": { - "message": "Vratite se na normalnu stranicu ako nijedna instanca nije dostupna za trenutni protokol" - }, - "copyRaw": { - "message": "Kopirajte neobrađenu kodu" - }, - "testInstancesLatency": { - "message": "Testirajte Latenciju Instancih" - }, - "toggleTab": { - "message": "Uključite/Isključite preusmjeravanja na ovoj kartici", - "description": "Used in context menus when right clicking on a page/tab" - }, - "copied": { - "message": "Kopirano" - }, "settings": { "message": "Podešavanja", "description": "used in the popup" }, - "translate": { - "message": "Prijevod", - "description": "used in the settings page" - }, - "maps": { - "message": "Karte", - "description": "used in the settings page" - }, "general": { "message": "Općenito", "description": "used in the settings page" }, - "search": { - "message": "Pretraga", - "description": "used in the settings page" - }, - "sendFiles": { - "message": "Pošalji datoteke", - "description": "used in the settings page" - }, - "youtube": { - "message": "YouTube", - "description": "used in the settings page" - }, - "reddit": { - "message": "Reddit", - "description": "used in the settings page" - }, - "tiktok": { - "message": "TikTok", - "description": "used in the settings page" - }, - "imgur": { - "message": "Imgur", - "description": "used in the settings page" - }, - "wikipedia": { - "message": "Wikipedija", - "description": "used in the settings page" - }, - "exceptions": { - "message": "Izuzeci", + "theme": { + "message": "Tema", "description": "used in the settings page" }, - "searchNote": { - "message": "Savjet: Iskoristite puni potencijal pretrage tako što ćete LibRedirect postaviti kao zadani tražilac.", + "light": { + "message": "Svjetla", "description": "used in the settings page" }, - "embeddedVids": { - "message": "Sučelje Ugrađenog Videa", + "dark": { + "message": "Mračna", "description": "used in the settings page" }, - "both": { - "message": "oba", + "auto": { + "message": "Auto", "description": "used in the settings page" }, - "cancel": { - "message": "Otkažite", - "description": "used in instance_offline.html" - }, - "instanceOffline": { - "message": "Ova instanca je nedostupna, bićete preusmjereni nakon", - "description": "used in instance_offline.html" - }, - "redirectionCanceled": { - "message": "Preusmjeravanje je otkazano", - "description": "used in instance_offline.js" - }, - "lbry": { - "message": "LBRY" - }, - "lbryDesktop": { - "message": "LBRY Desktop" - }, - "normal": { - "message": "Normalan", + "excludeFromRedirecting": { + "message": "Excluded from redirecting", "description": "used in the settings page" }, "updateInstances": { @@ -159,64 +51,61 @@ "message": "Izvozne Postavke", "description": "used in the settings page" }, - "frontend": { - "message": "Sučelje", - "description": "used in the settings page" - }, - "redirectType": { - "message": "Vrsta Preusmjeravanja", - "description": "used in the settings page" - }, - "onlyNotEmbedded": { - "message": "samo neugrađeno", - "description": "used in the settings page" - }, "resetSettings": { "message": "Obnovite Postavke", "description": "used in the settings page" }, - "customPopup": { - "message": "Prilagodite iskačući prozor", - "description": "used in the settings page" - }, "enable": { "message": "Omogući", "description": "used in the settings page" }, - "protocol": { - "message": "Protokol", + "showInPopup": { + "message": "Show in popup", "description": "used in the settings page" }, - "toggleAll": { - "message": "Uključi/Isključi sve", + "frontend": { + "message": "Sučelje", "description": "used in the settings page" }, - "customInstances": { - "message": "Prilagođene instance", + "searchNote": { + "message": "Savjet: Iskoristite puni potencijal pretrage tako što ćete LibRedirect postaviti kao zadani tražilac.", "description": "used in the settings page" }, - "instagram": { - "message": "Instagram", + "redirectType": { + "message": "Vrsta Preusmjeravanja", "description": "used in the settings page" }, - "twitter": { - "message": "Twitter", + "both": { + "message": "oba", "description": "used in the settings page" }, - "ytmusic": { - "message": "YT Muzika", + "onlyEmbedded": { + "message": "samo ugrađeno", "description": "used in the settings page" }, - "peertube": { - "message": "PeerTube", + "onlyNotEmbedded": { + "message": "samo neugrađeno", "description": "used in the settings page" }, - "system": { - "message": "Sustav", + "addYourFavoriteInstances": { + "message": "Add your favorite instances", "description": "used in the settings page" }, - "light": { - "message": "Svjetla", - "description": "used in the settings page" + "copyRaw": { + "message": "Kopirajte neobrađenu kodu" + }, + "copied": { + "message": "Kopirano" + }, + "redirectToOriginal": { + "message": "Redirect to original", + "description": "Used in context menus when right clicking on a page/tab" + }, + "redirectLink": { + "message": "Pokušajte preusmjeriti ovu hipervezu", + "description": "Used in context menus when right clicking on a hyperlink" + }, + "about": { + "message": "About" } -} +} \ No newline at end of file diff --git a/src/_locales/cs/messages.json b/src/_locales/cs/messages.json index 583d1c6d..e3e9288f 100644 --- a/src/_locales/cs/messages.json +++ b/src/_locales/cs/messages.json @@ -1,4 +1,12 @@ { + "extensionName": { + "message": "LibRedirect", + "description": "name of the extension" + }, + "extensionDescription": { + "message": "Webové rozšíření, které přesměrovává oblíbené weby na alternativní ‘frontends‘ a ‘backends‘ respektující soukromí", + "description": "description of the extension" + }, "switchInstance": { "message": "Přepnout instanci", "description": "used in manifest.json as shortcut description" @@ -7,50 +15,14 @@ "message": "Nastavení", "description": "used in the popup" }, - "search": { - "message": "Vyhledávání", - "description": "used in the settings page" - }, - "translate": { - "message": "Překlad", - "description": "used in the settings page" - }, - "sendFiles": { - "message": "Posílání souborů", - "description": "used in the settings page" - }, - "youtube": { - "message": "YouTube", - "description": "used in the settings page" - }, - "instagram": { - "message": "Instagram", - "description": "used in the settings page" - }, - "imgur": { - "message": "Imgur", - "description": "used in the settings page" - }, - "wikipedia": { - "message": "Wikipedie", - "description": "used in the settings page" - }, - "peertube": { - "message": "PeerTube", + "general": { + "message": "Obecné", "description": "used in the settings page" }, "theme": { "message": "Téma", "description": "used in the settings page" }, - "system": { - "message": "Systém", - "description": "used in the settings page" - }, - "medium": { - "message": "Medium", - "description": "used in the settings page" - }, "light": { "message": "Světlé", "description": "used in the settings page" @@ -59,6 +31,18 @@ "message": "Tmavé", "description": "used in the settings page" }, + "auto": { + "message": "Auto", + "description": "used in the settings page" + }, + "excludeFromRedirecting": { + "message": "Excluded from redirecting", + "description": "used in the settings page" + }, + "updateInstances": { + "message": "Aktualizovat instance", + "description": "used in the settings page" + }, "importSettings": { "message": "Importovat nastavení", "description": "used in the settings page" @@ -71,21 +55,18 @@ "message": "Obnovit nastavení", "description": "used in the settings page" }, - "customPopup": { - "message": "Přizpůsobit vyskakovací nabídku", + "enable": { + "message": "Povolit", "description": "used in the settings page" }, - "toggleAll": { - "message": "Přepnout vše", + "showInPopup": { + "message": "Show in popup", "description": "used in the settings page" }, "frontend": { "message": "Frontend", "description": "used in the settings page" }, - "notFullyPrivate": { - "message": "Toto není plně soukromý frontend." - }, "searchNote": { "message": "Poznámka: Využijte plný potenciál vyhledávání tak, že si jako výchozí vyhledávač nastavíte LibRedirect.", "description": "used in the settings page" @@ -94,122 +75,27 @@ "message": "Typ přesměrování", "description": "used in the settings page" }, - "embeddedVids": { - "message": "Frontend vložených videí", - "description": "used in the settings page" - }, - "cancel": { - "message": "Zrušit", - "description": "used in instance_offline.html" - }, - "instanceIsOff": { - "message": "Instance je offline", - "description": "used in instance_offline.html" - }, - "redirectionCanceled": { - "message": "Přesměrování zrušeno", - "description": "used in instance_offline.js" - }, - "copied": { - "message": "Zkopírováno" - }, - "unifySettings": { - "message": "Sjednotit nastavení" - }, - "extensionName": { - "message": "LibRedirect", - "description": "name of the extension" - }, - "ytmusic": { - "message": "YT Music", - "description": "used in the settings page" - }, - "lbryDesktop": { - "message": "LBRY Desktop" - }, - "instanceOffline": { - "message": "Tato instance je offline, budete přesměrováni za", - "description": "used in instance_offline.html" - }, - "extensionDescription": { - "message": "Webové rozšíření, které přesměrovává oblíbené weby na alternativní ‘frontends‘ a ‘backends‘ respektující soukromí", - "description": "description of the extension" - }, - "general": { - "message": "Obecné", - "description": "used in the settings page" - }, - "maps": { - "message": "Mapy", - "description": "used in the settings page" - }, - "twitter": { - "message": "Twitter", - "description": "used in the settings page" - }, - "reddit": { - "message": "Reddit", - "description": "used in the settings page" - }, - "tiktok": { - "message": "TikTok", - "description": "used in the settings page" - }, - "autoRedirect": { - "message": "Automaticky přesměrovat offline instance na online instance", + "both": { + "message": "oba", "description": "used in the settings page" }, - "updateInstances": { - "message": "Aktualizovat instance", + "onlyEmbedded": { + "message": "pouze vložené", "description": "used in the settings page" }, "onlyNotEmbedded": { "message": "pouze nevložené", "description": "used in the settings page" }, - "protocol": { - "message": "Protokol", - "description": "used in the settings page" - }, - "normal": { - "message": "Normální", - "description": "used in the settings page" - }, - "onlyEmbedded": { - "message": "pouze vložené", - "description": "used in the settings page" - }, - "exceptions": { - "message": "Výjimky", + "addYourFavoriteInstances": { + "message": "Add your favorite instances", "description": "used in the settings page" }, "copyRaw": { "message": "Zkopírovat surové" }, - "enable": { - "message": "Povolit", - "description": "used in the settings page" - }, - "defaultInstances": { - "message": "Výchozí instance", - "description": "used in the settings page" - }, - "customInstances": { - "message": "Vlastní instance", - "description": "used in the settings page" - }, - "both": { - "message": "oba", - "description": "used in the settings page" - }, - "testInstancesLatency": { - "message": "Otestovat latenci instancí" - }, - "lbry": { - "message": "LBRY" - }, - "protocolFallback": { - "message": "Návrat k normálnímu protokolu, pokud pro současný nebudou dostupné žádné instance" + "copied": { + "message": "Zkopírováno" }, "toggleTab": { "message": "Přepnout přesměrování v této kartě", @@ -218,5 +104,8 @@ "redirectLink": { "message": "Pokusit se přesměrovat tento odkaz", "description": "Used in context menus when right clicking on a hyperlink" + }, + "about": { + "message": "About" } -} +} \ No newline at end of file diff --git a/src/_locales/de/messages.json b/src/_locales/de/messages.json index c3551232..9a10cfb2 100644 --- a/src/_locales/de/messages.json +++ b/src/_locales/de/messages.json @@ -19,74 +19,10 @@ "message": "Allgemein", "description": "used in the settings page" }, - "search": { - "message": "Suche", - "description": "used in the settings page" - }, - "translate": { - "message": "Übersetzen", - "description": "used in the settings page" - }, - "maps": { - "message": "Karten", - "description": "used in the settings page" - }, - "sendFiles": { - "message": "Dateien senden", - "description": "used in the settings page" - }, - "youtube": { - "message": "YouTube", - "description": "used in the settings page" - }, - "instagram": { - "message": "Instagram", - "description": "used in the settings page" - }, - "twitter": { - "message": "Twitter", - "description": "used in the settings page" - }, - "reddit": { - "message": "Reddit", - "description": "used in the settings page" - }, - "tiktok": { - "message": "TikTok", - "description": "used in the settings page" - }, - "ytmusic": { - "message": "YT Music", - "description": "used in the settings page" - }, - "imgur": { - "message": "Imgur", - "description": "used in the settings page" - }, - "wikipedia": { - "message": "Wikipedia", - "description": "used in the settings page" - }, - "peertube": { - "message": "PeerTube", - "description": "used in the settings page" - }, - "medium": { - "message": "Medium", - "description": "used in the settings page" - }, - "tor": { - "message": "Tor", - "description": "used in the settings page" - }, "theme": { "message": "Farbschema", "description": "used in the settings page" }, - "system": { - "message": "System", - "description": "used in the settings page" - }, "light": { "message": "Hell", "description": "used in the settings page" @@ -95,12 +31,12 @@ "message": "Dunkel", "description": "used in the settings page" }, - "autoRedirect": { - "message": "Automatisch von Offline-Instanzen zu Online-Instanzen wechseln", + "auto": { + "message": "Auto", "description": "used in the settings page" }, - "exceptions": { - "message": "Ausnahmen", + "excludeFromRedirecting": { + "message": "Excluded from redirecting", "description": "used in the settings page" }, "updateInstances": { @@ -119,41 +55,18 @@ "message": "Einstellungen zurücksetzen", "description": "used in the settings page" }, - "customPopup": { - "message": "Popup personalisieren", - "description": "used in the settings page" - }, "enable": { "message": "Aktivieren", "description": "used in the settings page" }, - "protocol": { - "message": "Protokoll", - "description": "used in the settings page" - }, - "normal": { - "message": "Normal", - "description": "used in the settings page" - }, - "defaultInstances": { - "message": "Standard-Instanzen", - "description": "used in the settings page" - }, - "customInstances": { - "message": "Eigene Instanzen", - "description": "used in the settings page" - }, - "toggleAll": { - "message": "Alle umschalten", + "showInPopup": { + "message": "Show in popup", "description": "used in the settings page" }, "frontend": { "message": "Frontend", "description": "used in the settings page" }, - "notFullyPrivate": { - "message": "Das ist kein völlig privates Frontend." - }, "searchNote": { "message": "Hinweis: Um das volle Potenzial der Suchweiterleitung zu nutzen, lege LibRedirect als Standardsuchmaschine fest.", "description": "used in the settings page" @@ -162,10 +75,6 @@ "message": "Art der Weiterleitung", "description": "used in the settings page" }, - "embeddedVids": { - "message": "Frontend für eingebettete Videos", - "description": "used in the settings page" - }, "both": { "message": "beides", "description": "used in the settings page" @@ -178,17 +87,9 @@ "message": "nur nicht-eingebunden", "description": "used in the settings page" }, - "cancel": { - "message": "Abbrechen", - "description": "used in instance_offline.html" - }, - "instanceIsOff": { - "message": "Instanz ist offline", - "description": "used in instance_offline.html" - }, - "redirectionCanceled": { - "message": "Weiterleitung abgebrochen", - "description": "used in instance_offline.js" + "addYourFavoriteInstances": { + "message": "Add your favorite instances", + "description": "used in the settings page" }, "copyRaw": { "message": "Original-Link kopieren" @@ -196,33 +97,15 @@ "copied": { "message": "Kopiert" }, - "unifySettings": { - "message": "Einstellungen vereinheitlichen" - }, - "lbry": { - "message": "LBRY" - }, - "i2p": { - "message": "I2P" - }, - "instanceOffline": { - "message": "Diese Instanz ist offline , du wirst weitergeleitet nach" - }, - "testInstancesLatency": { - "message": "Teste Latenz der Instanzen" - }, - "protocolFallback": { - "message": "Auf normalen Modus zurückfallen, wenn keine Instanzen für das aktuelle Protokoll verfügbar sind" - }, - "lbryDesktop": { - "message": "LBRY Desktop" - }, - "toggleTab": { - "message": "Umleitungen auf dieser Registerkarte umschalten", + "redirectToOriginal": { + "message": "Redirect to original", "description": "Used in context menus when right clicking on a page/tab" }, "redirectLink": { "message": "Versuch, diesen Hyperlink umzuleiten", "description": "Used in context menus when right clicking on a hyperlink" + }, + "about": { + "message": "About" } -} +} \ No newline at end of file diff --git a/src/_locales/en/messages.json b/src/_locales/en/messages.json index 3887856c..6eb71f0d 100644 --- a/src/_locales/en/messages.json +++ b/src/_locales/en/messages.json @@ -19,70 +19,10 @@ "message": "General", "description": "used in the settings page" }, - "search": { - "message": "Search", - "description": "used in the settings page" - }, - "translate": { - "message": "Translate", - "description": "used in the settings page" - }, - "maps": { - "message": "Maps", - "description": "used in the settings page" - }, - "sendFiles": { - "message": "Send Files", - "description": "used in the settings page" - }, - "youtube": { - "message": "YouTube", - "description": "used in the settings page" - }, - "instagram": { - "message": "Instagram", - "description": "used in the settings page" - }, - "twitter": { - "message": "Twitter", - "description": "used in the settings page" - }, - "reddit": { - "message": "Reddit", - "description": "used in the settings page" - }, - "tiktok": { - "message": "TikTok", - "description": "used in the settings page" - }, - "ytmusic": { - "message": "YT Music", - "description": "used in the settings page" - }, - "imgur": { - "message": "Imgur", - "description": "used in the settings page" - }, - "wikipedia": { - "message": "Wikipedia", - "description": "used in the settings page" - }, - "peertube": { - "message": "PeerTube", - "description": "used in the settings page" - }, - "medium": { - "message": "Medium", - "description": "used in the settings page" - }, "theme": { "message": "Theme", "description": "used in the settings page" }, - "system": { - "message": "System", - "description": "used in the settings page" - }, "light": { "message": "Light", "description": "used in the settings page" @@ -91,12 +31,12 @@ "message": "Dark", "description": "used in the settings page" }, - "autoRedirect": { - "message": "Auto-redirect offline instances to online ones", + "auto": { + "message": "Auto", "description": "used in the settings page" }, - "exceptions": { - "message": "Exceptions", + "excludeFromRedirecting": { + "message": "Excluded from redirecting", "description": "used in the settings page" }, "updateInstances": { @@ -115,41 +55,18 @@ "message": "Reset Settings", "description": "used in the settings page" }, - "customPopup": { - "message": "Customize Popup", - "description": "used in the settings page" - }, "enable": { "message": "Enable", "description": "used in the settings page" }, - "protocol": { - "message": "Protocol", - "description": "used in the settings page" - }, - "normal": { - "message": "Normal", - "description": "used in the settings page" - }, - "defaultInstances": { - "message": "Default Instances", - "description": "used in the settings page" - }, - "customInstances": { - "message": "Custom Instances", - "description": "used in the settings page" - }, - "toggleAll": { - "message": "Toggle all", + "showInPopup": { + "message": "Show in popup", "description": "used in the settings page" }, "frontend": { "message": "Frontend", "description": "used in the settings page" }, - "notFullyPrivate": { - "message": "This isn't a fully private frontend." - }, "searchNote": { "message": "Note: Use the search to its full potential by making LibRedirect your default search engine.", "description": "used in the settings page" @@ -158,10 +75,6 @@ "message": "Redirect Type", "description": "used in the settings page" }, - "embeddedVids": { - "message": "Embedded Videos Frontend", - "description": "used in the settings page" - }, "both": { "message": "both", "description": "used in the settings page" @@ -174,21 +87,9 @@ "message": "only not embedded", "description": "used in the settings page" }, - "instanceOffline": { - "message": "This instance is offline, you'll be redirected after", - "description": "used in instance_offline.html" - }, - "cancel": { - "message": "Cancel", - "description": "used in instance_offline.html" - }, - "instanceIsOff": { - "message": "Instance is offline", - "description": "used in instance_offline.html" - }, - "redirectionCanceled": { - "message": "Redirection canceled", - "description": "used in instance_offline.js" + "addYourFavoriteInstances": { + "message": "Add your favorite instances", + "description": "used in the settings page" }, "copyRaw": { "message": "Copy Raw" @@ -196,27 +97,15 @@ "copied": { "message": "Copied" }, - "unifySettings": { - "message": "Unify Settings" - }, - "lbry": { - "message": "LBRY" - }, - "testInstancesLatency": { - "message": "Test Instances Latency" - }, - "protocolFallback": { - "message": "Fallback to normal if no instances are available for the current protocol" - }, - "lbryDesktop": { - "message": "LBRY Desktop" - }, - "toggleTab": { - "message": "Toggle redirects in this tab", + "redirectToOriginal": { + "message": "Redirect to original", "description": "Used in context menus when right clicking on a page/tab" }, "redirectLink": { "message": "Attempt to redirect this hyperlink", "description": "Used in context menus when right clicking on a hyperlink" + }, + "about": { + "message": "About" } -} +} \ No newline at end of file diff --git a/src/_locales/es/messages.json b/src/_locales/es/messages.json index bd88dabe..48f5710f 100644 --- a/src/_locales/es/messages.json +++ b/src/_locales/es/messages.json @@ -3,6 +3,10 @@ "message": "LibRedirect", "description": "name of the extension" }, + "extensionDescription": { + "message": "Una extensión web que redirige sitios populares a frontends y backends alternativos que respetan la privacidad", + "description": "description of the extension" + }, "switchInstance": { "message": "Cambiar instancia", "description": "used in manifest.json as shortcut description" @@ -15,30 +19,6 @@ "message": "General", "description": "used in the settings page" }, - "translate": { - "message": "Traductor", - "description": "used in the settings page" - }, - "search": { - "message": "Búsqueda", - "description": "used in the settings page" - }, - "ytmusic": { - "message": "YT Music", - "description": "used in the settings page" - }, - "wikipedia": { - "message": "Wikipedia", - "description": "used in the settings page" - }, - "medium": { - "message": "Medium", - "description": "used in the settings page" - }, - "tor": { - "message": "Tor", - "description": "used in the settings page" - }, "theme": { "message": "Tema", "description": "used in the settings page" @@ -47,12 +27,20 @@ "message": "Claro", "description": "used in the settings page" }, - "autoRedirect": { - "message": "Redirigir automáticamente las instancias offline a las online", + "dark": { + "message": "Oscuro", "description": "used in the settings page" }, - "exceptions": { - "message": "Excepciones", + "auto": { + "message": "Auto", + "description": "used in the settings page" + }, + "excludeFromRedirecting": { + "message": "Excluded from redirecting", + "description": "used in the settings page" + }, + "updateInstances": { + "message": "Actualizar Instancias", "description": "used in the settings page" }, "importSettings": { @@ -63,135 +51,22 @@ "message": "Exportar Ajustes", "description": "used in the settings page" }, - "customPopup": { - "message": "Personalizar Ventana Emergente", + "resetSettings": { + "message": "Restablecer Ajustes", "description": "used in the settings page" }, "enable": { "message": "Activar", "description": "used in the settings page" }, - "protocol": { - "message": "Protocolo", - "description": "used in the settings page" - }, - "normal": { - "message": "Normal", + "showInPopup": { + "message": "Show in popup", "description": "used in the settings page" }, "frontend": { "message": "Frontend", "description": "used in the settings page" }, - "embeddedVids": { - "message": "Frontend para Videos Incrustados", - "description": "used in the settings page" - }, - "onlyEmbedded": { - "message": "solo incrustados", - "description": "used in the settings page" - }, - "copyRaw": { - "message": "Copiar Original" - }, - "copied": { - "message": "Copiado" - }, - "unifySettings": { - "message": "Unificar Ajustes" - }, - "lbry": { - "message": "LBRY" - }, - "i2p": { - "message": "I2P" - }, - "instanceOffline": { - "message": "Esta instancia está offline, serás redirigido/a luego de", - "description": "used in instance_offline.html" - }, - "testInstancesLatency": { - "message": "Probar Latencia de las Instancias" - }, - "youtube": { - "message": "YouTube", - "description": "used in the settings page" - }, - "extensionDescription": { - "message": "Una extensión web que redirige sitios populares a frontends y backends alternativos que respetan la privacidad", - "description": "description of the extension" - }, - "maps": { - "message": "Mapas", - "description": "used in the settings page" - }, - "sendFiles": { - "message": "Enviar Archivos", - "description": "used in the settings page" - }, - "twitter": { - "message": "Twitter", - "description": "used in the settings page" - }, - "reddit": { - "message": "Reddit", - "description": "used in the settings page" - }, - "instagram": { - "message": "Instagram", - "description": "used in the settings page" - }, - "tiktok": { - "message": "TikTok", - "description": "used in the settings page" - }, - "imgur": { - "message": "Imgur", - "description": "used in the settings page" - }, - "resetSettings": { - "message": "Restablecer Ajustes", - "description": "used in the settings page" - }, - "updateInstances": { - "message": "Actualizar Instancias", - "description": "used in the settings page" - }, - "defaultInstances": { - "message": "Instancias Predeterminadas", - "description": "used in the settings page" - }, - "peertube": { - "message": "PeerTube", - "description": "used in the settings page" - }, - "system": { - "message": "Sistema", - "description": "used in the settings page" - }, - "dark": { - "message": "Oscuro", - "description": "used in the settings page" - }, - "customInstances": { - "message": "Instancias Personalizadas", - "description": "used in the settings page" - }, - "notFullyPrivate": { - "message": "Este no es un frontend completamente privado." - }, - "toggleAll": { - "message": "Alternar todo", - "description": "used in the settings page" - }, - "onlyNotEmbedded": { - "message": "solo los no incrustados", - "description": "used in the settings page" - }, - "instanceIsOff": { - "message": "La instancia está offline", - "description": "used in instance_offline.html" - }, "searchNote": { "message": "Nota: Utilice la búsqueda en todo su potencial haciendo de LibRedirect su motor de búsqueda predeterminado.", "description": "used in the settings page" @@ -204,26 +79,33 @@ "message": "ambos", "description": "used in the settings page" }, - "cancel": { - "message": "Cancelar", - "description": "used in instance_offline.html" + "onlyEmbedded": { + "message": "solo incrustados", + "description": "used in the settings page" }, - "redirectionCanceled": { - "message": "Redirección cancelada", - "description": "used in instance_offline.js" + "onlyNotEmbedded": { + "message": "solo los no incrustados", + "description": "used in the settings page" }, - "lbryDesktop": { - "message": "Escritorio LBRY" + "addYourFavoriteInstances": { + "message": "Add your favorite instances", + "description": "used in the settings page" }, - "protocolFallback": { - "message": "Vuelta a la normalidad si no hay instancias disponibles para el protocolo actual" + "copyRaw": { + "message": "Copiar Original" + }, + "copied": { + "message": "Copiado" }, - "toggleTab": { - "message": "Alternar redirecciones en esta pestaña", + "redirectToOriginal": { + "message": "Redirect to original", "description": "Used in context menus when right clicking on a page/tab" }, "redirectLink": { "message": "Intentar redirigir a este hipervínculo", "description": "Used in context menus when right clicking on a hyperlink" + }, + "about": { + "message": "About" } -} +} \ No newline at end of file diff --git a/src/_locales/filter.py b/src/_locales/filter.py index 0d5fb44d..1c983002 100644 --- a/src/_locales/filter.py +++ b/src/_locales/filter.py @@ -1,35 +1,28 @@ import json -ar_json = {} -with open('ar/messages.json') as data: - ar_json = json.load(data) - - +langs = ['bs', 'cs', 'de', 'es', 'fr', 'gl', 'hr', 'id', 'it', 'ja', 'ko', + 'nb_NO', 'nl', 'pl', 'pt', 'pt_BR', 'ro', 'ru', 'sr', 'tr', 'uk', 'vi', 'zh_Hans'] en_json = {} -with open('ja/messages.json') as data: - en_json = json.load(data) - -remove_keys = [] -for item in en_json.keys(): - if item not in ar_json.keys(): - remove_keys.append(item) - -for item in remove_keys: - en_json.pop(item) - -add_keys = [] -for item in ar_json.keys(): - if item not in en_json.keys(): - print(item) - add_keys.append(item) - -for item in add_keys: - en_json[item] = { - "message": "", - "description": "" - } +with open('src/_locales/en/messages.json') as data: + en_json = json.load(data) -with open('ja/messages.json', 'w') as outfile: - outfile.write(json.dumps(en_json, ensure_ascii=False, indent=2)) +for lang in langs: + lang_json = {} + with open('src/_locales/'+lang+'/messages.json') as data: + lang_json = json.load(data) + lang_json_new = {} + for key in en_json: + if key in lang_json: + lang_json_new[key] = lang_json[key] + else: + lang_json_new[key] = en_json[key] + with open('src/_locales/'+lang+'/messages.json', 'w') as outfile: + outfile.write( + json.dumps( + lang_json_new, + ensure_ascii=False, + indent=4 + ) + ) diff --git a/src/_locales/fr/messages.json b/src/_locales/fr/messages.json index 82a7b046..b9e3d06a 100644 --- a/src/_locales/fr/messages.json +++ b/src/_locales/fr/messages.json @@ -1,44 +1,28 @@ { - "youtube": { - "message": "YouTube", - "description": "used in the settings page" + "extensionName": { + "message": "LibRedirect", + "description": "name of the extension" + }, + "extensionDescription": { + "message": "Une extension web qui redirige les sites populaires vers des sites frontaux et dorsaux alternatifs respectueux de la vie privée", + "description": "description of the extension" }, "switchInstance": { "message": "Changer d'instance", "description": "used in manifest.json as shortcut description" }, + "settings": { + "message": "Paramètres", + "description": "used in the popup" + }, "general": { "message": "Général", "description": "used in the settings page" }, - "search": { - "message": "Recherche", - "description": "used in the settings page" - }, - "translate": { - "message": "Traduire", - "description": "used in the settings page" - }, - "sendFiles": { - "message": "Envoyer des fichiers", - "description": "used in the settings page" - }, - "wikipedia": { - "message": "Wikipédia", - "description": "used in the settings page" - }, - "peertube": { - "message": "PeerTube", - "description": "used in the settings page" - }, "theme": { "message": "Thème", "description": "used in the settings page" }, - "system": { - "message": "Système", - "description": "used in the settings page" - }, "light": { "message": "Clair", "description": "used in the settings page" @@ -47,8 +31,12 @@ "message": "Sombre", "description": "used in the settings page" }, - "autoRedirect": { - "message": "Redirection automatique des instances hors ligne vers les instances en ligne", + "auto": { + "message": "Auto", + "description": "used in the settings page" + }, + "excludeFromRedirecting": { + "message": "Excluded from redirecting", "description": "used in the settings page" }, "updateInstances": { @@ -63,73 +51,30 @@ "message": "Exportation de paramètres", "description": "used in the settings page" }, - "enable": { - "message": "Activer", - "description": "used in the settings page" - }, - "normal": { - "message": "Normal", - "description": "used in the settings page" - }, - "protocol": { - "message": "Protocole", - "description": "used in the settings page" - }, - "defaultInstances": { - "message": "Instances par défaut", - "description": "used in the settings page" - }, - "instagram": { - "message": "Instagram", - "description": "used in the settings page" - }, - "reddit": { - "message": "Reddit", - "description": "used in the settings page" - }, - "customPopup": { - "message": "Personnaliser la fenêtre contextuelle", + "resetSettings": { + "message": "Réinitialiser les paramètres", "description": "used in the settings page" }, - "customInstances": { - "message": "Instances personnalisées", + "enable": { + "message": "Activer", "description": "used in the settings page" }, - "toggleAll": { - "message": "Activer/désactiver tout", + "showInPopup": { + "message": "Show in popup", "description": "used in the settings page" }, "frontend": { "message": "Frontend", "description": "used in the settings page" }, - "copied": { - "message": "Copié" - }, - "extensionName": { - "message": "LibRedirect", - "description": "name of the extension" - }, - "extensionDescription": { - "message": "Une extension web qui redirige les sites populaires vers des sites frontaux et dorsaux alternatifs respectueux de la vie privée", - "description": "description of the extension" - }, - "maps": { - "message": "Cartes", - "description": "used in the settings page" - }, - "exceptions": { - "message": "Exceptions", - "description": "used in the settings page" - }, - "resetSettings": { - "message": "Réinitialiser les paramètres", - "description": "used in the settings page" - }, "searchNote": { "message": "Remarque : utilisez tout le potentiel de la recherche en faisant de LibRedirect votre moteur de recherche par défaut.", "description": "used in the settings page" }, + "redirectType": { + "message": "Type de redirection", + "description": "used in the settings page" + }, "both": { "message": "les deux", "description": "used in the settings page" @@ -138,95 +83,29 @@ "message": "uniquement intégré", "description": "used in the settings page" }, - "instanceOffline": { - "message": "Cette instance est hors ligne, vous serez redirigé après", - "description": "used in instance_offline.html" - }, - "settings": { - "message": "Paramètres", - "description": "used in the popup" - }, - "notFullyPrivate": { - "message": "Ceci n'est pas un frontend complètement privé." - }, - "redirectType": { - "message": "Type de redirection", - "description": "used in the settings page" - }, - "embeddedVids": { - "message": "Frontend pour les vidéos intégrées", - "description": "used in the settings page" - }, - "cancel": { - "message": "Annuler", - "description": "used in instance_offline.html" - }, - "redirectionCanceled": { - "message": "Redirection annulée", - "description": "used in instance_offline.js" - }, - "copyRaw": { - "message": "Copier le lien original" - }, "onlyNotEmbedded": { "message": "seulement non intégré", "description": "used in the settings page" }, - "instanceIsOff": { - "message": "L'instance est hors ligne", - "description": "used in instance_offline.html" - }, - "unifySettings": { - "message": "Unifier les paramètres" - }, - "lbry": { - "message": "LBRY" - }, - "i2p": { - "message": "I2P" - }, - "testInstancesLatency": { - "message": "Tester la latence des instances" - }, - "twitter": { - "message": "Twitter", - "description": "used in the settings page" - }, - "tiktok": { - "message": "TikTok", - "description": "used in the settings page" - }, - "imgur": { - "message": "Imgur", - "description": "used in the settings page" - }, - "tor": { - "message": "Tor", - "description": "used in the settings page" - }, - "medium": { - "message": "Medium", - "description": "used in the settings page" - }, - "ytmusic": { - "message": "YT Music", + "addYourFavoriteInstances": { + "message": "Add your favorite instances", "description": "used in the settings page" }, - "loki": { - "message": "Lokinet" - }, - "protocolFallback": { - "message": "Retour au mode normal si aucune instance n’est disponible pour le protocole sélectionné" + "copyRaw": { + "message": "Copier le lien original" }, - "lbryDesktop": { - "message": "LBRY Bureau" + "copied": { + "message": "Copié" }, - "toggleTab": { - "message": "Activer les redirections dans cet onglet", + "redirectToOriginal": { + "message": "Redirect to original", "description": "Used in context menus when right clicking on a page/tab" }, "redirectLink": { "message": "Essayer de rediriger ce lien", "description": "Used in context menus when right clicking on a hyperlink" + }, + "about": { + "message": "About" } -} +} \ No newline at end of file diff --git a/src/_locales/gl/messages.json b/src/_locales/gl/messages.json index 7f809ab7..1bd0dc47 100644 --- a/src/_locales/gl/messages.json +++ b/src/_locales/gl/messages.json @@ -1,50 +1,26 @@ { - "ytmusic": { - "message": "YT Music", - "description": "used in the settings page" - }, "extensionName": { "message": "LibRedirect", "description": "name of the extension" }, + "extensionDescription": { + "message": "Un complemento do navegador que redirixe o tráfico cara alternativas amigables e respetuosas", + "description": "description of the extension" + }, + "switchInstance": { + "message": "Cambiar de Instancia", + "description": "used in manifest.json as shortcut description" + }, "settings": { "message": "Axustes", "description": "used in the popup" }, - "maps": { - "message": "Mapas", - "description": "used in the settings page" - }, - "sendFiles": { - "message": "Enviar Ficheiros", - "description": "used in the settings page" - }, - "youtube": { - "message": "YouTube", - "description": "used in the settings page" - }, - "instagram": { - "message": "Instagram", - "description": "used in the settings page" - }, - "twitter": { - "message": "Twitter", - "description": "used in the settings page" - }, - "imgur": { - "message": "Imgur", - "description": "used in the settings page" - }, - "wikipedia": { - "message": "Wikipedia", - "description": "used in the settings page" - }, - "peertube": { - "message": "PeerTube", + "general": { + "message": "Xeral", "description": "used in the settings page" }, - "system": { - "message": "Sistema", + "theme": { + "message": "Decorado", "description": "used in the settings page" }, "light": { @@ -55,12 +31,12 @@ "message": "Escuro", "description": "used in the settings page" }, - "autoRedirect": { - "message": "Auto-redirixir cando unha instancia está caída", + "auto": { + "message": "Auto", "description": "used in the settings page" }, - "exceptions": { - "message": "Excepcións", + "excludeFromRedirecting": { + "message": "Excluded from redirecting", "description": "used in the settings page" }, "updateInstances": { @@ -75,28 +51,16 @@ "message": "Exportar Axustes", "description": "used in the settings page" }, - "customPopup": { - "message": "Personalizar Emerxente", + "resetSettings": { + "message": "Restablecer Axustes", "description": "used in the settings page" }, "enable": { "message": "Activar", "description": "used in the settings page" }, - "protocol": { - "message": "Protocolo", - "description": "used in the settings page" - }, - "normal": { - "message": "Normal", - "description": "used in the settings page" - }, - "defaultInstances": { - "message": "Instancias por defecto", - "description": "used in the settings page" - }, - "toggleAll": { - "message": "Activar todo", + "showInPopup": { + "message": "Show in popup", "description": "used in the settings page" }, "frontend": { @@ -107,71 +71,14 @@ "message": "Nota: usa a busca con todo o seu potencial facendo que LibRedirect sexa o teu buscador por defecto.", "description": "used in the settings page" }, - "embeddedVids": { - "message": "Interface para Vídeos incrustados", + "redirectType": { + "message": "Tipo de Redirección", "description": "used in the settings page" }, "both": { "message": "ambos", "description": "used in the settings page" }, - "instanceIsOff": { - "message": "Instancia caída", - "description": "used in instance_offline.html" - }, - "redirectionCanceled": { - "message": "Redirección cancelada", - "description": "used in instance_offline.js" - }, - "copyRaw": { - "message": "Copiar en crú" - }, - "copied": { - "message": "Copiado" - }, - "extensionDescription": { - "message": "Un complemento do navegador que redirixe o tráfico cara alternativas amigables e respetuosas", - "description": "description of the extension" - }, - "general": { - "message": "Xeral", - "description": "used in the settings page" - }, - "search": { - "message": "Buscar", - "description": "used in the settings page" - }, - "translate": { - "message": "Traducir", - "description": "used in the settings page" - }, - "tiktok": { - "message": "TikTok", - "description": "used in the settings page" - }, - "lbry": { - "message": "LBRY" - }, - "switchInstance": { - "message": "Cambiar de Instancia", - "description": "used in manifest.json as shortcut description" - }, - "reddit": { - "message": "Reddit", - "description": "used in the settings page" - }, - "medium": { - "message": "Medium", - "description": "used in the settings page" - }, - "theme": { - "message": "Decorado", - "description": "used in the settings page" - }, - "redirectType": { - "message": "Tipo de Redirección", - "description": "used in the settings page" - }, "onlyEmbedded": { "message": "só incrustados", "description": "used in the settings page" @@ -180,53 +87,25 @@ "message": "non só incrustados", "description": "used in the settings page" }, - "tor": { - "message": "Tor", - "description": "used in the settings page" - }, - "resetSettings": { - "message": "Restablecer Axustes", - "description": "used in the settings page" - }, - "customInstances": { - "message": "Instancias personalizadas", + "addYourFavoriteInstances": { + "message": "Add your favorite instances", "description": "used in the settings page" }, - "notFullyPrivate": { - "message": "Esta interface non é totalmente privada." - }, - "instanceOffline": { - "message": "Esta instancia está caída, ímoste redirixir após", - "description": "used in instance_offline.html" - }, - "cancel": { - "message": "Cancelar", - "description": "used in instance_offline.html" - }, - "testInstancesLatency": { - "message": "Comprobar Latencia das instancias" - }, - "i2p": { - "message": "I2P" - }, - "unifySettings": { - "message": "Unificar Axustes" - }, - "loki": { - "message": "Lokinet" - }, - "protocolFallback": { - "message": "Volvar á versión normal se non hai instancias dispoñibles para o protocolo actual" + "copyRaw": { + "message": "Copiar en crú" }, "lbryDesktop": { "message": "Escritorio LBRY" }, - "toggleTab": { - "message": "Alterna as redireccións nesta pestana", + "redirectToOriginal": { + "message": "Redirect to original", "description": "Used in context menus when right clicking on a page/tab" }, "redirectLink": { "message": "Tenta redirixir a ista hiperligazón", "description": "Used in context menus when right clicking on a hyperlink" + }, + "about": { + "message": "About" } -} +} \ No newline at end of file diff --git a/src/_locales/hr/messages.json b/src/_locales/hr/messages.json index d07b7805..0c380e02 100644 --- a/src/_locales/hr/messages.json +++ b/src/_locales/hr/messages.json @@ -1,91 +1,78 @@ { - "tiktok": { - "message": "TikTok", - "description": "used in the settings page" + "extensionName": { + "message": "LibRedirect", + "description": "name of the extension" }, - "wikipedia": { - "message": "Wikipedija", - "description": "used in the settings page" + "extensionDescription": { + "message": "Web proširenje koje preusmjerava popularne web stranice na alternativna sučelja i pozadinske sustave prilagođene privatnosti", + "description": "description of the extension" }, - "ytmusic": { - "message": "YT Music", - "description": "used in the settings page" + "switchInstance": { + "message": "Zamijeni instancu", + "description": "used in manifest.json as shortcut description" }, - "medium": { - "message": "Medium", - "description": "used in the settings page" + "settings": { + "message": "Postavke", + "description": "used in the popup" }, - "lbry": { - "message": "LBRY" + "general": { + "message": "Opće", + "description": "used in the settings page" }, "theme": { "message": "Tema", "description": "used in the settings page" }, - "system": { - "message": "Sustav", - "description": "used in the settings page" - }, "light": { "message": "Svijetla", "description": "used in the settings page" }, - "updateInstances": { - "message": "Ažuriraj instance", + "dark": { + "message": "Tamna", "description": "used in the settings page" }, - "exportSettings": { - "message": "Izvezi postavke", + "auto": { + "message": "Auto", + "description": "used in the settings page" + }, + "excludeFromRedirecting": { + "message": "Excluded from redirecting", "description": "used in the settings page" }, - "protocol": { - "message": "Protokol", + "updateInstances": { + "message": "Ažuriraj instance", "description": "used in the settings page" }, "importSettings": { "message": "Uvezi postavke", "description": "used in the settings page" }, - "lbryDesktop": { - "message": "LBRY Desktop" - }, - "redirectLink": { - "message": "Pokušaj preusmjeriti ovu hiperpoveznicu", - "description": "Used in context menus when right clicking on a hyperlink" - }, - "protocolFallback": { - "message": "Koristi normalni protokol ako nijedna instanca nije dostupna za trenutačni protokol" - }, - "settings": { - "message": "Postavke", - "description": "used in the popup" + "exportSettings": { + "message": "Izvezi postavke", + "description": "used in the settings page" }, - "peertube": { - "message": "PeerTube", + "resetSettings": { + "message": "Obnovi postavke", "description": "used in the settings page" }, - "redirectionCanceled": { - "message": "Preusmjeravanje je otkazano", - "description": "used in instance_offline.js" + "enable": { + "message": "Aktiviraj", + "description": "used in the settings page" }, - "maps": { - "message": "Karte", + "showInPopup": { + "message": "Show in popup", "description": "used in the settings page" }, "frontend": { "message": "Sučelje", "description": "used in the settings page" }, - "translate": { - "message": "Prijevod", - "description": "used in the settings page" - }, - "onlyNotEmbedded": { - "message": "samo neugrađena", + "searchNote": { + "message": "Savjet: Koristi sav potencijal pretrage postavljanjem LibRedirecta kao zadane tražilice.", "description": "used in the settings page" }, - "embeddedVids": { - "message": "Sučelje ugrađenih videa", + "redirectType": { + "message": "Vrsta preusmjeravanja", "description": "used in the settings page" }, "both": { @@ -96,127 +83,29 @@ "message": "samo ugrađena", "description": "used in the settings page" }, - "instanceOffline": { - "message": "Ova instanca je nedostupna, bit ćeš preusmjeren/a nakon", - "description": "used in instance_offline.html" - }, - "cancel": { - "message": "Otkaži", - "description": "used in instance_offline.html" - }, - "instanceIsOff": { - "message": "Instanca nije dostupna", - "description": "used in instance_offline.html" - }, - "copied": { - "message": "Kopirano" - }, - "extensionDescription": { - "message": "Web proširenje koje preusmjerava popularne web stranice na alternativna sučelja i pozadinske sustave prilagođene privatnosti", - "description": "description of the extension" - }, - "youtube": { - "message": "YouTube", - "description": "used in the settings page" - }, - "imgur": { - "message": "Imgur", - "description": "used in the settings page" - }, - "search": { - "message": "Pretraga", - "description": "used in the settings page" - }, - "switchInstance": { - "message": "Zamijeni instancu", - "description": "used in manifest.json as shortcut description" - }, - "reddit": { - "message": "Reddit", - "description": "used in the settings page" - }, - "autoRedirect": { - "message": "Automatsko preusmjeravanje nedostupnih instanci na dostupne", - "description": "used in the settings page" - }, - "exceptions": { - "message": "Iznimke", - "description": "used in the settings page" - }, - "toggleAll": { - "message": "Uključi/isključi sve", - "description": "used in the settings page" - }, - "general": { - "message": "Opće", - "description": "used in the settings page" - }, - "sendFiles": { - "message": "Pošalji datoteke", - "description": "used in the settings page" - }, - "toggleTab": { - "message": "Uključi/isključi preusmjeravanja u ovoj kartici", - "description": "Used in context menus when right clicking on a page/tab" - }, - "instagram": { - "message": "Instagram", + "onlyNotEmbedded": { + "message": "samo neugrađena", "description": "used in the settings page" }, - "twitter": { - "message": "Twitter", + "addYourFavoriteInstances": { + "message": "Add your favorite instances", "description": "used in the settings page" }, "copyRaw": { "message": "Kopiraj original" }, - "extensionName": { - "message": "LibRedirect", - "description": "name of the extension" - }, - "customPopup": { - "message": "Prilagodi skočni prozor", - "description": "used in the settings page" - }, - "dark": { - "message": "Tamna", - "description": "used in the settings page" - }, - "notFullyPrivate": { - "message": "Ovo nije potpuno privatno sučelje." - }, - "testInstancesLatency": { - "message": "Testiraj latenciju instanci" - }, - "resetSettings": { - "message": "Obnovi postavke", - "description": "used in the settings page" - }, - "enable": { - "message": "Aktiviraj", - "description": "used in the settings page" - }, - "normal": { - "message": "Normalan", - "description": "used in the settings page" - }, - "redirectType": { - "message": "Vrsta preusmjeravanja", - "description": "used in the settings page" - }, - "defaultInstances": { - "message": "Zadane instance", - "description": "used in the settings page" + "copied": { + "message": "Kopirano" }, - "customInstances": { - "message": "Prilagođene instance", - "description": "used in the settings page" + "redirectToOriginal": { + "message": "Redirect to original", + "description": "Used in context menus when right clicking on a page/tab" }, - "searchNote": { - "message": "Savjet: Koristi sav potencijal pretrage postavljanjem LibRedirecta kao zadane tražilice.", - "description": "used in the settings page" + "redirectLink": { + "message": "Pokušaj preusmjeriti ovu hiperpoveznicu", + "description": "Used in context menus when right clicking on a hyperlink" }, - "unifySettings": { - "message": "Sjedini postavke" + "about": { + "message": "About" } -} +} \ No newline at end of file diff --git a/src/_locales/id/messages.json b/src/_locales/id/messages.json index e83789e5..2ca365ac 100644 --- a/src/_locales/id/messages.json +++ b/src/_locales/id/messages.json @@ -3,6 +3,10 @@ "message": "LibRedirect", "description": "name of the extension" }, + "extensionDescription": { + "message": "Ekstensi web yang mengalihkan situs-situs terkenal ke frontend dan backend alternatif yang menghargai privasi", + "description": "description of the extension" + }, "switchInstance": { "message": "Tukar Instansi", "description": "used in manifest.json as shortcut description" @@ -15,62 +19,10 @@ "message": "Umum", "description": "used in the settings page" }, - "search": { - "message": "Penelusuran", - "description": "used in the settings page" - }, - "translate": { - "message": "Terjemahan", - "description": "used in the settings page" - }, - "maps": { - "message": "Peta", - "description": "used in the settings page" - }, - "sendFiles": { - "message": "Pengiriman Berkas", - "description": "used in the settings page" - }, - "twitter": { - "message": "Twitter", - "description": "used in the settings page" - }, - "reddit": { - "message": "Reddit", - "description": "used in the settings page" - }, - "tiktok": { - "message": "TikTok", - "description": "used in the settings page" - }, - "imgur": { - "message": "Imgur", - "description": "used in the settings page" - }, - "ytmusic": { - "message": "YT Music", - "description": "used in the settings page" - }, - "wikipedia": { - "message": "Wikipedia", - "description": "used in the settings page" - }, - "peertube": { - "message": "PeerTube", - "description": "used in the settings page" - }, - "medium": { - "message": "Medium", - "description": "used in the settings page" - }, "theme": { "message": "Tema", "description": "used in the settings page" }, - "system": { - "message": "Sistem", - "description": "used in the settings page" - }, "light": { "message": "Terang", "description": "used in the settings page" @@ -79,12 +31,12 @@ "message": "Gelap", "description": "used in the settings page" }, - "autoRedirect": { - "message": "Tukar instansi luring ke instansi yang daring secara otomatis", + "auto": { + "message": "Auto", "description": "used in the settings page" }, - "exceptions": { - "message": "Pengecualian", + "excludeFromRedirecting": { + "message": "Excluded from redirecting", "description": "used in the settings page" }, "updateInstances": { @@ -99,131 +51,61 @@ "message": "Ekspor Pengaturan", "description": "used in the settings page" }, - "customPopup": { - "message": "Sesuaikan Munculan", - "description": "used in the settings page" - }, - "tor": { - "message": "Tor", + "resetSettings": { + "message": "Atur Ulang Pengaturan", "description": "used in the settings page" }, - "defaultInstances": { - "message": "Instansi Bawaan", + "enable": { + "message": "Aktifkan", "description": "used in the settings page" }, - "customInstances": { - "message": "Instansi Khusus", + "showInPopup": { + "message": "Show in popup", "description": "used in the settings page" }, "frontend": { "message": "Frontend", "description": "used in the settings page" }, - "notFullyPrivate": { - "message": "Ini bukan frontend yang sepenuhnya menghargai privasi." + "searchNote": { + "message": "Catatan: Gunakan penelusuran ke potensial yang penuh dengan menetapkan LibRedirrect sebagai mesin pencarian Anda.", + "description": "used in the settings page" }, "redirectType": { "message": "Jenis Pengalihan", "description": "used in the settings page" }, - "instanceOffline": { - "message": "Instansi ini luring, Anda akan dialihkan setelah", - "description": "used in instance_offline.html" - }, - "cancel": { - "message": "Batal", - "description": "used in instance_offline.html" - }, - "extensionDescription": { - "message": "Ekstensi web yang mengalihkan situs-situs terkenal ke frontend dan backend alternatif yang menghargai privasi", - "description": "description of the extension" - }, - "instanceIsOff": { - "message": "Instansi sedang luring", - "description": "used in instance_offline.html" - }, - "redirectionCanceled": { - "message": "Pengalihan dibatalkan", - "description": "used in instance_offline.js" - }, - "copied": { - "message": "Disalin" - }, - "lbry": { - "message": "LBRY" - }, - "i2p": { - "message": "I2P" - }, - "youtube": { - "message": "YouTube", - "description": "used in the settings page" - }, - "instagram": { - "message": "Instagram", - "description": "used in the settings page" - }, - "enable": { - "message": "Aktifkan", - "description": "used in the settings page" - }, - "normal": { - "message": "Biasa", - "description": "used in the settings page" - }, - "protocol": { - "message": "Protokol", + "both": { + "message": "keduanya", "description": "used in the settings page" }, - "resetSettings": { - "message": "Atur Ulang Pengaturan", + "onlyEmbedded": { + "message": "hanya tersemat", "description": "used in the settings page" }, - "toggleAll": { - "message": "Saklar semua", + "onlyNotEmbedded": { + "message": "hanya tidak tersemat", "description": "used in the settings page" }, - "embeddedVids": { - "message": "Frontend Video Tersemat", + "addYourFavoriteInstances": { + "message": "Add your favorite instances", "description": "used in the settings page" }, "copyRaw": { "message": "Salin Mentah" }, - "unifySettings": { - "message": "Satukan Pengaturan" - }, - "testInstancesLatency": { - "message": "Uji Coba Latensi Instansi" - }, - "lbryDesktop": { - "message": "LBRY Desktop" + "copied": { + "message": "Disalin" }, - "protocolFallback": { - "message": "Kembali ke biasa jika tidak ada instansi yang tersedia untuk protokol saat ini" + "redirectToOriginal": { + "message": "Redirect to original", + "description": "Used in context menus when right clicking on a page/tab" }, "redirectLink": { "message": "Coba mengalihkan hyperlink ini", "description": "Used in context menus when right clicking on a hyperlink" }, - "both": { - "message": "keduanya", - "description": "used in the settings page" - }, - "searchNote": { - "message": "Catatan: Gunakan penelusuran ke potensial yang penuh dengan menetapkan LibRedirrect sebagai mesin pencarian Anda.", - "description": "used in the settings page" - }, - "onlyNotEmbedded": { - "message": "hanya tidak tersemat", - "description": "used in the settings page" - }, - "onlyEmbedded": { - "message": "hanya tersemat", - "description": "used in the settings page" - }, - "toggleTab": { - "message": "Saklar pengalihan di tab ini", - "description": "Used in context menus when right clicking on a page/tab" + "about": { + "message": "About" } -} +} \ No newline at end of file diff --git a/src/_locales/it/messages.json b/src/_locales/it/messages.json index 30c9264c..568402e7 100644 --- a/src/_locales/it/messages.json +++ b/src/_locales/it/messages.json @@ -1,64 +1,28 @@ { - "settings": { - "message": "Impostazioni", - "description": "used in the popup" + "extensionName": { + "message": "LibRedirect", + "description": "name of the extension" + }, + "extensionDescription": { + "message": "Un'estensione per il browser che reindirizza i siti più popolari verso frontend e backend alternativi rispettosi della privacy", + "description": "description of the extension" }, "switchInstance": { "message": "Cambia istanza", "description": "used in manifest.json as shortcut description" }, + "settings": { + "message": "Impostazioni", + "description": "used in the popup" + }, "general": { "message": "Generali", "description": "used in the settings page" }, - "search": { - "message": "Ricerca", - "description": "used in the settings page" - }, - "translate": { - "message": "Traduttore", - "description": "used in the settings page" - }, - "maps": { - "message": "Mappe", - "description": "used in the settings page" - }, - "sendFiles": { - "message": "Invio di file", - "description": "used in the settings page" - }, - "youtube": { - "message": "YouTube", - "description": "used in the settings page" - }, - "instagram": { - "message": "Instagram", - "description": "used in the settings page" - }, - "ytmusic": { - "message": "YT Music", - "description": "used in the settings page" - }, - "peertube": { - "message": "PeerTube", - "description": "used in the settings page" - }, - "medium": { - "message": "Medium", - "description": "used in the settings page" - }, - "tor": { - "message": "Tor", - "description": "used in the settings page" - }, "theme": { "message": "Tema", "description": "used in the settings page" }, - "system": { - "message": "Sistema", - "description": "used in the settings page" - }, "light": { "message": "Chiaro", "description": "used in the settings page" @@ -67,12 +31,12 @@ "message": "Scuro", "description": "used in the settings page" }, - "autoRedirect": { - "message": "Reindirizza automaticamente le istanze offline verso quelle online", + "auto": { + "message": "Auto", "description": "used in the settings page" }, - "exceptions": { - "message": "Eccezioni", + "excludeFromRedirecting": { + "message": "Excluded from redirecting", "description": "used in the settings page" }, "updateInstances": { @@ -91,61 +55,26 @@ "message": "Ripristina impostazioni", "description": "used in the settings page" }, - "customPopup": { - "message": "Personalizza popup", - "description": "used in the settings page" - }, "enable": { "message": "Attiva", "description": "used in the settings page" }, - "protocol": { - "message": "Protocollo", - "description": "used in the settings page" - }, - "normal": { - "message": "Normale", - "description": "used in the settings page" - }, - "defaultInstances": { - "message": "Istanze predefinite", - "description": "used in the settings page" - }, - "customInstances": { - "message": "Istanze personalizzate", + "showInPopup": { + "message": "Show in popup", "description": "used in the settings page" }, - "toggleAll": { - "message": "Seleziona o deseleziona tutto", + "frontend": { + "message": "Frontend", "description": "used in the settings page" }, - "notFullyPrivate": { - "message": "Questo frontend non è completamente privato." - }, "searchNote": { "message": "Nota: imposta LibRedirect come motore di ricerca predefinito per sfruttare appieno il potenziale della ricerca.", "description": "used in the settings page" }, - "extensionName": { - "message": "LibRedirect", - "description": "name of the extension" - }, - "extensionDescription": { - "message": "Un'estensione per il browser che reindirizza i siti più popolari verso frontend e backend alternativi rispettosi della privacy", - "description": "description of the extension" - }, - "tiktok": { - "message": "TikTok", - "description": "used in the settings page" - }, "redirectType": { "message": "Tipo di reindirizzamento", "description": "used in the settings page" }, - "embeddedVids": { - "message": "Frontend per video incorporati", - "description": "used in the settings page" - }, "both": { "message": "entrambi", "description": "used in the settings page" @@ -158,75 +87,25 @@ "message": "solo non incorporati", "description": "used in the settings page" }, - "instanceOffline": { - "message": "Questa istanza è offline, verrai reindirizzato tra", - "description": "used in instance_offline.html" - }, - "cancel": { - "message": "Annulla", - "description": "used in instance_offline.html" - }, - "instanceIsOff": { - "message": "L'istanza è offline", - "description": "used in instance_offline.html" - }, - "redirectionCanceled": { - "message": "Reindirizzamento annullato", - "description": "used in instance_offline.js" - }, - "copied": { - "message": "Copiato" - }, - "lbry": { - "message": "LBRY" - }, - "i2p": { - "message": "I2P" - }, - "testInstancesLatency": { - "message": "Prova la latenza delle istanze" + "addYourFavoriteInstances": { + "message": "Add your favorite instances", + "description": "used in the settings page" }, "copyRaw": { "message": "Copia grezza" }, - "unifySettings": { - "message": "Unifica impostazioni" - }, - "imgur": { - "message": "Imgur", - "description": "used in the settings page" - }, - "twitter": { - "message": "Twitter", - "description": "used in the settings page" - }, - "reddit": { - "message": "Reddit", - "description": "used in the settings page" - }, - "wikipedia": { - "message": "Wikipedia", - "description": "used in the settings page" - }, - "frontend": { - "message": "Frontend", - "description": "used in the settings page" - }, - "loki": { - "message": "Lokinet" - }, - "protocolFallback": { - "message": "Usa il protocollo normale se non sono disponibili istanze per quello corrente" - }, - "lbryDesktop": { - "message": "LBRY Desktop" + "copied": { + "message": "Copiato" }, - "toggleTab": { - "message": "Attiva/disattiva reindirizzamenti in questa scheda", + "redirectToOriginal": { + "message": "Redirect to original", "description": "Used in context menus when right clicking on a page/tab" }, "redirectLink": { "message": "Prova a reindirizzare questo collegamento", "description": "Used in context menus when right clicking on a hyperlink" + }, + "about": { + "message": "About" } -} +} \ No newline at end of file diff --git a/src/_locales/ja/messages.json b/src/_locales/ja/messages.json index bfae80c9..cce2e4e7 100644 --- a/src/_locales/ja/messages.json +++ b/src/_locales/ja/messages.json @@ -19,74 +19,10 @@ "message": "一般", "description": "used in the settings page" }, - "search": { - "message": "検索", - "description": "used in the settings page" - }, - "translate": { - "message": "翻訳", - "description": "used in the settings page" - }, - "maps": { - "message": "地図", - "description": "used in the settings page" - }, - "sendFiles": { - "message": "ファイルの送信", - "description": "used in the settings page" - }, - "youtube": { - "message": "YouTube", - "description": "used in the settings page" - }, - "instagram": { - "message": "Instagram", - "description": "used in the settings page" - }, - "twitter": { - "message": "Twitter", - "description": "used in the settings page" - }, - "reddit": { - "message": "Reddit", - "description": "used in the settings page" - }, - "tiktok": { - "message": "TikTok", - "description": "used in the settings page" - }, - "ytmusic": { - "message": "YT Music", - "description": "used in the settings page" - }, - "imgur": { - "message": "Imgur", - "description": "used in the settings page" - }, - "wikipedia": { - "message": "Wikipedia", - "description": "used in the settings page" - }, - "peertube": { - "message": "PeerTube", - "description": "used in the settings page" - }, - "medium": { - "message": "Medium", - "description": "used in the settings page" - }, - "tor": { - "message": "Tor", - "description": "used in the settings page" - }, "theme": { "message": "テーマ", "description": "used in the settings page" }, - "system": { - "message": "システムに従う", - "description": "used in the settings page" - }, "light": { "message": "ライト", "description": "used in the settings page" @@ -95,12 +31,12 @@ "message": "ダーク", "description": "used in the settings page" }, - "autoRedirect": { - "message": "インスタンスがオフラインの時に自動的にリダイレクトする", + "auto": { + "message": "Auto", "description": "used in the settings page" }, - "exceptions": { - "message": "例外", + "excludeFromRedirecting": { + "message": "Excluded from redirecting", "description": "used in the settings page" }, "updateInstances": { @@ -119,41 +55,18 @@ "message": "設定をリセット", "description": "used in the settings page" }, - "customPopup": { - "message": "ポップアップのカスタマイズ", - "description": "used in the settings page" - }, "enable": { "message": "有効化", "description": "used in the settings page" }, - "protocol": { - "message": "プロトコル", - "description": "used in the settings page" - }, - "normal": { - "message": "通常", - "description": "used in the settings page" - }, - "defaultInstances": { - "message": "デフォルトのインスタンス", - "description": "used in the settings page" - }, - "customInstances": { - "message": "カスタム インスタンス", - "description": "used in the settings page" - }, - "toggleAll": { - "message": "すべて選択", + "showInPopup": { + "message": "Show in popup", "description": "used in the settings page" }, "frontend": { "message": "フロントエンド", "description": "used in the settings page" }, - "notFullyPrivate": { - "message": "これはあまりプライバシー・フレンドリーなフロントエンドではありません。" - }, "searchNote": { "message": "注意: 「検索」を利用するには、LibRedirect をデフォルトの検索エンジンとして設定してください。", "description": "used in the settings page" @@ -162,10 +75,6 @@ "message": "リダイレクトタイプ", "description": "used in the settings page" }, - "embeddedVids": { - "message": "埋め込み型動画のフロントエンド", - "description": "used in the settings page" - }, "both": { "message": "両方", "description": "used in the settings page" @@ -178,21 +87,9 @@ "message": "非埋め込み型のみ", "description": "used in the settings page" }, - "instanceOffline": { - "message": "このインスタンスはオフラインです。", - "description": "used in instance_offline.html" - }, - "cancel": { - "message": "キャンセル", - "description": "used in instance_offline.html" - }, - "instanceIsOff": { - "message": "インスタンスがオフラインです", - "description": "used in instance_offline.html" - }, - "redirectionCanceled": { - "message": "リダイレクトをキャンセル", - "description": "used in instance_offline.js" + "addYourFavoriteInstances": { + "message": "Add your favorite instances", + "description": "used in the settings page" }, "copyRaw": { "message": "生データをコピー" @@ -200,16 +97,15 @@ "copied": { "message": "コピーしました" }, - "unifySettings": { - "message": "設定の統一" - }, - "lbry": { - "message": "LBRY" + "redirectToOriginal": { + "message": "Redirect to original", + "description": "Used in context menus when right clicking on a page/tab" }, - "i2p": { - "message": "I2P" + "redirectLink": { + "message": "Attempt to redirect this hyperlink", + "description": "Used in context menus when right clicking on a hyperlink" }, - "testInstancesLatency": { - "message": "インスタンスのレイテンシをテストする" + "about": { + "message": "About" } -} +} \ No newline at end of file diff --git a/src/_locales/ko/messages.json b/src/_locales/ko/messages.json index 53cfcc13..f4a2a455 100644 --- a/src/_locales/ko/messages.json +++ b/src/_locales/ko/messages.json @@ -3,6 +3,10 @@ "message": "LibRedirect", "description": "name of the extension" }, + "extensionDescription": { + "message": "A web extension that redirects popular sites to alternative privacy-friendly frontends and backends", + "description": "description of the extension" + }, "switchInstance": { "message": "인스턴스 바꾸기", "description": "used in manifest.json as shortcut description" @@ -15,48 +19,24 @@ "message": "일반", "description": "used in the settings page" }, - "search": { - "message": "검색", - "description": "used in the settings page" - }, - "translate": { - "message": "번역", - "description": "used in the settings page" - }, - "ytmusic": { - "message": "YT Music", - "description": "used in the settings page" - }, - "imgur": { - "message": "Imgur", - "description": "used in the settings page" - }, - "wikipedia": { - "message": "Wikipedia", - "description": "used in the settings page" - }, - "peertube": { - "message": "PeerTube", + "theme": { + "message": "테마", "description": "used in the settings page" }, - "medium": { - "message": "Medium", + "light": { + "message": "밝음", "description": "used in the settings page" }, - "tor": { - "message": "Tor", + "dark": { + "message": "어두움", "description": "used in the settings page" }, - "theme": { - "message": "테마", + "auto": { + "message": "Auto", "description": "used in the settings page" }, - "system": { - "message": "시스템", - "description": "used in the settings page" - }, - "light": { - "message": "밝음", + "excludeFromRedirecting": { + "message": "Excluded from redirecting", "description": "used in the settings page" }, "updateInstances": { @@ -71,129 +51,61 @@ "message": "설정 내보내기", "description": "used in the settings page" }, - "enable": { - "message": "활성화", - "description": "used in the settings page" - }, - "protocol": { - "message": "프로토콜", - "description": "used in the settings page" - }, - "normal": { - "message": "일반", + "resetSettings": { + "message": "설정 초기화", "description": "used in the settings page" }, - "defaultInstances": { - "message": "기본 인스턴스", + "enable": { + "message": "활성화", "description": "used in the settings page" }, - "customInstances": { - "message": "사용자 인스턴스", + "showInPopup": { + "message": "Show in popup", "description": "used in the settings page" }, "frontend": { "message": "프론트엔드", "description": "used in the settings page" }, - "youtube": { - "message": "YouTube", + "searchNote": { + "message": "안내: LibRedirect를 기본 검색 엔진으로 만들면 완벽히 사용할 수 있습니다.", "description": "used in the settings page" }, - "testInstancesLatency": { - "message": "인스턴스 지연 시간 시험" - }, "redirectType": { "message": "리다이렉트 종류", "description": "used in the settings page" }, - "onlyEmbedded": { - "message": "임베디드 된 것만", - "description": "used in the settings page" - }, - "onlyNotEmbedded": { - "message": "임베디드 안된 것만", - "description": "used in the settings page" - }, - "instanceOffline": { - "message": "이 인스턴스는 오프라인입니다, 다음 초 후에 리다이렉트됩니다:", - "description": "used in instance_offline.html" - }, - "notFullyPrivate": { - "message": "완전한 개인 프론트엔드가 아닙니다." - }, - "searchNote": { - "message": "안내: LibRedirect를 기본 검색 엔진으로 만들면 완벽히 사용할 수 있습니다.", - "description": "used in the settings page" - }, "both": { "message": "둘 다", "description": "used in the settings page" }, - "embeddedVids": { - "message": "임베디드된 동영상 프론트엔드", - "description": "used in the settings page" - }, - "unifySettings": { - "message": "설정 통일하기" - }, - "maps": { - "message": "지도", - "description": "used in the settings page" - }, - "sendFiles": { - "message": "파일 전송", - "description": "used in the settings page" - }, - "instagram": { - "message": "Instagram", - "description": "used in the settings page" - }, - "exceptions": { - "message": "예외", - "description": "used in the settings page" - }, - "resetSettings": { - "message": "설정 초기화", - "description": "used in the settings page" - }, - "customPopup": { - "message": "팝업 사용자 설정", - "description": "used in the settings page" - }, - "dark": { - "message": "어두움", + "onlyEmbedded": { + "message": "임베디드 된 것만", "description": "used in the settings page" }, - "autoRedirect": { - "message": "오프라인 인스터스를 온라인으로 자동 리다이렉트", + "onlyNotEmbedded": { + "message": "임베디드 안된 것만", "description": "used in the settings page" }, - "toggleAll": { - "message": "전체 전환", + "addYourFavoriteInstances": { + "message": "Add your favorite instances", "description": "used in the settings page" }, - "instanceIsOff": { - "message": "인스턴스 오프라인", - "description": "used in instance_offline.html" - }, - "lbry": { - "message": "LBRY" - }, - "i2p": { - "message": "I2P" - }, - "cancel": { - "message": "취소", - "description": "used in instance_offline.html" - }, - "redirectionCanceled": { - "message": "리다이렉션 취소됨", - "description": "used in instance_offline.js" - }, "copyRaw": { "message": "Raw 복사" }, "copied": { "message": "복사됨" + }, + "redirectToOriginal": { + "message": "Redirect to original", + "description": "Used in context menus when right clicking on a page/tab" + }, + "redirectLink": { + "message": "Attempt to redirect this hyperlink", + "description": "Used in context menus when right clicking on a hyperlink" + }, + "about": { + "message": "About" } -} +} \ No newline at end of file diff --git a/src/_locales/nb_NO/messages.json b/src/_locales/nb_NO/messages.json index f439a0c7..a0527b98 100644 --- a/src/_locales/nb_NO/messages.json +++ b/src/_locales/nb_NO/messages.json @@ -1,50 +1,42 @@ { - "sendFiles": { - "message": "Send filer", - "description": "used in the settings page" - }, - "youtube": { - "message": "YouTube", - "description": "used in the settings page" - }, - "instagram": { - "message": "Instagram", - "description": "used in the settings page" + "extensionName": { + "message": "LibRedirect", + "description": "name of the extension" }, - "reddit": { - "message": "Reddit", - "description": "used in the settings page" + "extensionDescription": { + "message": "En vev-utvidelse som videresender populære sider til alternative personvernsrespekterende grenseflater og bakender", + "description": "description of the extension" }, - "tiktok": { - "message": "TikTok", - "description": "used in the settings page" + "switchInstance": { + "message": "Bytt instans", + "description": "used in manifest.json as shortcut description" }, - "wikipedia": { - "message": "Wikipedia", - "description": "used in the settings page" + "settings": { + "message": "Innstillinger", + "description": "used in the popup" }, - "peertube": { - "message": "PeerTube", + "general": { + "message": "Generelt", "description": "used in the settings page" }, - "medium": { - "message": "Medium", + "theme": { + "message": "Drakt", "description": "used in the settings page" }, - "tor": { - "message": "Tor", + "light": { + "message": "Lys", "description": "used in the settings page" }, - "theme": { - "message": "Drakt", + "dark": { + "message": "Mørk", "description": "used in the settings page" }, - "system": { - "message": "System", + "auto": { + "message": "Auto", "description": "used in the settings page" }, - "exceptions": { - "message": "Unntak", + "excludeFromRedirecting": { + "message": "Excluded from redirecting", "description": "used in the settings page" }, "updateInstances": { @@ -67,98 +59,26 @@ "message": "Skru på", "description": "used in the settings page" }, - "protocol": { - "message": "Protokoll", - "description": "used in the settings page" - }, - "customInstances": { - "message": "Egendefinerte instanser", - "description": "used in the settings page" - }, - "defaultInstances": { - "message": "Forvalgte instanser", - "description": "used in the settings page" - }, - "toggleAll": { - "message": "Veksle alle", + "showInPopup": { + "message": "Show in popup", "description": "used in the settings page" }, "frontend": { "message": "Grenseflate", "description": "used in the settings page" }, - "notFullyPrivate": { - "message": "Dette er ikke en helt privat grenseflate." + "searchNote": { + "message": "Merk: For å bruke søket til dets fulle kan du gjøre LibRedirect til din forvalgte søkemotor", + "description": "used in the settings page" }, "redirectType": { "message": "Videresendingstype", "description": "used in the settings page" }, - "extensionName": { - "message": "LibRedirect", - "description": "name of the extension" - }, - "switchInstance": { - "message": "Bytt instans", - "description": "used in manifest.json as shortcut description" - }, - "settings": { - "message": "Innstillinger", - "description": "used in the popup" - }, - "embeddedVids": { - "message": "Grenseflate for innebygde videoer", - "description": "used in the settings page" - }, "both": { "message": "begge", "description": "used in the settings page" }, - "extensionDescription": { - "message": "En vev-utvidelse som videresender populære sider til alternative personvernsrespekterende grenseflater og bakender", - "description": "description of the extension" - }, - "ytmusic": { - "message": "YT Music", - "description": "used in the settings page" - }, - "imgur": { - "message": "Imgur", - "description": "used in the settings page" - }, - "customPopup": { - "message": "Tilpass oppsprett", - "description": "used in the settings page" - }, - "normal": { - "message": "Normal", - "description": "used in the settings page" - }, - "autoRedirect": { - "message": "Videresend automatisk fra instanser som er nede", - "description": "used in the settings page" - }, - "cancel": { - "message": "Avbryt", - "description": "used in instance_offline.html" - }, - "instanceIsOff": { - "message": "Instansen er nede", - "description": "used in instance_offline.html" - }, - "redirectionCanceled": { - "message": "Videresending avbrutt", - "description": "used in instance_offline.js" - }, - "copied": { - "message": "Kopiert" - }, - "testInstancesLatency": { - "message": "Test instanssvartid" - }, - "i2p": { - "message": "I2P" - }, "onlyEmbedded": { "message": "kun innebygde", "description": "used in the settings page" @@ -167,55 +87,25 @@ "message": "kun ikke-innebygde", "description": "used in the settings page" }, - "instanceOffline": { - "message": "Denne instansen er nede. Du vil bli videresendt etter", - "description": "used in instance_offline.html" + "addYourFavoriteInstances": { + "message": "Add your favorite instances", + "description": "used in the settings page" }, "copyRaw": { "message": "Kopier originallenke" }, - "lbry": { - "message": "LBRY" - }, - "unifySettings": { - "message": "Foren innstillinger" - }, - "search": { - "message": "Søk", - "description": "used in the settings page" - }, - "maps": { - "message": "Kart", - "description": "used in the settings page" - }, - "general": { - "message": "Generelt", - "description": "used in the settings page" - }, - "twitter": { - "message": "Twitter", - "description": "used in the settings page" - }, - "translate": { - "message": "Oversett", - "description": "used in the settings page" - }, - "light": { - "message": "Lys", - "description": "used in the settings page" - }, - "dark": { - "message": "Mørk", - "description": "used in the settings page" + "copied": { + "message": "Kopiert" }, - "searchNote": { - "message": "Merk: For å bruke søket til dets fulle kan du gjøre LibRedirect til din forvalgte søkemotor", - "description": "used in the settings page" + "redirectToOriginal": { + "message": "Redirect to original", + "description": "Used in context menus when right clicking on a page/tab" }, - "lbryDesktop": { - "message": "LBRY-skrivebord" + "redirectLink": { + "message": "Attempt to redirect this hyperlink", + "description": "Used in context menus when right clicking on a hyperlink" }, - "protocolFallback": { - "message": "Gå tilbake til normal hvis ingen instanser er tilgjengelige for nåværende protokoll" + "about": { + "message": "About" } -} +} \ No newline at end of file diff --git a/src/_locales/nl/messages.json b/src/_locales/nl/messages.json index f9c331bb..5315f807 100644 --- a/src/_locales/nl/messages.json +++ b/src/_locales/nl/messages.json @@ -1,64 +1,12 @@ { - "light": { - "message": "Licht", - "description": "used in the settings page" - }, - "system": { - "message": "Systeem", - "description": "used in the settings page" - }, - "customInstances": { - "message": "Aangepaste instanties", - "description": "used in the settings page" - }, - "dark": { - "message": "Donker", - "description": "used in the settings page" - }, - "updateInstances": { - "message": "Instantielijst bijwerken", - "description": "used in the settings page" - }, - "resetSettings": { - "message": "Instellingen herstarten", - "description": "used in the settings page" - }, - "customPopup": { - "message": "Pop-up venster aanpassen", - "description": "used in the settings page" - }, - "normal": { - "message": "Normaal", - "description": "used in the settings page" - }, - "defaultInstances": { - "message": "Standaardinstanties", - "description": "used in the settings page" - }, - "toggleAll": { - "message": "Alles schakelen", - "description": "used in the settings page" - }, - "frontend": { - "message": "Front-end", - "description": "used in the settings page" - }, - "autoRedirect": { - "message": "Offline instanties automatisch doorverwijzen naar online instanties", - "description": "used in the settings page" - }, - "importSettings": { - "message": "Instellingen importeren", - "description": "used in the settings page" - }, - "protocol": { - "message": "Protocol", - "description": "used in the settings page" - }, "extensionName": { "message": "LibRedirect", "description": "name of the extension" }, + "extensionDescription": { + "message": "Een webextensie die populaire sites doorverwijst naar alternatieve privacy-vriendelijke frontends en backends", + "description": "description of the extension" + }, "switchInstance": { "message": "Schakelen tussen instanties", "description": "used in manifest.json as shortcut description" @@ -71,83 +19,54 @@ "message": "Algemeen", "description": "used in the settings page" }, - "search": { - "message": "Zoeken", - "description": "used in the settings page" - }, - "translate": { - "message": "Vertalen", - "description": "used in the settings page" - }, - "maps": { - "message": "Kaarten", - "description": "used in the settings page" - }, - "sendFiles": { - "message": "Bestanden Verzenden", - "description": "used in the settings page" - }, - "youtube": { - "message": "YouTube", + "theme": { + "message": "Thema", "description": "used in the settings page" }, - "instagram": { - "message": "Instagram", + "light": { + "message": "Licht", "description": "used in the settings page" }, - "twitter": { - "message": "Twitter", + "dark": { + "message": "Donker", "description": "used in the settings page" }, - "reddit": { - "message": "Reddit", + "auto": { + "message": "Auto", "description": "used in the settings page" }, - "tiktok": { - "message": "TikTok", + "excludeFromRedirecting": { + "message": "Excluded from redirecting", "description": "used in the settings page" }, - "ytmusic": { - "message": "YT Music", + "updateInstances": { + "message": "Instantielijst bijwerken", "description": "used in the settings page" }, - "imgur": { - "message": "Imgur", + "importSettings": { + "message": "Instellingen importeren", "description": "used in the settings page" }, - "wikipedia": { - "message": "Wikipedia", + "exportSettings": { + "message": "Instellingen exporteren", "description": "used in the settings page" }, - "peertube": { - "message": "PeerTube", + "resetSettings": { + "message": "Instellingen herstarten", "description": "used in the settings page" }, - "medium": { - "message": "Medium", + "enable": { + "message": "Inschakelen", "description": "used in the settings page" }, - "theme": { - "message": "Thema", + "showInPopup": { + "message": "Show in popup", "description": "used in the settings page" }, - "extensionDescription": { - "message": "Een webextensie die populaire sites doorverwijst naar alternatieve privacy-vriendelijke frontends en backends", - "description": "description of the extension" - }, - "copied": { - "message": "Gekopieerd" - }, - "lbry": { - "message": "LBRY" - }, - "exceptions": { - "message": "Uitzonderingen", + "frontend": { + "message": "Front-end", "description": "used in the settings page" }, - "notFullyPrivate": { - "message": "Dit is geen volledig privé front-end." - }, "searchNote": { "message": "Tip: gebruik de zoekfunctie ten volle door van LibRedirect uw standaardzoekmachine te maken.", "description": "used in the settings page" @@ -156,10 +75,6 @@ "message": "Omleidingstype", "description": "used in the settings page" }, - "embeddedVids": { - "message": "Ingesloten Video's Front-end", - "description": "used in the settings page" - }, "both": { "message": "beide", "description": "used in the settings page" @@ -172,51 +87,25 @@ "message": "alleen niet-ingesloten", "description": "used in the settings page" }, - "instanceOffline": { - "message": "Deze instantie is offline, u wordt doorverwezen nadat", - "description": "used in instance_offline.html" - }, - "cancel": { - "message": "Annuleren", - "description": "used in instance_offline.html" - }, - "instanceIsOff": { - "message": "Instantie is offline", - "description": "used in instance_offline.html" - }, - "protocolFallback": { - "message": "Val terug naar de normale site als er geen instanties beschikbaar zijn voor het huidige protocol" - }, - "exportSettings": { - "message": "Instellingen exporteren", - "description": "used in the settings page" - }, - "enable": { - "message": "Inschakelen", + "addYourFavoriteInstances": { + "message": "Add your favorite instances", "description": "used in the settings page" }, - "testInstancesLatency": { - "message": "Controleren op instantievertragingen" - }, "copyRaw": { "message": "Onbewerkte code kopiëren" }, - "redirectionCanceled": { - "message": "Doorverwijzing geannuleerd", - "description": "used in instance_offline.js" - }, - "unifySettings": { - "message": "Instellingen verenigen" - }, - "lbryDesktop": { - "message": "LBRY Desktop" + "copied": { + "message": "Gekopieerd" }, - "toggleTab": { - "message": "Schakel omleidingen in dit tabblad", + "redirectToOriginal": { + "message": "Redirect to original", "description": "Used in context menus when right clicking on a page/tab" }, "redirectLink": { "message": "Probeer deze hyperlink door te verwijzen", "description": "Used in context menus when right clicking on a hyperlink" + }, + "about": { + "message": "About" } -} +} \ No newline at end of file diff --git a/src/_locales/pl/messages.json b/src/_locales/pl/messages.json index 0eb9364c..de7e5500 100644 --- a/src/_locales/pl/messages.json +++ b/src/_locales/pl/messages.json @@ -3,6 +3,10 @@ "message": "LibRedirect", "description": "name of the extension" }, + "extensionDescription": { + "message": "Rozszerzenie, które przekierowuje popularne witryny do alternatywnych, szanujących prywatność frontendów i backendów", + "description": "description of the extension" + }, "switchInstance": { "message": "Przełącz instancję", "description": "used in manifest.json as shortcut description" @@ -79,8 +83,8 @@ "message": "Automatyczne przekierowywanie instancji offline do online", "description": "used in the settings page" }, - "exceptions": { - "message": "Wyjątki", + "excludeFromRedirecting": { + "message": "Excluded from redirecting", "description": "used in the settings page" }, "updateInstances": { @@ -127,17 +131,14 @@ "message": "Własne instancje", "description": "used in the settings page" }, - "toggleAll": { - "message": "Przełącz wszystkie", + "showInPopup": { + "message": "Show in popup", "description": "used in the settings page" }, "frontend": { "message": "Frontend", "description": "used in the settings page" }, - "notFullyPrivate": { - "message": "To nie jest w pełni prywatny frontend." - }, "searchNote": { "message": "Uwaga: wykorzystaj w pełni potencjał wyszukiwania, czyniąc LibRedirect swoją domyślną wyszukiwarką.", "description": "used in the settings page" @@ -184,8 +185,8 @@ "message": "Mapy", "description": "used in the settings page" }, - "enable": { - "message": "Włącz", + "addYourFavoriteInstances": { + "message": "Add your favorite instances", "description": "used in the settings page" }, "extensionDescription": { @@ -200,9 +201,8 @@ "message": "Protokół", "description": "used in the settings page" }, - "search": { - "message": "Szukaj", - "description": "used in the settings page" + "copied": { + "message": "Skopiowano" }, "system": { "message": "Systemowy", @@ -229,4 +229,4 @@ "protocolFallback": { "message": "Powróć do normalnego, jeśli żadne instancje nie są dostępne dla bieżącego protokołu" } -} +} \ No newline at end of file diff --git a/src/_locales/pt_BR/messages.json b/src/_locales/pt_BR/messages.json index 93b8c747..b80550f9 100644 --- a/src/_locales/pt_BR/messages.json +++ b/src/_locales/pt_BR/messages.json @@ -90,10 +90,6 @@ "message": "Tema", "description": "Utilizado na página de configurações" }, - "system": { - "message": "Sistema", - "description": "Utilizado na página de configurações" - }, "light": { "message": "Claro", "description": "Utilizado na página de configurações" @@ -106,9 +102,9 @@ "message": "Redirecionar automaticamente das instâncias que estão desconectadas (off-line) para as conectadas (on-line)", "description": "Utilizado na página de configurações" }, - "exceptions": { - "message": "Exceções", - "description": "Utilizado na página de configurações" + "excludeFromRedirecting": { + "message": "Excluded from redirecting", + "description": "used in the settings page" }, "updateInstances": { "message": "Atualizar as instâncias", @@ -158,9 +154,6 @@ "message": "Interface gráfica", "description": "Utilizado na página de configurações" }, - "notFullyPrivate": { - "message": "Esta não é uma interface gráfica totalmente privada." - }, "searchNote": { "message": "Observação: utilize a pesquisa do LibRedirect com todo o seu potencial para torná-lo o seu mecanismo de pesquisa padrão.", "description": "Utilizado na página de configurações" @@ -209,10 +202,11 @@ "testInstancesLatency": { "message": "Testar a latência das instâncias" }, - "protocolFallback": { - "message": "Retornar ao normal se não houver outras instâncias disponíveis para o protocolo atual" + "redirectLink": { + "message": "Attempt to redirect this hyperlink", + "description": "Used in context menus when right clicking on a hyperlink" }, - "lbryDesktop": { - "message": "LBRY Desktop" + "about": { + "message": "About" } -} +} \ No newline at end of file diff --git a/src/_locales/ru/messages.json b/src/_locales/ru/messages.json index 403ac15f..97a6e412 100644 --- a/src/_locales/ru/messages.json +++ b/src/_locales/ru/messages.json @@ -7,13 +7,13 @@ "message": "LibRedirect", "description": "name of the extension" }, - "protocol": { - "message": "Протокол", - "description": "used in the settings page" + "extensionDescription": { + "message": "Веб-расширение, которое перенаправляет популярные сайты на альтернативные фронтенды и бэкенды, обеспечивающие конфиденциальность", + "description": "description of the extension" }, - "normal": { - "message": "Нормальный", - "description": "used in the settings page" + "switchInstance": { + "message": "Переключить экземпляр", + "description": "used in manifest.json as shortcut description" }, "settings": { "message": "Настройки", @@ -23,44 +23,28 @@ "message": "Общее", "description": "used in the settings page" }, - "search": { - "message": "Поиск", - "description": "used in the settings page" - }, - "translate": { - "message": "Перевод", - "description": "used in the settings page" - }, - "maps": { - "message": "Карты", - "description": "used in the settings page" - }, - "sendFiles": { - "message": "Отправка файлов", - "description": "used in the settings page" - }, - "youtube": { - "message": "YouTube", + "theme": { + "message": "Тема", "description": "used in the settings page" }, - "tiktok": { - "message": "TikTok", + "light": { + "message": "Светлая", "description": "used in the settings page" }, - "ytmusic": { - "message": "YT Music", + "dark": { + "message": "Тёмная", "description": "used in the settings page" }, - "imgur": { - "message": "Imgur", + "auto": { + "message": "Auto", "description": "used in the settings page" }, - "wikipedia": { - "message": "Wikipedia", + "excludeFromRedirecting": { + "message": "Excluded from redirecting", "description": "used in the settings page" }, - "peertube": { - "message": "PeerTube", + "updateInstances": { + "message": "Обновить экземпляры", "description": "used in the settings page" }, "importSettings": { @@ -75,8 +59,20 @@ "message": "Сброс настроек", "description": "used in the settings page" }, - "customPopup": { - "message": "Настроить всплывающее окно", + "enable": { + "message": "Включить", + "description": "used in the settings page" + }, + "showInPopup": { + "message": "Show in popup", + "description": "used in the settings page" + }, + "frontend": { + "message": "Фронтенд", + "description": "used in the settings page" + }, + "searchNote": { + "message": "Примечание: Используйте поиск в полной мере, сделав LibRedirect поисковой системой по умолчанию.", "description": "used in the settings page" }, "redirectType": { @@ -95,40 +91,8 @@ "message": "только не встроеные", "description": "used in the settings page" }, - "instanceOffline": { - "message": "Этот экземпляр находится в автономном режиме, вы будете перенаправлены после", - "description": "used in instance_offline.html" - }, - "cancel": { - "message": "Отмена", - "description": "used in instance_offline.html" - }, - "instanceIsOff": { - "message": "Экземпляр не в сети", - "description": "used in instance_offline.html" - }, - "redirectionCanceled": { - "message": "Перенаправление отменено", - "description": "used in instance_offline.js" - }, - "switchInstance": { - "message": "Переключить экземпляр", - "description": "used in manifest.json as shortcut description" - }, - "autoRedirect": { - "message": "Автоматическое перенаправление на экземпляров находящихся в сети", - "description": "used in the settings page" - }, - "updateInstances": { - "message": "Обновить экземпляры", - "description": "used in the settings page" - }, - "defaultInstances": { - "message": "Экземпляры по умолчанию", - "description": "used in the settings page" - }, - "customInstances": { - "message": "Пользовательские экземпляры", + "addYourFavoriteInstances": { + "message": "Add your favorite instances", "description": "used in the settings page" }, "embeddedVids": { @@ -219,14 +183,7 @@ "message": "Попытаться перенаправить эту ссылку", "description": "Used in context menus when right clicking on a hyperlink" }, - "lbryDesktop": { - "message": "" - }, - "toggleTab": { - "message": "Переключить перенаправление в этой вкладке", - "description": "Used in context menus when right clicking on a page/tab" - }, - "protocolFallback": { - "message": "Вернуться к обычному протоколу если для текущего нет доступных экземпляров" + "about": { + "message": "About" } -} +} \ No newline at end of file diff --git a/src/_locales/sr/messages.json b/src/_locales/sr/messages.json index 23483059..567eabbe 100644 --- a/src/_locales/sr/messages.json +++ b/src/_locales/sr/messages.json @@ -1,33 +1,46 @@ { + "extensionName": { + "message": "LibRedirect", + "description": "name of the extension" + }, "extensionDescription": { "message": "Веб проширница која преусмерава познате сајтове на према алтернативним сучељима и позадинским страницама прилагођенима приватности", "description": "description of the extension" }, - "sendFiles": { - "message": "Пошаљите датотеке", - "description": "used in the settings page" + "switchInstance": { + "message": "Пребаци инстанцу", + "description": "used in manifest.json as shortcut description" }, - "toggleAll": { - "message": "Укључите/Искључите све", - "description": "used in the settings page" + "settings": { + "message": "Подешавања", + "description": "used in the popup" }, - "imgur": { - "message": "Imgur", + "general": { + "message": "Општенито", "description": "used in the settings page" }, "theme": { "message": "Тема", "description": "used in the settings page" }, - "embeddedVids": { - "message": "Сучеље Уграђених Видеозаписа", + "light": { + "message": "Светла", "description": "used in the settings page" }, - "unifySettings": { - "message": "Уједините подешавања" + "dark": { + "message": "Мрачна", + "description": "used in the settings page" + }, + "auto": { + "message": "Auto", + "description": "used in the settings page" }, - "system": { - "message": "Сустав", + "excludeFromRedirecting": { + "message": "Excluded from redirecting", + "description": "used in the settings page" + }, + "updateInstances": { + "message": "Ажурирајте инстанце", "description": "used in the settings page" }, "importSettings": { @@ -38,33 +51,22 @@ "message": "Извозна Подешавања", "description": "used in the settings page" }, - "onlyEmbedded": { - "message": "само уграђено", - "description": "used in the settings page" - }, - "onlyNotEmbedded": { - "message": "само неуграђено", + "resetSettings": { + "message": "Обновите Подешавања", "description": "used in the settings page" }, - "general": { - "message": "Општенито", + "enable": { + "message": "Омогући", "description": "used in the settings page" }, - "customInstances": { - "message": "Прилагођене инстанце", + "showInPopup": { + "message": "Show in popup", "description": "used in the settings page" }, "frontend": { "message": "Сучеље", "description": "used in the settings page" }, - "notFullyPrivate": { - "message": "Ово није потпуно приватно сучеље." - }, - "defaultInstances": { - "message": "Подразумеване инстанце", - "description": "used in the settings page" - }, "searchNote": { "message": "Савет: Искористите претрагу до њеног пуног потенцијала тако што ћете LibRedirect поставити као подразумевани претраживач.", "description": "used in the settings page" @@ -77,146 +79,33 @@ "message": "оба", "description": "used in the settings page" }, - "cancel": { - "message": "Откажите", - "description": "used in instance_offline.html" - }, - "testInstancesLatency": { - "message": "Тестирајте Кашњење Инстанцих" - }, - "protocolFallback": { - "message": "Вратите се на нормалну страницу ако ниједна инстанца није доступна за тренутни протокол" - }, - "copied": { - "message": "Копирано" - }, - "lbry": { - "message": "LBRY" - }, - "toggleTab": { - "message": "Укључите/Искључите преусмеравања на овој картици", - "description": "Used in context menus when right clicking on a page/tab" - }, - "redirectLink": { - "message": "Покушајте да преусмерите ову хипервезу", - "description": "Used in context menus when right clicking on a hyperlink" - }, - "autoRedirect": { - "message": "Аутоматски преусмерите недоступне инстанце на доступне", - "description": "used in the settings page" - }, - "exceptions": { - "message": "Изузеци", - "description": "used in the settings page" - }, - "updateInstances": { - "message": "Ажурирајте инстанце", - "description": "used in the settings page" - }, - "normal": { - "message": "Нормалан", - "description": "used in the settings page" - }, - "resetSettings": { - "message": "Обновите Подешавања", - "description": "used in the settings page" - }, - "enable": { - "message": "Омогући", - "description": "used in the settings page" - }, - "translate": { - "message": "Превод", - "description": "used in the settings page" - }, - "twitter": { - "message": "Twitter", - "description": "used in the settings page" - }, - "settings": { - "message": "Подешавања", - "description": "used in the popup" - }, - "instagram": { - "message": "Instagram", - "description": "used in the settings page" - }, - "reddit": { - "message": "Reddit", - "description": "used in the settings page" - }, - "tiktok": { - "message": "TikTok", + "onlyEmbedded": { + "message": "само уграђено", "description": "used in the settings page" }, - "customPopup": { - "message": "Прилагодите искачући прозор", + "onlyNotEmbedded": { + "message": "само неуграђено", "description": "used in the settings page" }, - "protocol": { - "message": "Протокол", + "addYourFavoriteInstances": { + "message": "Add your favorite instances", "description": "used in the settings page" }, - "instanceOffline": { - "message": "Ова инстанца је недоступна, бићете преусмерени након", - "description": "used in instance_offline.html" - }, - "instanceIsOff": { - "message": "Инстанца је недоступна", - "description": "used in instance_offline.html" - }, - "redirectionCanceled": { - "message": "Преусмеравање је отказано", - "description": "used in instance_offline.js" - }, "copyRaw": { "message": "Копирајте необрађену коду" }, - "wikipedia": { - "message": "Википедија", - "description": "used in the settings page" - }, - "medium": { - "message": "Medium", - "description": "used in the settings page" - }, - "switchInstance": { - "message": "Пребаци инстанцу", - "description": "used in manifest.json as shortcut description" - }, - "search": { - "message": "Претрага", - "description": "used in the settings page" - }, - "youtube": { - "message": "YouTube", - "description": "used in the settings page" - }, - "ytmusic": { - "message": "YT Музика", - "description": "used in the settings page" - }, - "peertube": { - "message": "PeerTube", - "description": "used in the settings page" - }, - "lbryDesktop": { - "message": "LBRY Desktop" - }, - "extensionName": { - "message": "LibRedirect", - "description": "name of the extension" + "copied": { + "message": "Копирано" }, - "maps": { - "message": "Карте", - "description": "used in the settings page" + "redirectToOriginal": { + "message": "Redirect to original", + "description": "Used in context menus when right clicking on a page/tab" }, - "light": { - "message": "Светла", - "description": "used in the settings page" + "redirectLink": { + "message": "Покушајте да преусмерите ову хипервезу", + "description": "Used in context menus when right clicking on a hyperlink" }, - "dark": { - "message": "Мрачна", - "description": "used in the settings page" + "about": { + "message": "About" } -} +} \ No newline at end of file diff --git a/src/_locales/tr/messages.json b/src/_locales/tr/messages.json index e05e5e62..5b638cd5 100644 --- a/src/_locales/tr/messages.json +++ b/src/_locales/tr/messages.json @@ -7,48 +7,36 @@ "message": "Popüler siteleri alternatif gizlilik dostu ön uçlara ve arka uçlara yönlendiren bir web uzantısı", "description": "description of the extension" }, - "search": { - "message": "Ara", - "description": "used in the settings page" - }, - "translate": { - "message": "Çevir", - "description": "used in the settings page" - }, - "maps": { - "message": "Haritalar", - "description": "used in the settings page" - }, - "instagram": { - "message": "Instagram", - "description": "used in the settings page" + "switchInstance": { + "message": "Örneği Değiştir", + "description": "used in manifest.json as shortcut description" }, - "reddit": { - "message": "Reddit", - "description": "used in the settings page" + "settings": { + "message": "Ayarlar", + "description": "used in the popup" }, - "ytmusic": { - "message": "YT Müzik", + "general": { + "message": "Genel", "description": "used in the settings page" }, - "imgur": { - "message": "Imgur", + "theme": { + "message": "Tema", "description": "used in the settings page" }, - "tor": { - "message": "Tor", + "light": { + "message": "Açık", "description": "used in the settings page" }, - "theme": { - "message": "Tema", + "dark": { + "message": "Koyu", "description": "used in the settings page" }, - "autoRedirect": { - "message": "Çevrim dışı örnekleri çevrim içi örneklere otomatik yönlendir", + "auto": { + "message": "Auto", "description": "used in the settings page" }, - "exceptions": { - "message": "İstisnalar", + "excludeFromRedirecting": { + "message": "Excluded from redirecting", "description": "used in the settings page" }, "updateInstances": { @@ -67,17 +55,18 @@ "message": "Ayarları Sıfırla", "description": "used in the settings page" }, - "customPopup": { - "message": "Açılır Pencereyi Özelleştir", + "enable": { + "message": "Etkinleştir", + "description": "used in the settings page" + }, + "showInPopup": { + "message": "Show in popup", "description": "used in the settings page" }, "frontend": { "message": "Ön Uç", "description": "used in the settings page" }, - "notFullyPrivate": { - "message": "Bu tamamen özel bir ön uç değil." - }, "searchNote": { "message": "Not: LibRedirect'i öntanımlı arama motorunuz yaparak aramayı tüm özellikleriyle kullanın.", "description": "used in the settings page" @@ -86,26 +75,6 @@ "message": "Yönlendirme Türü", "description": "used in the settings page" }, - "settings": { - "message": "Ayarlar", - "description": "used in the popup" - }, - "defaultInstances": { - "message": "Öntanımlı Örnekler", - "description": "used in the settings page" - }, - "customInstances": { - "message": "Özel Örnekler", - "description": "used in the settings page" - }, - "toggleAll": { - "message": "Tümünü değiştir", - "description": "used in the settings page" - }, - "embeddedVids": { - "message": "Gömülü Videolar Ön Ucu", - "description": "used in the settings page" - }, "both": { "message": "her ikisi de", "description": "used in the settings page" @@ -118,21 +87,9 @@ "message": "yalnızca gömülü olmayan", "description": "used in the settings page" }, - "instanceOffline": { - "message": "Bu örnek çevrim dışı, yeniden yönlendirileceksiniz", - "description": "used in instance_offline.html" - }, - "cancel": { - "message": "İptal", - "description": "used in instance_offline.html" - }, - "instanceIsOff": { - "message": "Örnek çevrim dışı", - "description": "used in instance_offline.html" - }, - "redirectionCanceled": { - "message": "Yeniden yönlendirme iptal edildi", - "description": "used in instance_offline.js" + "addYourFavoriteInstances": { + "message": "Add your favorite instances", + "description": "used in the settings page" }, "copyRaw": { "message": "Ham Kopyala" @@ -140,93 +97,15 @@ "copied": { "message": "Kopyalandı" }, - "unifySettings": { - "message": "Ayarları Birleştir" - }, - "lbry": { - "message": "LBRY" - }, - "i2p": { - "message": "I2P" - }, - "testInstancesLatency": { - "message": "Örneklerin Gecikmesini Test Et" - }, - "switchInstance": { - "message": "Örneği Değiştir", - "description": "used in manifest.json as shortcut description" - }, - "sendFiles": { - "message": "Dosya Gönder", - "description": "used in the settings page" - }, - "wikipedia": { - "message": "Wikipedia", - "description": "used in the settings page" - }, - "peertube": { - "message": "PeerTube", - "description": "used in the settings page" - }, - "dark": { - "message": "Koyu", - "description": "used in the settings page" - }, - "tiktok": { - "message": "TikTok", - "description": "used in the settings page" - }, - "general": { - "message": "Genel", - "description": "used in the settings page" - }, - "youtube": { - "message": "YouTube", - "description": "used in the settings page" - }, - "twitter": { - "message": "Twitter", - "description": "used in the settings page" - }, - "medium": { - "message": "Medium", - "description": "used in the settings page" - }, - "system": { - "message": "Sistem", - "description": "used in the settings page" - }, - "light": { - "message": "Açık", - "description": "used in the settings page" - }, - "enable": { - "message": "Etkinleştir", - "description": "used in the settings page" - }, - "protocol": { - "message": "Protokol", - "description": "used in the settings page" - }, - "normal": { - "message": "Normal", - "description": "used in the settings page" - }, - "loki": { - "message": "Lokinet" - }, - "protocolFallback": { - "message": "Geçerli protokol için hiçbir örnek kullanılabilir değilse normale geri dön" - }, - "lbryDesktop": { - "message": "LBRY Masaüstü" - }, - "toggleTab": { - "message": "Bu sekmede yönlendirmeleri aç/kapat", + "redirectToOriginal": { + "message": "Redirect to original", "description": "Used in context menus when right clicking on a page/tab" }, "redirectLink": { "message": "Bu köprüyü yeniden yönlendirmeyi dene", "description": "Used in context menus when right clicking on a hyperlink" + }, + "about": { + "message": "About" } -} +} \ No newline at end of file diff --git a/src/_locales/uk/messages.json b/src/_locales/uk/messages.json index 472ac451..c5aae985 100644 --- a/src/_locales/uk/messages.json +++ b/src/_locales/uk/messages.json @@ -1,86 +1,70 @@ { - "exceptions": { - "message": "Винятки", - "description": "used in the settings page" - }, - "exportSettings": { - "message": "Експортувати налаштування", - "description": "used in the settings page" - }, - "resetSettings": { - "message": "Скинути налаштування", - "description": "used in the settings page" + "extensionName": { + "message": "LibRedirect", + "description": "name of the extension" }, - "defaultInstances": { - "message": "Типові сервери", - "description": "used in the settings page" + "extensionDescription": { + "message": "Веброзширення, що переспрямовує популярні сайти на альтернативні дружні до приватності фронтенди та бекенди", + "description": "description of the extension" }, - "instagram": { - "message": "Instagram", - "description": "used in the settings page" + "switchInstance": { + "message": "Інший сервер", + "description": "used in manifest.json as shortcut description" }, - "twitter": { - "message": "Twitter", - "description": "used in the settings page" + "settings": { + "message": "Налаштування", + "description": "used in the popup" }, - "reddit": { - "message": "Reddit", + "general": { + "message": "Загальні", "description": "used in the settings page" }, - "tiktok": { - "message": "TikTok", + "theme": { + "message": "Тема", "description": "used in the settings page" }, "light": { "message": "Світла", "description": "used in the settings page" }, - "imgur": { - "message": "Imgur", + "dark": { + "message": "Темна", "description": "used in the settings page" }, - "wikipedia": { - "message": "Вікіпедія", + "auto": { + "message": "Auto", "description": "used in the settings page" }, - "medium": { - "message": "Medium", + "excludeFromRedirecting": { + "message": "Excluded from redirecting", "description": "used in the settings page" }, "updateInstances": { "message": "Оновити сервери", "description": "used in the settings page" }, - "protocol": { - "message": "Протокол", - "description": "used in the settings page" - }, - "enable": { - "message": "Увімкнути", + "importSettings": { + "message": "Імпортувати налаштування", "description": "used in the settings page" }, - "normal": { - "message": "Звичайний", + "exportSettings": { + "message": "Експортувати налаштування", "description": "used in the settings page" }, - "onlyEmbedded": { - "message": "лише вбудовані", + "resetSettings": { + "message": "Скинути налаштування", "description": "used in the settings page" }, - "onlyNotEmbedded": { - "message": "лише не вбудовані", + "enable": { + "message": "Увімкнути", "description": "used in the settings page" }, - "instanceOffline": { - "message": "Сервер недоступний, до переспрямування", - "description": "used in instance_offline.html" - }, - "customInstances": { - "message": "Власні сервери", + "showInPopup": { + "message": "Show in popup", "description": "used in the settings page" }, - "toggleAll": { - "message": "Увімкнути/вимкнути всі", + "frontend": { + "message": "Фронтенд", "description": "used in the settings page" }, "searchNote": { @@ -156,8 +140,8 @@ "message": "Вимикач у спливному переліку", "description": "used in the settings page" }, - "frontend": { - "message": "Фронтенд", + "onlyEmbedded": { + "message": "лише вбудовані", "description": "used in the settings page" }, "notFullyPrivate": { @@ -167,17 +151,12 @@ "message": "Фронтенд вбудованих відео", "description": "used in the settings page" }, - "both": { - "message": "і ті, й інші", + "addYourFavoriteInstances": { + "message": "Add your favorite instances", "description": "used in the settings page" }, - "cancel": { - "message": "Скасувати", - "description": "used in instance_offline.html" - }, - "instanceIsOff": { - "message": "Сервер недоступний", - "description": "used in instance_offline.html" + "copyRaw": { + "message": "Копіювати оригінал посилання" }, "copied": { "message": "Скопійовано" @@ -191,13 +170,9 @@ "lbryDesktop": { "message": "LBRY Desktop" }, - "extensionDescription": { - "message": "Веброзширення, що переспрямовує популярні сайти на альтернативні дружні до приватності фронтенди та бекенди", - "description": "description of the extension" - }, - "general": { - "message": "Загальні", - "description": "used in the settings page" + "redirectLink": { + "message": "Спроба перенаправлення за цим гіперпосиланням", + "description": "Used in context menus when right clicking on a hyperlink" }, "theme": { "message": "Тема", @@ -219,4 +194,4 @@ "message": "Перемикнути перенаправлення на цій вкладці", "description": "Used in context menus when right clicking on a page/tab" } -} +} \ No newline at end of file diff --git a/src/_locales/zh_Hans/messages.json b/src/_locales/zh_Hans/messages.json index 42b6e2ba..5b359b88 100644 --- a/src/_locales/zh_Hans/messages.json +++ b/src/_locales/zh_Hans/messages.json @@ -1,11 +1,7 @@ { - "settings": { - "message": "设置", - "description": "used in the popup" - }, - "translate": { - "message": "翻译", - "description": "used in the settings page" + "extensionName": { + "message": "LibRedirect", + "description": "name of the extension" }, "wikipedia": { "message": "维基百科", @@ -15,29 +11,9 @@ "message": "切换实例", "description": "used in manifest.json as shortcut description" }, - "sendFiles": { - "message": "发送文件", - "description": "used in the settings page" - }, - "instagram": { - "message": "Instagram", - "description": "used in the settings page" - }, - "twitter": { - "message": "Twitter", - "description": "used in the settings page" - }, - "extensionName": { - "message": "LibRedirect", - "description": "name of the extension" - }, - "peertube": { - "message": "PeerTube", - "description": "used in the settings page" - }, - "youtube": { - "message": "YouTube", - "description": "used in the settings page" + "settings": { + "message": "设置", + "description": "used in the popup" }, "general": { "message": "通用", @@ -111,6 +87,14 @@ "message": "深色", "description": "used in the settings page" }, + "auto": { + "message": "Auto", + "description": "used in the settings page" + }, + "excludeFromRedirecting": { + "message": "Excluded from redirecting", + "description": "used in the settings page" + }, "updateInstances": { "message": "更新实例", "description": "used in the settings page" @@ -119,10 +103,6 @@ "message": "导入设置", "description": "used in the settings page" }, - "exceptions": { - "message": "排除", - "description": "used in the settings page" - }, "exportSettings": { "message": "导出设置", "description": "used in the settings page" @@ -131,43 +111,24 @@ "message": "重置设置", "description": "used in the settings page" }, - "customPopup": { - "message": "自定义弹出菜单", - "description": "used in the settings page" - }, "enable": { "message": "启用", "description": "used in the settings page" }, - "protocol": { - "message": "协议", - "description": "used in the settings page" - }, - "normal": { - "message": "常规", - "description": "used in the settings page" - }, - "defaultInstances": { - "message": "默认实例", - "description": "used in the settings page" - }, - "customInstances": { - "message": "自定义实例", - "description": "used in the settings page" - }, - "toggleAll": { - "message": "全选", + "showInPopup": { + "message": "Show in popup", "description": "used in the settings page" }, "frontend": { "message": "前端", "description": "used in the settings page" }, - "notFullyPrivate": { - "message": "这并不是一个完全私有的前端。" + "searchNote": { + "message": "注意:请将 LibRedirect 作为你的默认搜索引擎以充分发挥搜索的潜力。", + "description": "used in the settings page" }, - "embeddedVids": { - "message": "嵌入式视频前端", + "redirectType": { + "message": "重定向类型", "description": "used in the settings page" }, "both": { @@ -182,31 +143,23 @@ "message": "仅当非嵌入时", "description": "used in the settings page" }, - "cancel": { - "message": "取消", - "description": "used in instance_offline.html" - }, - "instanceIsOff": { - "message": "实例已离线", - "description": "used in instance_offline.html" + "addYourFavoriteInstances": { + "message": "Add your favorite instances", + "description": "used in the settings page" }, "copyRaw": { "message": "复制原始链接" }, - "protocolFallback": { - "message": "如果当前协议没有实例可用,则回退到常规状态" - }, - "autoRedirect": { - "message": "自动重定向离线实例至在线实例", - "description": "used in the settings page" + "copied": { + "message": "已复制" }, "searchNote": { "message": "备注:将 LibRedirect 设为默认搜索引擎,以充分发挥搜索功能的潜力。", "description": "used in the settings page" }, - "redirectionCanceled": { - "message": "已取消重定向", - "description": "used in instance_offline.js" + "redirectLink": { + "message": "尝试重定向此超链接", + "description": "Used in context menus when right clicking on a hyperlink" }, "lbryDesktop": { "message": "LBRY 桌面版" @@ -219,4 +172,4 @@ "message": "尝试重定向此链接", "description": "Used in context menus when right clicking on a hyperlink" } -} +} \ No newline at end of file diff --git a/src/assets/images/about-icon-light.svg b/src/assets/images/about-icon-light.svg new file mode 100644 index 00000000..7c4ef3ca --- /dev/null +++ b/src/assets/images/about-icon-light.svg @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + height="24" + width="24" + fill="currentColor" + version="1.1" + id="svg4" + sodipodi:docname="about-icon-white.svg" + inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs8" /> + <sodipodi:namedview + id="namedview6" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + showgrid="false" + inkscape:zoom="22.922045" + inkscape:cx="1.2651576" + inkscape:cy="10.383018" + inkscape:window-width="1888" + inkscape:window-height="1060" + inkscape:window-x="32" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="svg4" /> + <path + d="m 11,17 h 2 V 11 H 11 Z M 12,9 C 12.283333,9 12.521,8.904 12.713,8.712 12.904333,8.5206667 13,8.2833333 13,8 13,7.7166667 12.904333,7.479 12.713,7.287 12.521,7.0956667 12.283333,7 12,7 11.716667,7 11.479333,7.0956667 11.288,7.287 11.096,7.479 11,7.7166667 11,8 11,8.2833333 11.096,8.5206667 11.288,8.712 11.479333,8.904 11.716667,9 12,9 Z" + id="path2" + sodipodi:nodetypes="cccccssscssscs" + style="fill:#ffffff" /> + <path + id="path387" + d="M 12,2 C 10.616668,2 9.316275,2.2624432 8.099609,2.7871094 6.882944,3.3124421 5.82578,4.0257822 4.925781,4.9257812 4.025782,5.8257804 3.311776,6.8829439 2.787109,8.0996094 2.261777,9.3162749 2,10.616668 2,12 c 0,1.383332 0.261777,2.683725 0.787109,3.900391 0.524667,1.216665 1.238673,2.273829 2.138672,3.173828 0.899999,0.899999 1.957163,1.614005 3.173828,2.138672 C 9.316275,21.738223 10.616668,22 12,22 c 1.383332,0 2.683725,-0.261777 3.900391,-0.787109 1.216665,-0.524667 2.273829,-1.238673 3.173828,-2.138672 0.899999,-0.899999 1.614005,-1.957163 2.138672,-3.173828 C 21.738223,14.683725 22,13.383332 22,12 22,10.616668 21.738223,9.3162749 21.212891,8.0996094 20.688224,6.8829439 19.974218,5.8257804 19.074219,4.9257812 18.17422,4.0257822 17.117056,3.3124421 15.900391,2.7871094 14.683725,2.2624432 13.383332,2 12,2 Z m 0,2 c 2.233331,0 4.125783,0.7742203 5.675781,2.3242188 C 19.22578,7.8742172 20,9.7666689 20,12 20,14.233331 19.22578,16.125783 17.675781,17.675781 16.125783,19.22578 14.233331,20 12,20 9.766669,20 7.874217,19.22578 6.324219,17.675781 4.77422,16.125783 4,14.233331 4,12 4,9.7666689 4.77422,7.8742172 6.324219,6.3242188 7.874217,4.7742203 9.766669,4 12,4 Z" + style="fill:#ffffff" /> +</svg> diff --git a/src/assets/images/about-icon.svg b/src/assets/images/about-icon.svg index 551255e6..98b62f6b 100644 --- a/src/assets/images/about-icon.svg +++ b/src/assets/images/about-icon.svg @@ -1,3 +1,42 @@ -<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" fill="currentColor"> - <path d="M11 17h2v-6h-2Zm1-8q.425 0 .713-.288Q13 8.425 13 8t-.287-.713Q12.425 7 12 7t-.712.287Q11 7.575 11 8t.288.712Q11.575 9 12 9Zm0 13q-2.075 0-3.9-.788-1.825-.787-3.175-2.137-1.35-1.35-2.137-3.175Q2 14.075 2 12t.788-3.9q.787-1.825 2.137-3.175 1.35-1.35 3.175-2.138Q9.925 2 12 2t3.9.787q1.825.788 3.175 2.138 1.35 1.35 2.137 3.175Q22 9.925 22 12t-.788 3.9q-.787 1.825-2.137 3.175-1.35 1.35-3.175 2.137Q14.075 22 12 22Zm0-2q3.35 0 5.675-2.325Q20 15.35 20 12q0-3.35-2.325-5.675Q15.35 4 12 4 8.65 4 6.325 6.325 4 8.65 4 12q0 3a.35 2.325 5.675Q8.65 20 12 20Zm0-8Z"></path> +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + height="24" + width="24" + fill="currentColor" + version="1.1" + id="svg4" + sodipodi:docname="about-icon.svg" + inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs8" /> + <sodipodi:namedview + id="namedview6" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + showgrid="false" + inkscape:zoom="22.922045" + inkscape:cx="5.4532656" + inkscape:cy="10.383018" + inkscape:window-width="1888" + inkscape:window-height="1060" + inkscape:window-x="32" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="svg4" /> + <path + d="m 11,17 h 2 V 11 H 11 Z M 12,9 C 12.283333,9 12.521,8.904 12.713,8.712 12.904333,8.5206667 13,8.2833333 13,8 13,7.7166667 12.904333,7.479 12.713,7.287 12.521,7.0956667 12.283333,7 12,7 11.716667,7 11.479333,7.0956667 11.288,7.287 11.096,7.479 11,7.7166667 11,8 11,8.2833333 11.096,8.5206667 11.288,8.712 11.479333,8.904 11.716667,9 12,9 Z" + id="path2" + sodipodi:nodetypes="cccccssscssscs" /> + <path + id="path387" + d="M 12,2 C 10.616668,2 9.316275,2.2624432 8.099609,2.7871094 6.882944,3.3124421 5.82578,4.0257822 4.925781,4.9257812 4.025782,5.8257804 3.311776,6.8829439 2.787109,8.0996094 2.261777,9.3162749 2,10.616668 2,12 c 0,1.383332 0.261777,2.683725 0.787109,3.900391 0.524667,1.216665 1.238673,2.273829 2.138672,3.173828 0.899999,0.899999 1.957163,1.614005 3.173828,2.138672 C 9.316275,21.738223 10.616668,22 12,22 c 1.383332,0 2.683725,-0.261777 3.900391,-0.787109 1.216665,-0.524667 2.273829,-1.238673 3.173828,-2.138672 0.899999,-0.899999 1.614005,-1.957163 2.138672,-3.173828 C 21.738223,14.683725 22,13.383332 22,12 22,10.616668 21.738223,9.3162749 21.212891,8.0996094 20.688224,6.8829439 19.974218,5.8257804 19.074219,4.9257812 18.17422,4.0257822 17.117056,3.3124421 15.900391,2.7871094 14.683725,2.2624432 13.383332,2 12,2 Z m 0,2 c 2.233331,0 4.125783,0.7742203 5.675781,2.3242188 C 19.22578,7.8742172 20,9.7666689 20,12 20,14.233331 19.22578,16.125783 17.675781,17.675781 16.125783,19.22578 14.233331,20 12,20 9.766669,20 7.874217,19.22578 6.324219,17.675781 4.77422,16.125783 4,14.233331 4,12 4,9.7666689 4.77422,7.8742172 6.324219,6.3242188 7.874217,4.7742203 9.766669,4 12,4 Z" /> </svg> diff --git a/src/assets/images/general-icon-light.svg b/src/assets/images/general-icon-light.svg new file mode 100644 index 00000000..9e4c8a06 --- /dev/null +++ b/src/assets/images/general-icon-light.svg @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + enable-background="new 0 0 24 24" + height="26px" + viewBox="0 0 24 24" + width="26px" + fill="currentColor" + version="1.1" + id="svg675" + sodipodi:docname="general-icon-white.svg" + inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs679" /> + <sodipodi:namedview + id="namedview677" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + showgrid="false" + inkscape:zoom="29.923077" + inkscape:cx="9.7583548" + inkscape:cy="13" + inkscape:window-width="1888" + inkscape:window-height="1060" + inkscape:window-x="32" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="svg675" /> + <path + d="M19.14,12.94c0.04-0.3,0.06-0.61,0.06-0.94c0-0.32-0.02-0.64-0.07-0.94l2.03-1.58c0.18-0.14,0.23-0.41,0.12-0.61 l-1.92-3.32c-0.12-0.22-0.37-0.29-0.59-0.22l-2.39,0.96c-0.5-0.38-1.03-0.7-1.62-0.94L14.4,2.81c-0.04-0.24-0.24-0.41-0.48-0.41 h-3.84c-0.24,0-0.43,0.17-0.47,0.41L9.25,5.35C8.66,5.59,8.12,5.92,7.63,6.29L5.24,5.33c-0.22-0.08-0.47,0-0.59,0.22L2.74,8.87 C2.62,9.08,2.66,9.34,2.86,9.48l2.03,1.58C4.84,11.36,4.8,11.69,4.8,12s0.02,0.64,0.07,0.94l-2.03,1.58 c-0.18,0.14-0.23,0.41-0.12,0.61l1.92,3.32c0.12,0.22,0.37,0.29,0.59,0.22l2.39-0.96c0.5,0.38,1.03,0.7,1.62,0.94l0.36,2.54 c0.05,0.24,0.24,0.41,0.48,0.41h3.84c0.24,0,0.44-0.17,0.47-0.41l0.36-2.54c0.59-0.24,1.13-0.56,1.62-0.94l2.39,0.96 c0.22,0.08,0.47,0,0.59-0.22l1.92-3.32c0.12-0.22,0.07-0.47-0.12-0.61L19.14,12.94z M12,15.6c-1.98,0-3.6-1.62-3.6-3.6 s1.62-3.6,3.6-3.6s3.6,1.62,3.6,3.6S13.98,15.6,12,15.6z" + id="path673" + style="fill:#ffffff" /> +</svg> diff --git a/src/assets/images/genius-icon.svg b/src/assets/images/genius-icon.svg new file mode 100644 index 00000000..98a1ca7c --- /dev/null +++ b/src/assets/images/genius-icon.svg @@ -0,0 +1,62 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 23.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + version="1.1" + id="Layer_1" + x="0px" + y="0px" + viewBox="0 0 893.80809 893.80808" + xml:space="preserve" + sodipodi:docname="genius-icon.svg" + width="893.80811" + height="893.80811" + inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"><defs + id="defs17" /><sodipodi:namedview + id="namedview15" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + showgrid="false" + inkscape:zoom="0.35355339" + inkscape:cx="183.84776" + inkscape:cy="234.75945" + inkscape:window-width="1888" + inkscape:window-height="1060" + inkscape:window-x="32" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="Layer_1" /> +<style + type="text/css" + id="style2"> + .st0{fill:#F6F069;} +</style> +<circle + style="fill:#f6f069;fill-opacity:1;fill-rule:evenodd;stroke-width:9.79459;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0.411765;paint-order:stroke fill markers;stop-color:#000000" + id="path298" + cx="446.90405" + cy="446.90405" + r="446.90405" /><g + id="g12" + transform="matrix(0.83247878,0,0,0.83247878,104.68007,147.4041)"> + + <path + d="m 745,306.7 c -0.3,-17.2 -2.1,-34.2 -4.9,-51.1 -10.9,-63.8 -37.7,-120.1 -79.4,-169.4 -4.3,-5.1 -8.8,-10 -13.5,-14.8 -2.9,-3 -6.6,-3.3 -9.5,-1.3 -2.8,1.9 -3.6,4.8 -2.4,8.9 0.3,1 0.7,1.9 1,2.8 16,42.7 24.2,86.8 24.5,132.4 -0.4,8.3 -0.8,16.6 -1.2,24.9 -1.2,22.7 -4.8,45 -10.5,66.9 -18.3,70.5 -53.7,131.1 -107.1,180.6 -69.6,64.5 -152.3,97.7 -247.1,100.4 -23.9,0.7 -47.6,-1.3 -71.1,-5.4 -24,-4.1 -47.5,-10.5 -70.2,-19.3 -5,-1.9 -8.5,-1 -10.5,2.5 -2,3.3 -1.2,6.4 2.7,10.1 3.3,3.1 6.6,6.1 10,9.1 65.2,56.5 141.1,85.6 227.2,88.1 20.8,0.6 41.6,-1 62.2,-4.4 74.2,-12 139,-43.7 192.5,-96.5 C 711.1,498.8 747,410.3 745,306.7 Z" + id="path6" /> + <path + d="m 174,403.9 c 2.9,-2.2 3.4,-5.1 1.8,-10 -0.2,-0.5 -0.3,-0.9 -0.5,-1.4 -12.4,-35 -15.9,-71 -10.6,-107.7 7,-48.3 27.5,-90.1 60.9,-125.5 2.7,-2.9 4,-5.8 4,-9.8 -0.1,-12.5 -0.1,-25 -0.1,-37.5 0,-12.3 0,-24.7 0,-37 0,-8 -2.4,-10.5 -10.4,-10.5 -24.7,0 -49.3,0 -74,-0.1 -4.1,0 -7.4,1.2 -10.3,4 -41,39.9 -62.8,88.6 -66.2,145.5 -1.3,21.7 1.2,43.2 6.8,64.3 14,52.6 43.6,94.1 88.5,124.7 4.5,3.1 7.1,3.3 10.1,1 z" + id="path8" /> + <path + d="m 310.7,247.1 c 6.1,45.6 49.2,77.8 94.6,70.5 40.3,-6.5 69.6,-40.8 69.6,-81.7 0,-8.2 0,-16.3 0,-24.5 0,-10.7 0,-21.3 0,-32 0,-6.8 1.8,-8.5 8.6,-8.6 6.3,-0.1 12.7,0.1 19,-0.1 5.8,-0.2 8.4,-3.7 7.4,-9.3 -0.2,-1 -0.3,-2 -0.5,-2.9 C 501.8,126.4 488,97.4 468,71.2 c -3.7,-4.8 -7.8,-6.6 -13.6,-6.5 -16.8,0.2 -33.6,0 -50.5,0.1 -1.8,0 -3.7,0.1 -5.5,0.4 -4.2,0.7 -6.1,2.7 -6.7,6.9 -0.2,1.6 -0.1,3.3 -0.1,5 0,26.2 0,52.3 0,78.5 0,10.8 -2.1,21.2 -6.5,31.1 -13,28.6 -35.5,44.5 -66.5,48.7 -6.5,0.9 -8.4,3 -8.1,9.4 0.1,0.6 0.1,1.5 0.2,2.3 z" + id="path10" /> +</g> +</svg> diff --git a/src/assets/images/instance-icon.svg b/src/assets/images/instance-icon.svg deleted file mode 100644 index 6b034c6f..00000000 --- a/src/assets/images/instance-icon.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="26px" viewBox="0 0 24 24" width="26px" fill="currentColor"> - <path d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zm6.93 6h-2.95c-.32-1.25-.78-2.45-1.38-3.56 1.84.63 3.37 1.91 4.33 3.56zM12 4.04c.83 1.2 1.48 2.53 1.91 3.96h-3.82c.43-1.43 1.08-2.76 1.91-3.96zM4.26 14C4.1 13.36 4 12.69 4 12s.1-1.36.26-2h3.38c-.08.66-.14 1.32-.14 2 0 .68.06 1.34.14 2H4.26zm.82 2h2.95c.32 1.25.78 2.45 1.38 3.56-1.84-.63-3.37-1.9-4.33-3.56zm2.95-8H5.08c.96-1.66 2.49-2.93 4.33-3.56C8.81 5.55 8.35 6.75 8.03 8zM12 19.96c-.83-1.2-1.48-2.53-1.91-3.96h3.82c-.43 1.43-1.08 2.76-1.91 3.96zM14.34 14H9.66c-.09-.66-.16-1.32-.16-2 0-.68.07-1.35.16-2h4.68c.09.65.16 1.32.16 2 0 .68-.07 1.34-.16 2zm.25 5.56c.6-1.11 1.06-2.31 1.38-3.56h2.95c-.96 1.65-2.49 2.93-4.33 3.56zM16.36 14c.08-.66.14-1.32.14-2 0-.68-.06-1.34-.14-2h3.38c.16.64.26 1.31.26 2s-.1 1.36-.26 2h-3.38z"></path> -</svg> diff --git a/src/assets/images/maps-icon-light.svg b/src/assets/images/maps-icon-light.svg new file mode 100644 index 00000000..faefa200 --- /dev/null +++ b/src/assets/images/maps-icon-light.svg @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + height="24px" + viewBox="0 0 24 24" + width="24px" + fill="currentColor" + version="1.1" + id="svg933" + sodipodi:docname="maps-icon-white.svg" + inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs937" /> + <sodipodi:namedview + id="namedview935" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + showgrid="false" + inkscape:zoom="32.416667" + inkscape:cx="9.0077121" + inkscape:cy="12" + inkscape:window-width="1888" + inkscape:window-height="1060" + inkscape:window-x="32" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="svg933" /> + <path + d="M20.5 3l-.16.03L15 5.1 9 3 3.36 4.9c-.21.07-.36.25-.36.48V20.5c0 .28.22.5.5.5l.16-.03L9 18.9l6 2.1 5.64-1.9c.21-.07.36-.25.36-.48V3.5c0-.28-.22-.5-.5-.5zM10 5.47l4 1.4v11.66l-4-1.4V5.47zm-5 .99l3-1.01v11.7l-3 1.16V6.46zm14 11.08l-3 1.01V6.86l3-1.16v11.84z" + id="path931" + style="fill:#ffffff" /> +</svg> diff --git a/src/assets/images/medium-icon.svg b/src/assets/images/medium-icon.svg index 72612486..f77ed5bb 100644 --- a/src/assets/images/medium-icon.svg +++ b/src/assets/images/medium-icon.svg @@ -1,5 +1,62 @@ -<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1770 1000" fill="currentColor"> - <circle cx="500" cy="500" r="500"></circle> - <ellipse ry="475" rx="250" cy="501" cx="1296"></ellipse> - <ellipse cx="1682" cy="502" rx="88" ry="424"></ellipse> +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + viewBox="0 0 2084.3154 2084.3154" + fill="currentColor" + version="1.1" + id="svg1324" + sodipodi:docname="medium-icon.svg" + width="2084.3154" + height="2084.3154" + inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs1328" /> + <sodipodi:namedview + id="namedview1326" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + showgrid="false" + inkscape:zoom="0.34774011" + inkscape:cx="422.72949" + inkscape:cy="1233.6799" + inkscape:window-width="1888" + inkscape:window-height="1060" + inkscape:window-x="32" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="svg1324" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke-width:6.70974;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0.411765;paint-order:stroke fill markers;stop-color:#000000" + id="path1499" + cx="1042.1577" + cy="1042.1577" + r="1042.1577" /> + <circle + cx="657.15771" + cy="1042.1577" + r="500" + id="circle1318" + style="fill:#ffffff" /> + <ellipse + ry="475" + rx="250" + cy="1043.1577" + cx="1453.1577" + id="ellipse1320" + style="fill:#ffffff" /> + <ellipse + cx="1839.1577" + cy="1044.1577" + rx="88" + ry="424" + id="ellipse1322" + style="fill:#ffffff" /> </svg> diff --git a/src/assets/images/reuters-icon.svg b/src/assets/images/reuters-icon.svg index aab389c3..0cc8a03c 100644 --- a/src/assets/images/reuters-icon.svg +++ b/src/assets/images/reuters-icon.svg @@ -1 +1,267 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 82.683 79.683" fill="#fff" fill-rule="evenodd" stroke="#000" stroke-linecap="round" stroke-linejoin="round"><use xlink:href="#F" x="9.341" y="9.341"/><defs><linearGradient id="A" x1="89.71%" y1="27.52%" x2="3.20%" y2="73.53%"><stop offset="0%" stop-color="#ff9100"/><stop offset="5%" stop-color="#ff8d00"/><stop offset="25%" stop-color="#ff8300"/><stop offset="50%" stop-color="#ff8000"/><stop offset="75%" stop-color="#ff8300"/><stop offset="95%" stop-color="#ff8d00"/><stop offset="100%" stop-color="#ff9100"/></linearGradient><linearGradient id="B" x1="96.89%" y1="63.40%" x2="3.10%" y2="36.75%"><stop offset="0%" stop-color="#ff9100"/><stop offset="5%" stop-color="#ff8d00"/><stop offset="25%" stop-color="#ff8300"/><stop offset="50%" stop-color="#ff8000"/><stop offset="75%" stop-color="#ff8300"/><stop offset="95%" stop-color="#ff8d00"/><stop offset="100%" stop-color="#ff9100"/></linearGradient><linearGradient id="C" x1="84.77%" y1="84.03%" x2="15.82%" y2="15.95%"><stop offset="0%" stop-color="#ff9100"/><stop offset="5%" stop-color="#ff8d00"/><stop offset="25%" stop-color="#ff8300"/><stop offset="50%" stop-color="#ff8000"/><stop offset="75%" stop-color="#ff8300"/><stop offset="95%" stop-color="#ff8d00"/><stop offset="100%" stop-color="#ff9100"/></linearGradient><linearGradient id="D" x1="68.79%" y1="95.50%" x2="30.77%" y2="4.53%"><stop offset="0%" stop-color="#ff9100"/><stop offset="5%" stop-color="#ff8d00"/><stop offset="25%" stop-color="#ff8300"/><stop offset="50%" stop-color="#ff8000"/><stop offset="75%" stop-color="#ff8300"/><stop offset="95%" stop-color="#ff8d00"/><stop offset="100%" stop-color="#ff9100"/></linearGradient><linearGradient id="E" x1="49.85%" y1="100.03%" x2="49.85%" y2="0.03%"><stop offset="0%" stop-color="#ff9100"/><stop offset="5%" stop-color="#ff8d00"/><stop offset="25%" stop-color="#ff8300"/><stop offset="50%" stop-color="#ff8000"/><stop offset="75%" stop-color="#ff8300"/><stop offset="95%" stop-color="#ff8d00"/><stop offset="100%" stop-color="#ff9100"/></linearGradient></defs><symbol id="F" overflow="visible"><g stroke="none" fill-rule="nonzero"><path d="M28.509 21.28c.318.616.112 1.364-.504 1.868a1.25 1.25 0 0 1-1.7-.691c-.336-.598-.112-1.364.504-1.868a1.25 1.25 0 0 1 1.7.505zm-6.203 9.827a.75.75 0 0 0-.299 1.009c.196.361.648.495 1.009.299s.495-.648.299-1.009a.75.75 0 0 0-1.009-.299zm-.299-3.045a.86.86 0 0 0-.336 1.158c.224.43.747.56 1.177.374s.561-.747.374-1.177a.86.86 0 0 0-1.177-.336zm.785-2.914a.99.99 0 0 0-.411 1.326.98.98 0 0 0 1.345.374.99.99 0 0 0 .411-1.345.99.99 0 0 0-1.326-.392zm1.607-2.522a1.1 1.1 0 0 0-.448 1.513 1.07 1.07 0 0 0 1.495.448 1.11 1.11 0 0 0 .065-1.924 1.11 1.11 0 0 0-1.111-.037zm-1.214 11.303a.62.62 0 0 0-.243.841.62.62 0 0 0 .841.243c.292-.171.399-.541.243-.841-.079-.144-.212-.251-.37-.296s-.327-.026-.471.054zm14.273-10.275a.75.75 0 0 0 1.009.299.75.75 0 0 0 .299-1.009c-.196-.361-.648-.495-1.009-.299s-.495.648-.299 1.009zm-2.373-1.569c.224.411.747.56 1.158.336s.56-.747.374-1.158a.86.86 0 1 0-1.513.822zm-2.896-.785c.258.48.856.66 1.336.402s.66-.856.402-1.336-.856-.66-1.336-.402-.66.856-.402 1.336zm-3.027.112c.139.263.377.459.662.543a1.1 1.1 0 0 0 .851-.095 1.12 1.12 0 0 0 .448-1.513c-.289-.537-.958-.737-1.495-.448s-.737.958-.448 1.495zm10.313 4.521c.149.299.56.411.822.243.143-.075.249-.205.295-.36s.027-.322-.052-.462c-.075-.147-.207-.258-.365-.307s-.329-.033-.475.046c-.28.187-.411.56-.243.841zm-2.13 11.77c-.33-.609-1.091-.835-1.7-.504s-.835 1.091-.505 1.7c.336.617 1.121.822 1.868.504s.841-1.121.505-1.868zm-11.322-1.214c-.197-.349-.633-.481-.99-.299a.73.73 0 0 0-.295.986.73.73 0 0 0 .985.297.73.73 0 0 0 .3-.984zm2.504 1.588a.86.86 0 1 0-1.513.822c.224.411.747.561 1.158.374a.88.88 0 0 0 .355-1.177zm2.896.785c-.262-.486-.859-.654-1.345-.374a.99.99 0 0 0-.392 1.327c.262.486.859.654 1.345.411a.97.97 0 0 0 .411-1.345zm3.027-.112a1.12 1.12 0 0 0-1.513-.448c-.56.28-.747.934-.43 1.495.135.262.37.457.652.542s.586.051.843-.093c.56-.28.747-.934.448-1.495zm6.875-9.659c.176-.092.308-.249.368-.439s.041-.394-.05-.57c-.196-.361-.648-.495-1.009-.299s-.495.648-.299 1.009a.75.75 0 0 0 .99.299zm.131 2.989c.411-.224.56-.747.336-1.177a.86.86 0 0 0-1.158-.355.88.88 0 0 0-.355 1.177c.224.411.747.56 1.177.336zm-.747 2.896c.486-.262.654-.859.411-1.345a1 1 0 0 0-1.73-.046 1 1 0 0 0-.026.999.99.99 0 0 0 1.326.392zm-1.588 2.503c.56-.28.747-.971.448-1.495s-.971-.747-1.495-.448c-.537.289-.737.958-.448 1.495s.958.737 1.495.448z" fill="url(#A)"/><path d="M36.954 18.291c-.253.856-1.152 1.346-2.008 1.093s-1.346-1.152-1.093-2.008c.114-.61.565-1.102 1.163-1.268s1.238.023 1.651.487.524 1.122.288 1.697zm-15.506 3.811c-.423-.121-.864.121-.99.542-.069.402.174.793.566.907s.807-.083.966-.459c.131-.411-.112-.859-.56-.99zm2.802-3.083c-.521-.155-1.069.142-1.224.663s.142 1.069.663 1.224a.99.99 0 0 0 1.214-.673.99.99 0 0 0-.672-1.214zm3.587-2.167a1.27 1.27 0 0 0-1.551.841 1.25 1.25 0 0 0 .859 1.551 1.25 1.25 0 0 0 1.454-.87 1.25 1.25 0 0 0-.744-1.522zm3.979-.897a1.4 1.4 0 0 0-1.644 2.004 1.4 1.4 0 0 0 2.578-.266 1.4 1.4 0 0 0-.953-1.756zm-12.144 9.958a.6.6 0 0 0-.678.419.6.6 0 0 0 .341.72c.318.093.654-.093.747-.411a.6.6 0 0 0-.411-.747zM43.96 29.5c-.114.415.127.843.541.962s.845-.118.968-.53-.108-.846-.518-.974c-.423-.121-.864.121-.99.542zm-.934-3.979a.99.99 0 0 0 .673 1.233.98.98 0 1 0 .542-1.887.99.99 0 0 0-1.233.654zm-2.335-3.587a1.25 1.25 0 0 0 1.795 1.461 1.25 1.25 0 0 0-.245-2.302 1.25 1.25 0 0 0-1.551.841zm-3.064-2.802a1.4 1.4 0 1 0 2.689.789 1.4 1.4 0 0 0-.933-1.742 1.42 1.42 0 0 0-1.756.953zm5.829 14.386a.6.6 0 0 0 .392.747.6.6 0 0 0 .808-.713.6.6 0 0 0-.471-.427.6.6 0 0 0-.729.411zm-13.75 9.285c.236-.574.124-1.232-.288-1.697s-1.052-.653-1.65-.487-1.049.658-1.163 1.268c-.121.414-.074.859.133 1.237s.555.659.969.78c.859.243 1.756-.243 1.999-1.121zm-9.976-12.144c.12-.285.066-.613-.139-.844s-.524-.325-.821-.24-.52.332-.572.636c-.12.285-.066.613.139.844s.524.325.821.24.52-.332.572-.636zm.934 3.979a.98.98 0 0 0-1.887-.542.99.99 0 0 0 1.189 1.345.99.99 0 0 0 .698-.803zm2.167 3.587a1.27 1.27 0 0 0-.859-1.569 1.25 1.25 0 1 0-.694 2.405 1.25 1.25 0 0 0 1.553-.836zm3.064 2.802a1.42 1.42 0 0 0-.953-1.756 1.41 1.41 0 1 0-.785 2.709 1.42 1.42 0 0 0 1.756-.953zm16.198-2.989c.423.121.864-.121.99-.542.121-.423-.121-.864-.542-.99-.423-.121-.864.121-.99.542-.121.423.121.864.542.99zm-2.802 3.083c.521.155 1.069-.142 1.224-.663s-.142-1.069-.663-1.224a.99.99 0 0 0-1.233.673.99.99 0 0 0 .673 1.214zm-3.587 2.167a1.25 1.25 0 0 0 1.454-.87 1.25 1.25 0 0 0-2.035-1.289 1.25 1.25 0 0 0 .582 2.158zm-3.979.878a1.4 1.4 0 0 0 1.738-.953 1.4 1.4 0 1 0-2.69-.785 1.4 1.4 0 0 0 .953 1.737z" fill="url(#B)"/><path d="M45.025 19.093c-.792.822-2.1.849-2.925.061s-.859-2.096-.074-2.925 2.092-.868 2.925-.087c.839.79.88 2.11.093 2.952zm-20.682-4.727a1.03 1.03 0 0 0-.736-.284c-.274.007-.533.123-.721.322a1.03 1.03 0 0 0 .774 1.723 1.03 1.03 0 0 0 .683-1.76zm5.194-1.98a1.27 1.27 0 0 0-1.793.056 1.27 1.27 0 0 0 .056 1.793 1.27 1.27 0 0 0 1.793-.056 1.27 1.27 0 0 0-.056-1.794zm5.549-.374c-.646-.6-1.655-.566-2.261.075-.572.65-.527 1.636.103 2.23s1.617.583 2.233-.026c.294-.311.451-.727.437-1.155s-.198-.833-.512-1.124zm5.269 1.345a1.81 1.81 0 0 0-3.004.9 1.81 1.81 0 0 0 .519 1.735c.728.685 1.873.652 2.56-.075s.652-1.873-.075-2.56zm-20.401 4.484c-.149-.139-.346-.213-.549-.206s-.395.095-.534.243c-.23.188-.331.492-.258.78s.304.508.596.565.589-.059.765-.299c.139-.149.213-.346.206-.55s-.095-.395-.243-.534zm26.342 18.813a1.03 1.03 0 0 0-.284.736c.007.274.123.533.322.721a1.03 1.03 0 0 0 1.401-1.495 1.03 1.03 0 0 0-1.457.037zm1.308-5.287a1.27 1.27 0 0 0 .056 1.775 1.26 1.26 0 1 0 1.737-1.831 1.27 1.27 0 0 0-1.793.056zm-.374-5.549c-.417.413-.577 1.021-.415 1.585s.619.996 1.192 1.125 1.171-.065 1.559-.505c.572-.65.527-1.636-.103-2.23s-1.617-.583-2.233.026zm-1.943-5.156a1.81 1.81 0 0 0 1.362 3.065 1.81 1.81 0 0 0 1.179-3.14c-.747-.691-1.868-.635-2.541.075zM43.68 41.251c-.139.149-.213.346-.206.55s.095.395.243.534c.188.23.492.331.779.258s.508-.304.565-.596-.059-.589-.299-.765a.75.75 0 0 0-.55-.214c-.205.007-.398.098-.534.252zm-22.045 2.672a2.08 2.08 0 1 0-3.026-2.858 2.08 2.08 0 1 0 3.026 2.858zm-4.484-20.42a1.03 1.03 0 0 0-.485-1.766 1.03 1.03 0 0 0-1.01.365c-.374.411-.374 1.046.037 1.439a1.01 1.01 0 0 0 1.438-.037zm-1.308 5.287a1.27 1.27 0 0 0-.056-1.794 1.27 1.27 0 0 0-1.737 1.831 1.27 1.27 0 0 0 1.793-.056zm.411 5.567c.394-.421.533-1.019.366-1.57s-.616-.972-1.177-1.102-1.149.048-1.543.468c-.6.646-.566 1.655.075 2.261.654.617 1.868.561 2.242-.056zm1.943 5.156c.685-.728.652-1.873-.075-2.56a1.81 1.81 0 0 0-3.004.9 1.81 1.81 0 0 0 .519 1.734c.728.685 1.873.652 2.56-.075zm21.111 6.259c.26.286.659.401 1.031.299s.657-.405.735-.783a1.03 1.03 0 0 0-1.756-.91 1.03 1.03 0 0 0-.01 1.395zm-5.194 1.962c.504.486 1.308.448 1.794-.056.475-.511.445-1.309-.065-1.784s-1.31-.445-1.784.065a1.27 1.27 0 0 0 .056 1.775zm-5.567.411c.654.617 1.868.561 2.242-.056.418-.413.577-1.021.415-1.585s-.619-.996-1.192-1.125-1.171.065-1.559.505c-.6.646-.566 1.655.075 2.261zm-5.231-1.345c.721.677 1.855.642 2.533-.078s.645-1.854-.075-2.534-1.853-.648-2.534.071c-.328.346-.505.809-.49 1.286s.217.928.565 1.255z" fill="url(#C)"/><path d="M53.451 23.503c-1.274.547-2.752-.037-3.307-1.308-.543-1.268.043-2.737 1.31-3.284s2.737.035 3.287 1.3-.027 2.737-1.29 3.291zM35.796 7.511a1.39 1.39 0 1 0-2.728.542 1.39 1.39 0 1 0 2.728-.542zm5.978 1.308a1.68 1.68 0 0 0-2.849-.847 1.68 1.68 0 0 0-.402 1.688 1.68 1.68 0 0 0 2.849.847 1.68 1.68 0 0 0 .402-1.688zm5.455 2.429c-.346-1.104-1.521-1.719-2.625-1.373s-1.719 1.521-1.373 2.625 1.521 1.719 2.625 1.373 1.719-1.521 1.373-2.625zm4.372 3.737a2.31 2.31 0 0 0-4.334 1.607c.245.83.932 1.454 1.781 1.619s1.72-.158 2.257-.837.651-1.6.296-2.389zM23.876 9.062a1.01 1.01 0 0 0-1.864.031 1.01 1.01 0 0 0 1.341 1.295c.504-.224.747-.822.523-1.308zm25.184 33.33c-.618.444-.761 1.303-.322 1.923s1.298.769 1.921.332.776-1.294.343-1.919c-.211-.305-.536-.512-.901-.575s-.741.023-1.042.239zm2.765-5.605a1.68 1.68 0 0 0 .069 2.966 1.68 1.68 0 0 0 2.179-2.399 1.68 1.68 0 0 0-2.248-.567zm1.308-6.09c-1.004.568-1.359 1.842-.793 2.847s1.839 1.363 2.846.8 1.367-1.836.806-2.844a2.09 2.09 0 0 0-1.262-.997c-.537-.151-1.111-.081-1.596.193zm-.075-6.109c-1.144.568-1.612 1.956-1.046 3.101s1.956 1.614 3.101 1.046 1.614-1.956 1.046-3.101-1.956-1.612-3.101-1.046zM40.354 49.621a1.01 1.01 0 0 0-.221 1.756 1.01 1.01 0 0 0 1.025.093c.504-.224.747-.822.523-1.308a1.01 1.01 0 0 0-1.326-.523zm-28.136-8.482c1.271-.555 1.855-2.032 1.308-3.307s-2.033-1.86-3.307-1.308-1.86 2.032-1.308 3.307 2.033 1.855 3.307 1.308zm2.429-23.503c.404-.287.624-.768.577-1.261s-.353-.924-.803-1.13-.977-.156-1.381.131c-.624.444-.771 1.309-.327 1.934s1.309.771 1.934.327zm-2.765 5.605a1.68 1.68 0 0 0-.526-3.063 1.68 1.68 0 0 0-1.791 2.54 1.68 1.68 0 0 0 2.317.523zm-1.308 6.09a2.1 2.1 0 0 0 .044-3.636 2.1 2.1 0 0 0-2.903 2.833 2.1 2.1 0 0 0 2.858.803zm.224 6.09c.779-.344 1.307-1.088 1.374-1.938s-.338-1.667-1.055-2.128-1.628-.493-2.374-.081c-1.085.599-1.507 1.946-.957 3.057s1.878 1.591 3.012 1.091zm17.244 17.263c.146.667.757 1.127 1.439 1.084a1.4 1.4 0 0 0 1.084-1.644c-.15-.748-.877-1.233-1.625-1.084s-1.233.877-1.084 1.625zm-5.978-1.308a1.68 1.68 0 0 0 3.075.454 1.68 1.68 0 0 0-1.861-2.49 1.68 1.68 0 0 0-1.214 2.036zm-5.661-2.653c.352 1.099 1.528 1.706 2.628 1.355s1.708-1.525 1.359-2.626-1.522-1.711-2.623-1.364c-1.104.341-1.723 1.512-1.383 2.616zm-4.39-3.736a2.3 2.3 0 0 0 2.97 1.364c1.111-.5 1.645-1.775 1.221-2.918s-1.659-1.762-2.828-1.417c-1.195.446-1.804 1.774-1.364 2.971zm33.068 1.868c-.469.371-.549 1.053-.177 1.523s1.053.549 1.523.178.549-1.053.178-1.523-1.053-.549-1.523-.177zm-10.163 4.39c-.591.089-.999.639-.911 1.231s.638 1 1.23.913 1.001-.637.915-1.228c-.042-.285-.195-.542-.426-.714s-.522-.244-.807-.202zM29.481 7.511c-.089-.591-.639-.999-1.231-.911s-1 .638-.913 1.229.637 1.001 1.228.915c.285-.041.542-.195.714-.426s.244-.522.202-.807zm-10.911 4.11c-.177-.23-.439-.379-.727-.414s-.578.047-.805.227c-.467.371-.547 1.049-.178 1.518s1.047.552 1.517.185.556-1.044.192-1.517z" fill="url(#D)"/><path d="M60.587 33.292c-1.77-.01-3.198-1.45-3.195-3.22s1.437-3.204 3.207-3.207 3.209 1.425 3.22 3.195c0 .856-.341 1.676-.948 2.279s-1.429.94-2.284.935zM48.164 5.53c.133-.621-.074-1.266-.545-1.692s-1.133-.568-1.738-.374-1.059.697-1.192 1.318a1.78 1.78 0 0 0 1.364 2.111 1.78 1.78 0 0 0 2.111-1.364zm6.352 4.54a2.15 2.15 0 0 0-1.791-2.45 2.15 2.15 0 0 0-2.454 1.785 2.15 2.15 0 0 0 3.386 2.075 2.15 2.15 0 0 0 .86-1.41zm5.119 5.904zm3.176 6.819c.088-1.63-1.163-3.023-2.793-3.111s-3.023 1.163-3.111 2.793c-.057 1.055.453 2.059 1.338 2.636s2.01.637 2.952.159 1.557-1.422 1.613-2.477zM33.348 1.308A1.3 1.3 0 0 0 32.041 0a1.29 1.29 0 0 0-1.289 1.289 1.29 1.29 0 0 0 1.289 1.289 1.3 1.3 0 0 0 1.308-1.308zm12.704 51.975c-.621.133-1.123.588-1.318 1.192s-.052 1.267.374 1.737 1.071.679 1.692.545a1.78 1.78 0 0 0 1.364-2.111 1.78 1.78 0 0 0-2.111-1.364zm5.978-4.969c-1.176.186-1.979 1.29-1.794 2.466s1.29 1.979 2.466 1.794 1.979-1.29 1.793-2.466-1.29-1.979-2.466-1.793zm4.633-6.501a2.69 2.69 0 0 0-1.417 4.766 2.69 2.69 0 0 0 4.369-2.375 2.69 2.69 0 0 0-2.952-2.391zm2.989-7.23a2.97 2.97 0 0 0-2.802 3.101c.088 1.63 1.48 2.881 3.111 2.793s2.881-1.48 2.793-3.111a2.97 2.97 0 0 0-3.12-2.802zm-27.65 22.98a1.29 1.29 0 0 0-1.289 1.289 1.29 1.29 0 0 0 2.406.645 1.29 1.29 0 0 0-1.116-1.934zM3.232 33.274c1.77-.01 3.198-1.45 3.195-3.22S4.989 26.85 3.22 26.847.01 28.272 0 30.042c.01 1.778 1.454 3.213 3.232 3.213zM18.178 6.857c.461-.098.864-.376 1.12-.773s.343-.878.244-1.338c-.207-.957-1.151-1.566-2.109-1.36s-1.567 1.15-1.361 2.107 1.148 1.568 2.106 1.363zm-5.978 4.97a2.15 2.15 0 0 0 1.779-2.459 2.15 2.15 0 0 0-2.454-1.785 2.15 2.15 0 0 0-.931 3.86 2.15 2.15 0 0 0 1.606.383zm-4.633 6.502a2.69 2.69 0 0 0-.561-5.343c-.954.1-1.783.702-2.173 1.579s-.284 1.895.28 2.672 1.499 1.193 2.454 1.093zm-2.989 7.23a2.97 2.97 0 0 0 2.802-3.12 2.95 2.95 0 0 0-3.12-2.802c-1.63.088-2.881 1.48-2.793 3.111s1.48 2.881 3.111 2.793zm11.508 29.051c-.205.958.406 1.901 1.363 2.106s1.901-.404 2.107-1.361-.402-1.901-1.36-2.109c-.461-.1-.942-.012-1.339.244s-.674.659-.773 1.12zm-6.352-4.54a2.15 2.15 0 0 0 1.794 2.466 2.15 2.15 0 0 0 2.45-1.791 2.15 2.15 0 0 0-1.785-2.454 2.15 2.15 0 0 0-2.459 1.779zm-5.287-5.904c-.155 1.475.916 2.797 2.391 2.952s2.797-.916 2.952-2.391a2.69 2.69 0 0 0-2.391-2.952 2.67 2.67 0 0 0-2.952 2.391zm-3.363-6.763a2.95 2.95 0 0 0 2.802 3.101c1.055.057 2.059-.454 2.636-1.338s.637-2.01.159-2.952-1.422-1.557-2.477-1.614a2.97 2.97 0 0 0-3.12 2.802zm37.851 19.168c-.736.202-1.169.962-.968 1.698s.96 1.17 1.697.97 1.171-.959.971-1.696c-.092-.358-.324-.664-.643-.85a1.38 1.38 0 0 0-1.057-.14zm-14.199 0a1.39 1.39 0 0 0-.71 2.69 1.39 1.39 0 0 0 1.697-1.71 1.39 1.39 0 0 0-.987-.98zm15.88-53.899c.19-.737-.252-1.489-.989-1.682s-1.49.246-1.686.982.24 1.491.975 1.69a1.38 1.38 0 0 0 1.7-.99zm-14.871-.766a1.39 1.39 0 1 0-2.69.71 1.39 1.39 0 1 0 2.69-.71z" fill="url(#E)"/></g></symbol></svg> \ No newline at end of file +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + viewBox="0 0 73.69671 73.69671" + fill="#ffffff" + fill-rule="evenodd" + stroke="#000000" + stroke-linecap="round" + stroke-linejoin="round" + version="1.1" + id="svg94" + sodipodi:docname="reuters-icon.svg" + width="73.696709" + height="73.696709" + inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview96" + pagecolor="#000000" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + showgrid="false" + inkscape:zoom="6.9039705" + inkscape:cx="14.339574" + inkscape:cy="36.500735" + inkscape:window-width="1888" + inkscape:window-height="1060" + inkscape:window-x="32" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="svg94" /> + <use + xlink:href="#F" + x="9.3409996" + y="9.3409996" + id="use2" /> + <defs + id="defs79"> + <linearGradient + id="A" + x1="40.08743" + y1="25.26118" + x2="22.376516" + y2="34.680659" + gradientTransform="scale(0.99293853,1.0071117)" + gradientUnits="userSpaceOnUse"> + <stop + offset="0%" + stop-color="#ff9100" + id="stop4" /> + <stop + offset="5%" + stop-color="#ff8d00" + id="stop6" /> + <stop + offset="25%" + stop-color="#ff8300" + id="stop8" /> + <stop + offset="50%" + stop-color="#ff8000" + id="stop10" /> + <stop + offset="75%" + stop-color="#ff8300" + id="stop12" /> + <stop + offset="95%" + stop-color="#ff8d00" + id="stop14" /> + <stop + offset="100%" + stop-color="#ff9100" + id="stop16" /> + </linearGradient> + <linearGradient + id="B" + x1="45.429384" + y1="33.273694" + x2="19.314299" + y2="25.853212" + gradientTransform="scale(0.98286426,1.0174345)" + gradientUnits="userSpaceOnUse"> + <stop + offset="0%" + stop-color="#ff9100" + id="stop19" /> + <stop + offset="5%" + stop-color="#ff8d00" + id="stop21" /> + <stop + offset="25%" + stop-color="#ff8300" + id="stop23" /> + <stop + offset="50%" + stop-color="#ff8000" + id="stop25" /> + <stop + offset="75%" + stop-color="#ff8300" + id="stop27" /> + <stop + offset="95%" + stop-color="#ff8d00" + id="stop29" /> + <stop + offset="100%" + stop-color="#ff9100" + id="stop31" /> + </linearGradient> + <linearGradient + id="C" + x1="44.712879" + y1="42.381865" + x2="19.37669" + y2="17.365363" + gradientTransform="scale(0.99319606,1.0068505)" + gradientUnits="userSpaceOnUse"> + <stop + offset="0%" + stop-color="#ff9100" + id="stop34" /> + <stop + offset="5%" + stop-color="#ff8d00" + id="stop36" /> + <stop + offset="25%" + stop-color="#ff8300" + id="stop38" /> + <stop + offset="50%" + stop-color="#ff8000" + id="stop40" /> + <stop + offset="75%" + stop-color="#ff8300" + id="stop42" /> + <stop + offset="95%" + stop-color="#ff8d00" + id="stop44" /> + <stop + offset="100%" + stop-color="#ff9100" + id="stop46" /> + </linearGradient> + <linearGradient + id="D" + x1="40.455486" + y1="52.489434" + x2="22.145054" + y2="8.6782826" + gradientTransform="scale(1.0164746,0.98379237)" + gradientUnits="userSpaceOnUse"> + <stop + offset="0%" + stop-color="#ff9100" + id="stop49" /> + <stop + offset="5%" + stop-color="#ff8d00" + id="stop51" /> + <stop + offset="25%" + stop-color="#ff8300" + id="stop53" /> + <stop + offset="50%" + stop-color="#ff8000" + id="stop55" /> + <stop + offset="75%" + stop-color="#ff8300" + id="stop57" /> + <stop + offset="95%" + stop-color="#ff8d00" + id="stop59" /> + <stop + offset="100%" + stop-color="#ff9100" + id="stop61" /> + </linearGradient> + <linearGradient + id="E" + x1="30.883168" + y1="61.970756" + x2="30.883168" + y2="0.018566106" + gradientTransform="scale(1.030133,0.97074843)" + gradientUnits="userSpaceOnUse"> + <stop + offset="0%" + stop-color="#ff9100" + id="stop64" /> + <stop + offset="5%" + stop-color="#ff8d00" + id="stop66" /> + <stop + offset="25%" + stop-color="#ff8300" + id="stop68" /> + <stop + offset="50%" + stop-color="#ff8000" + id="stop70" /> + <stop + offset="75%" + stop-color="#ff8300" + id="stop72" /> + <stop + offset="95%" + stop-color="#ff8d00" + id="stop74" /> + <stop + offset="100%" + stop-color="#ff9100" + id="stop76" /> + </linearGradient> + </defs> + <symbol + id="F" + overflow="visible" + transform="translate(-4.493145,-2.993145)"> + <g + stroke="none" + fill-rule="nonzero" + id="g91"> + <path + d="m 28.509,21.28 c 0.318,0.616 0.112,1.364 -0.504,1.868 a 1.25,1.25 0 0 1 -1.7,-0.691 c -0.336,-0.598 -0.112,-1.364 0.504,-1.868 a 1.25,1.25 0 0 1 1.7,0.505 z m -6.203,9.827 a 0.75,0.75 0 0 0 -0.299,1.009 c 0.196,0.361 0.648,0.495 1.009,0.299 0.361,-0.196 0.495,-0.648 0.299,-1.009 a 0.75,0.75 0 0 0 -1.009,-0.299 z m -0.299,-3.045 a 0.86,0.86 0 0 0 -0.336,1.158 c 0.224,0.43 0.747,0.56 1.177,0.374 0.43,-0.186 0.561,-0.747 0.374,-1.177 a 0.86,0.86 0 0 0 -1.177,-0.336 z m 0.785,-2.914 a 0.99,0.99 0 0 0 -0.411,1.326 0.98,0.98 0 0 0 1.345,0.374 0.99,0.99 0 0 0 0.411,-1.345 0.99,0.99 0 0 0 -1.326,-0.392 z m 1.607,-2.522 a 1.1,1.1 0 0 0 -0.448,1.513 1.07,1.07 0 0 0 1.495,0.448 1.11,1.11 0 0 0 0.065,-1.924 1.11,1.11 0 0 0 -1.111,-0.037 z m -1.214,11.303 a 0.62,0.62 0 0 0 -0.243,0.841 0.62,0.62 0 0 0 0.841,0.243 c 0.292,-0.171 0.399,-0.541 0.243,-0.841 -0.079,-0.144 -0.212,-0.251 -0.37,-0.296 -0.158,-0.045 -0.327,-0.026 -0.471,0.054 z M 37.458,23.654 a 0.75,0.75 0 0 0 1.009,0.299 0.75,0.75 0 0 0 0.299,-1.009 c -0.196,-0.361 -0.648,-0.495 -1.009,-0.299 -0.361,0.196 -0.495,0.648 -0.299,1.009 z m -2.373,-1.569 c 0.224,0.411 0.747,0.56 1.158,0.336 0.411,-0.224 0.56,-0.747 0.374,-1.158 a 0.86093743,0.86093743 0 1 0 -1.513,0.822 z M 32.189,21.3 c 0.258,0.48 0.856,0.66 1.336,0.402 0.48,-0.258 0.66,-0.856 0.402,-1.336 -0.258,-0.48 -0.856,-0.66 -1.336,-0.402 -0.48,0.258 -0.66,0.856 -0.402,1.336 z m -3.027,0.112 c 0.139,0.263 0.377,0.459 0.662,0.543 a 1.1,1.1 0 0 0 0.851,-0.095 1.12,1.12 0 0 0 0.448,-1.513 c -0.289,-0.537 -0.958,-0.737 -1.495,-0.448 -0.537,0.289 -0.737,0.958 -0.448,1.495 z m 10.313,4.521 c 0.149,0.299 0.56,0.411 0.822,0.243 0.143,-0.075 0.249,-0.205 0.295,-0.36 0.046,-0.155 0.027,-0.322 -0.052,-0.462 -0.075,-0.147 -0.207,-0.258 -0.365,-0.307 -0.158,-0.049 -0.329,-0.033 -0.475,0.046 -0.28,0.187 -0.411,0.56 -0.243,0.841 z m -2.13,11.77 c -0.33,-0.609 -1.091,-0.835 -1.7,-0.504 -0.609,0.331 -0.835,1.091 -0.505,1.7 0.336,0.617 1.121,0.822 1.868,0.504 0.747,-0.318 0.841,-1.121 0.505,-1.868 z M 26.023,36.489 C 25.826,36.14 25.39,36.008 25.033,36.19 a 0.73,0.73 0 0 0 -0.295,0.986 0.73,0.73 0 0 0 0.985,0.297 0.73,0.73 0 0 0 0.3,-0.984 z m 2.504,1.588 a 0.86093743,0.86093743 0 1 0 -1.513,0.822 c 0.224,0.411 0.747,0.561 1.158,0.374 a 0.88,0.88 0 0 0 0.355,-1.177 z m 2.896,0.785 c -0.262,-0.486 -0.859,-0.654 -1.345,-0.374 a 0.99,0.99 0 0 0 -0.392,1.327 c 0.262,0.486 0.859,0.654 1.345,0.411 a 0.97,0.97 0 0 0 0.411,-1.345 z M 34.45,38.75 a 1.12,1.12 0 0 0 -1.513,-0.448 c -0.56,0.28 -0.747,0.934 -0.43,1.495 0.135,0.262 0.37,0.457 0.652,0.542 0.282,0.085 0.586,0.051 0.843,-0.093 0.56,-0.28 0.747,-0.934 0.448,-1.495 z m 6.875,-9.659 c 0.176,-0.092 0.308,-0.249 0.368,-0.439 0.06,-0.19 0.041,-0.394 -0.05,-0.57 -0.196,-0.361 -0.648,-0.495 -1.009,-0.299 -0.361,0.196 -0.495,0.648 -0.299,1.009 a 0.75,0.75 0 0 0 0.99,0.299 z m 0.131,2.989 c 0.411,-0.224 0.56,-0.747 0.336,-1.177 a 0.86,0.86 0 0 0 -1.158,-0.355 0.88,0.88 0 0 0 -0.355,1.177 c 0.224,0.411 0.747,0.56 1.177,0.336 z m -0.747,2.896 c 0.486,-0.262 0.654,-0.859 0.411,-1.345 a 1,1 0 0 0 -1.73,-0.046 1,1 0 0 0 -0.026,0.999 0.99,0.99 0 0 0 1.326,0.392 z m -1.588,2.503 c 0.56,-0.28 0.747,-0.971 0.448,-1.495 -0.299,-0.524 -0.971,-0.747 -1.495,-0.448 -0.537,0.289 -0.737,0.958 -0.448,1.495 0.289,0.537 0.958,0.737 1.495,0.448 z" + fill="url(#A)" + id="path81" + style="fill:url(#A)" /> + <path + d="m 36.954,18.291 c -0.253,0.856 -1.152,1.346 -2.008,1.093 -0.856,-0.253 -1.346,-1.152 -1.093,-2.008 0.114,-0.61 0.565,-1.102 1.163,-1.268 0.598,-0.166 1.238,0.023 1.651,0.487 0.413,0.464 0.524,1.122 0.288,1.697 z m -15.506,3.811 c -0.423,-0.121 -0.864,0.121 -0.99,0.542 -0.069,0.402 0.174,0.793 0.566,0.907 0.392,0.114 0.807,-0.083 0.966,-0.459 0.131,-0.411 -0.112,-0.859 -0.56,-0.99 z m 2.802,-3.083 c -0.521,-0.155 -1.069,0.142 -1.224,0.663 -0.155,0.521 0.142,1.069 0.663,1.224 a 0.99,0.99 0 0 0 1.214,-0.673 0.99,0.99 0 0 0 -0.672,-1.214 z m 3.587,-2.167 a 1.27,1.27 0 0 0 -1.551,0.841 1.25,1.25 0 0 0 0.859,1.551 1.25,1.25 0 0 0 1.454,-0.87 1.25,1.25 0 0 0 -0.744,-1.522 z m 3.979,-0.897 a 1.4,1.4 0 0 0 -1.644,2.004 1.4,1.4 0 0 0 2.578,-0.266 1.4,1.4 0 0 0 -0.953,-1.756 z m -12.144,9.958 a 0.6,0.6 0 0 0 -0.678,0.419 0.6,0.6 0 0 0 0.341,0.72 c 0.318,0.093 0.654,-0.093 0.747,-0.411 A 0.6,0.6 0 0 0 19.671,25.894 Z M 43.96,29.5 c -0.114,0.415 0.127,0.843 0.541,0.962 0.414,0.119 0.845,-0.118 0.968,-0.53 0.123,-0.412 -0.108,-0.846 -0.518,-0.974 -0.423,-0.121 -0.864,0.121 -0.99,0.542 z m -0.934,-3.979 a 0.99,0.99 0 0 0 0.673,1.233 0.98164823,0.98164823 0 1 0 0.542,-1.887 0.99,0.99 0 0 0 -1.233,0.654 z m -2.335,-3.587 a 1.25,1.25 0 0 0 1.795,1.461 1.25,1.25 0 0 0 -0.245,-2.302 1.25,1.25 0 0 0 -1.551,0.841 z m -3.064,-2.802 a 1.4011818,1.4011818 0 1 0 2.689,0.789 1.4,1.4 0 0 0 -0.933,-1.742 1.42,1.42 0 0 0 -1.756,0.953 z m 5.829,14.386 a 0.6,0.6 0 0 0 0.392,0.747 0.6,0.6 0 0 0 0.808,-0.713 0.6,0.6 0 0 0 -0.471,-0.427 0.6,0.6 0 0 0 -0.729,0.411 z m -13.75,9.285 c 0.236,-0.574 0.124,-1.232 -0.288,-1.697 -0.412,-0.465 -1.052,-0.653 -1.65,-0.487 -0.598,0.166 -1.049,0.658 -1.163,1.268 -0.121,0.414 -0.074,0.859 0.133,1.237 0.207,0.378 0.555,0.659 0.969,0.78 0.859,0.243 1.756,-0.243 1.999,-1.121 z M 19.73,30.659 c 0.12,-0.285 0.066,-0.613 -0.139,-0.844 -0.205,-0.231 -0.524,-0.325 -0.821,-0.24 -0.297,0.085 -0.52,0.332 -0.572,0.636 -0.12,0.285 -0.066,0.613 0.139,0.844 0.205,0.231 0.524,0.325 0.821,0.24 0.297,-0.085 0.52,-0.332 0.572,-0.636 z m 0.934,3.979 a 0.98164823,0.98164823 0 0 0 -1.887,-0.542 0.99,0.99 0 0 0 1.189,1.345 0.99,0.99 0 0 0 0.698,-0.803 z m 2.167,3.587 a 1.27,1.27 0 0 0 -0.859,-1.569 1.2515651,1.2515651 0 1 0 -0.694,2.405 1.25,1.25 0 0 0 1.553,-0.836 z m 3.064,2.802 a 1.42,1.42 0 0 0 -0.953,-1.756 1.4102221,1.4102221 0 1 0 -0.785,2.709 1.42,1.42 0 0 0 1.756,-0.953 z m 16.198,-2.989 c 0.423,0.121 0.864,-0.121 0.99,-0.542 0.121,-0.423 -0.121,-0.864 -0.542,-0.99 -0.423,-0.121 -0.864,0.121 -0.99,0.542 -0.121,0.423 0.121,0.864 0.542,0.99 z m -2.802,3.083 c 0.521,0.155 1.069,-0.142 1.224,-0.663 0.155,-0.521 -0.142,-1.069 -0.663,-1.224 a 0.99,0.99 0 0 0 -1.233,0.673 0.99,0.99 0 0 0 0.673,1.214 z m -3.587,2.167 a 1.25,1.25 0 0 0 1.454,-0.87 1.25,1.25 0 0 0 -2.035,-1.289 1.25,1.25 0 0 0 0.582,2.158 z m -3.979,0.878 a 1.4,1.4 0 0 0 1.738,-0.953 1.4011,1.4011 0 1 0 -2.69,-0.785 1.4,1.4 0 0 0 0.953,1.737 z" + fill="url(#B)" + id="path83" + style="fill:url(#B)" /> + <path + d="m 45.025,19.093 c -0.792,0.822 -2.1,0.849 -2.925,0.061 -0.825,-0.788 -0.859,-2.096 -0.074,-2.925 0.785,-0.829 2.092,-0.868 2.925,-0.087 0.839,0.79 0.88,2.11 0.093,2.952 z M 24.343,14.366 a 1.03,1.03 0 0 0 -0.736,-0.284 c -0.274,0.007 -0.533,0.123 -0.721,0.322 a 1.03,1.03 0 0 0 0.774,1.723 1.03,1.03 0 0 0 0.683,-1.76 z m 5.194,-1.98 a 1.27,1.27 0 0 0 -1.793,0.056 1.27,1.27 0 0 0 0.056,1.793 1.27,1.27 0 0 0 1.793,-0.056 1.27,1.27 0 0 0 -0.056,-1.794 z m 5.549,-0.374 c -0.646,-0.6 -1.655,-0.566 -2.261,0.075 -0.572,0.65 -0.527,1.636 0.103,2.23 0.63,0.594 1.617,0.583 2.233,-0.026 0.294,-0.311 0.451,-0.727 0.437,-1.155 -0.014,-0.428 -0.198,-0.833 -0.512,-1.124 z m 5.269,1.345 a 1.81,1.81 0 0 0 -3.004,0.9 1.81,1.81 0 0 0 0.519,1.735 c 0.728,0.685 1.873,0.652 2.56,-0.075 0.687,-0.727 0.652,-1.873 -0.075,-2.56 z m -20.401,4.484 c -0.149,-0.139 -0.346,-0.213 -0.549,-0.206 -0.203,0.007 -0.395,0.095 -0.534,0.243 -0.23,0.188 -0.331,0.492 -0.258,0.78 0.073,0.288 0.304,0.508 0.596,0.565 0.292,0.057 0.589,-0.059 0.765,-0.299 0.139,-0.149 0.213,-0.346 0.206,-0.55 -0.007,-0.204 -0.095,-0.395 -0.243,-0.534 z m 26.342,18.813 a 1.03,1.03 0 0 0 -0.284,0.736 c 0.007,0.274 0.123,0.533 0.322,0.721 a 1.03,1.03 0 0 0 1.401,-1.495 1.03,1.03 0 0 0 -1.457,0.037 z m 1.308,-5.287 a 1.27,1.27 0 0 0 0.056,1.775 1.2619162,1.2619162 0 1 0 1.737,-1.831 1.27,1.27 0 0 0 -1.793,0.056 z M 47.23,25.818 c -0.417,0.413 -0.577,1.021 -0.415,1.585 0.162,0.564 0.619,0.996 1.192,1.125 0.573,0.129 1.171,-0.065 1.559,-0.505 0.572,-0.65 0.527,-1.636 -0.103,-2.23 -0.63,-0.594 -1.617,-0.583 -2.233,0.026 z m -1.943,-5.156 a 1.81,1.81 0 0 0 1.362,3.065 1.81,1.81 0 0 0 1.179,-3.14 C 47.081,19.896 45.96,19.952 45.287,20.662 Z M 43.68,41.251 c -0.139,0.149 -0.213,0.346 -0.206,0.55 0.007,0.204 0.095,0.395 0.243,0.534 0.188,0.23 0.492,0.331 0.779,0.258 0.287,-0.073 0.508,-0.304 0.565,-0.596 0.057,-0.292 -0.059,-0.589 -0.299,-0.765 a 0.75,0.75 0 0 0 -0.55,-0.214 c -0.205,0.007 -0.398,0.098 -0.534,0.252 z m -22.045,2.672 a 2.0811559,2.0811559 0 1 0 -3.026,-2.858 2.0811559,2.0811559 0 1 0 3.026,2.858 z m -4.484,-20.42 a 1.03,1.03 0 0 0 -0.485,-1.766 1.03,1.03 0 0 0 -1.01,0.365 c -0.374,0.411 -0.374,1.046 0.037,1.439 a 1.01,1.01 0 0 0 1.438,-0.037 z m -1.308,5.287 a 1.27,1.27 0 0 0 -0.056,-1.794 1.27,1.27 0 0 0 -1.737,1.831 1.27,1.27 0 0 0 1.793,-0.056 z m 0.411,5.567 c 0.394,-0.421 0.533,-1.019 0.366,-1.57 -0.167,-0.551 -0.616,-0.972 -1.177,-1.102 -0.561,-0.13 -1.149,0.048 -1.543,0.468 -0.6,0.646 -0.566,1.655 0.075,2.261 0.654,0.617 1.868,0.561 2.242,-0.056 z m 1.943,5.156 c 0.685,-0.728 0.652,-1.873 -0.075,-2.56 a 1.81,1.81 0 0 0 -3.004,0.9 1.81,1.81 0 0 0 0.519,1.734 c 0.728,0.685 1.873,0.652 2.56,-0.075 z m 21.111,6.259 c 0.26,0.286 0.659,0.401 1.031,0.299 0.372,-0.102 0.657,-0.405 0.735,-0.783 a 1.03,1.03 0 0 0 -1.756,-0.91 1.03,1.03 0 0 0 -0.01,1.395 z m -5.194,1.962 c 0.504,0.486 1.308,0.448 1.794,-0.056 0.475,-0.511 0.445,-1.309 -0.065,-1.784 -0.51,-0.475 -1.31,-0.445 -1.784,0.065 a 1.27,1.27 0 0 0 0.056,1.775 z m -5.567,0.411 c 0.654,0.617 1.868,0.561 2.242,-0.056 0.418,-0.413 0.577,-1.021 0.415,-1.585 -0.162,-0.564 -0.619,-0.996 -1.192,-1.125 -0.573,-0.129 -1.171,0.065 -1.559,0.505 -0.6,0.646 -0.566,1.655 0.075,2.261 z M 23.316,46.8 c 0.721,0.677 1.855,0.642 2.533,-0.078 0.678,-0.72 0.645,-1.854 -0.075,-2.534 -0.72,-0.68 -1.853,-0.648 -2.534,0.071 -0.328,0.346 -0.505,0.809 -0.49,1.286 0.015,0.477 0.217,0.928 0.565,1.255 z" + fill="url(#C)" + id="path85" + style="fill:url(#C)" /> + <path + d="m 53.451,23.503 c -1.274,0.547 -2.752,-0.037 -3.307,-1.308 -0.543,-1.268 0.043,-2.737 1.31,-3.284 1.267,-0.547 2.737,0.035 3.287,1.3 0.55,1.265 -0.027,2.737 -1.29,3.291 z M 35.796,7.511 a 1.3906606,1.3906606 0 1 0 -2.728,0.542 1.3906606,1.3906606 0 1 0 2.728,-0.542 z m 5.978,1.308 a 1.68,1.68 0 0 0 -2.849,-0.847 1.68,1.68 0 0 0 -0.402,1.688 1.68,1.68 0 0 0 2.849,0.847 1.68,1.68 0 0 0 0.402,-1.688 z m 5.455,2.429 C 46.883,10.144 45.708,9.529 44.604,9.875 43.5,10.221 42.885,11.396 43.231,12.5 c 0.346,1.104 1.521,1.719 2.625,1.373 1.104,-0.346 1.719,-1.521 1.373,-2.625 z m 4.372,3.737 a 2.3111688,2.3111688 0 0 0 -4.334,1.607 c 0.245,0.83 0.932,1.454 1.781,1.619 0.849,0.165 1.72,-0.158 2.257,-0.837 0.537,-0.679 0.651,-1.6 0.296,-2.389 z M 23.876,9.062 a 1.01,1.01 0 0 0 -1.864,0.031 1.01,1.01 0 0 0 1.341,1.295 C 23.857,10.164 24.1,9.566 23.876,9.08 Z m 25.184,33.33 c -0.618,0.444 -0.761,1.303 -0.322,1.923 0.439,0.62 1.298,0.769 1.921,0.332 0.623,-0.437 0.776,-1.294 0.343,-1.919 -0.211,-0.305 -0.536,-0.512 -0.901,-0.575 -0.365,-0.063 -0.741,0.023 -1.042,0.239 z m 2.765,-5.605 a 1.68,1.68 0 0 0 0.069,2.966 1.68,1.68 0 0 0 2.179,-2.399 1.68,1.68 0 0 0 -2.248,-0.567 z m 1.308,-6.09 c -1.004,0.568 -1.359,1.842 -0.793,2.847 0.566,1.005 1.839,1.363 2.846,0.8 1.007,-0.563 1.367,-1.836 0.806,-2.844 A 2.09,2.09 0 0 0 54.73,30.503 c -0.537,-0.151 -1.111,-0.081 -1.596,0.193 z m -0.075,-6.109 c -1.144,0.568 -1.612,1.956 -1.046,3.101 0.566,1.145 1.956,1.614 3.101,1.046 1.145,-0.568 1.614,-1.956 1.046,-3.101 -0.568,-1.145 -1.956,-1.612 -3.101,-1.046 z M 40.354,49.621 a 1.01,1.01 0 0 0 -0.221,1.756 1.01,1.01 0 0 0 1.025,0.093 c 0.504,-0.224 0.747,-0.822 0.523,-1.308 A 1.01,1.01 0 0 0 40.355,49.639 Z M 12.218,41.139 c 1.271,-0.555 1.855,-2.032 1.308,-3.307 -0.547,-1.275 -2.033,-1.86 -3.307,-1.308 -1.274,0.552 -1.86,2.032 -1.308,3.307 0.552,1.275 2.033,1.855 3.307,1.308 z m 2.429,-23.503 c 0.404,-0.287 0.624,-0.768 0.577,-1.261 -0.047,-0.493 -0.353,-0.924 -0.803,-1.13 -0.45,-0.206 -0.977,-0.156 -1.381,0.131 -0.624,0.444 -0.771,1.309 -0.327,1.934 0.444,0.625 1.309,0.771 1.934,0.327 z m -2.765,5.605 a 1.68,1.68 0 0 0 -0.526,-3.063 1.68,1.68 0 0 0 -1.791,2.54 1.68,1.68 0 0 0 2.317,0.523 z m -1.308,6.09 a 2.1,2.1 0 0 0 0.044,-3.636 2.1,2.1 0 0 0 -2.903,2.833 2.1,2.1 0 0 0 2.858,0.803 z m 0.224,6.09 c 0.779,-0.344 1.307,-1.088 1.374,-1.938 0.067,-0.85 -0.338,-1.667 -1.055,-2.128 C 10.4,30.894 9.489,30.862 8.743,31.274 7.658,31.873 7.236,33.22 7.786,34.331 c 0.55,1.111 1.878,1.591 3.012,1.091 z m 17.244,17.263 c 0.146,0.667 0.757,1.127 1.439,1.084 a 1.4,1.4 0 0 0 1.084,-1.644 c -0.15,-0.748 -0.877,-1.233 -1.625,-1.084 -0.748,0.149 -1.233,0.877 -1.084,1.625 z m -5.978,-1.308 a 1.68,1.68 0 0 0 3.075,0.454 1.68,1.68 0 0 0 -1.861,-2.49 1.68,1.68 0 0 0 -1.214,2.036 z m -5.661,-2.653 c 0.352,1.099 1.528,1.706 2.628,1.355 1.1,-0.351 1.708,-1.525 1.359,-2.626 -0.349,-1.101 -1.522,-1.711 -2.623,-1.364 -1.104,0.341 -1.723,1.512 -1.383,2.616 z m -4.39,-3.736 a 2.3,2.3 0 0 0 2.97,1.364 c 1.111,-0.5 1.645,-1.775 1.221,-2.918 -0.424,-1.143 -1.659,-1.762 -2.828,-1.417 -1.195,0.446 -1.804,1.774 -1.364,2.971 z m 33.068,1.868 c -0.469,0.371 -0.549,1.053 -0.177,1.523 0.372,0.47 1.053,0.549 1.523,0.178 0.47,-0.371 0.549,-1.053 0.178,-1.523 -0.371,-0.47 -1.053,-0.549 -1.523,-0.177 z m -10.163,4.39 c -0.591,0.089 -0.999,0.639 -0.911,1.231 0.088,0.592 0.638,1 1.23,0.913 0.592,-0.087 1.001,-0.637 0.915,-1.228 -0.042,-0.285 -0.195,-0.542 -0.426,-0.714 -0.231,-0.172 -0.522,-0.244 -0.807,-0.202 z M 29.481,7.511 C 29.392,6.92 28.842,6.512 28.25,6.6 c -0.592,0.088 -1,0.638 -0.913,1.229 0.087,0.591 0.637,1.001 1.228,0.915 0.285,-0.041 0.542,-0.195 0.714,-0.426 0.172,-0.231 0.244,-0.522 0.202,-0.807 z m -10.911,4.11 c -0.177,-0.23 -0.439,-0.379 -0.727,-0.414 -0.288,-0.035 -0.578,0.047 -0.805,0.227 -0.467,0.371 -0.547,1.049 -0.178,1.518 0.369,0.469 1.047,0.552 1.517,0.185 0.47,-0.367 0.556,-1.044 0.192,-1.517 z" + fill="url(#D)" + id="path87" + style="fill:url(#D)" /> + <path + d="m 60.587,33.292 c -1.77,-0.01 -3.198,-1.45 -3.195,-3.22 0.003,-1.77 1.437,-3.204 3.207,-3.207 1.77,-0.003 3.209,1.425 3.22,3.195 0,0.856 -0.341,1.676 -0.948,2.279 -0.607,0.603 -1.429,0.94 -2.284,0.935 z M 48.164,5.53 C 48.297,4.909 48.09,4.264 47.619,3.838 47.148,3.412 46.486,3.27 45.881,3.464 45.276,3.658 44.822,4.161 44.689,4.782 a 1.78,1.78 0 0 0 1.364,2.111 1.78,1.78 0 0 0 2.111,-1.364 z m 6.352,4.54 a 2.15,2.15 0 0 0 -1.791,-2.45 2.15,2.15 0 0 0 -2.454,1.785 2.15,2.15 0 0 0 3.386,2.075 2.15,2.15 0 0 0 0.86,-1.41 z m 5.119,5.904 z m 3.176,6.819 c 0.088,-1.63 -1.163,-3.023 -2.793,-3.111 -1.63,-0.088 -3.023,1.163 -3.111,2.793 -0.057,1.055 0.453,2.059 1.338,2.636 0.885,0.577 2.01,0.637 2.952,0.159 0.942,-0.478 1.557,-1.422 1.613,-2.477 z M 33.348,1.308 A 1.3,1.3 0 0 0 32.041,0 1.29,1.29 0 0 0 30.752,1.289 1.29,1.29 0 0 0 32.041,2.578 1.3,1.3 0 0 0 33.349,1.27 Z m 12.704,51.975 c -0.621,0.133 -1.123,0.588 -1.318,1.192 -0.195,0.604 -0.052,1.267 0.374,1.737 0.426,0.47 1.071,0.679 1.692,0.545 a 1.78,1.78 0 0 0 1.364,-2.111 1.78,1.78 0 0 0 -2.111,-1.364 z m 5.978,-4.969 c -1.176,0.186 -1.979,1.29 -1.794,2.466 0.185,1.176 1.29,1.979 2.466,1.794 1.176,-0.185 1.979,-1.29 1.793,-2.466 -0.186,-1.176 -1.29,-1.979 -2.466,-1.793 z m 4.633,-6.501 a 2.69,2.69 0 0 0 -1.417,4.766 2.69,2.69 0 0 0 4.369,-2.375 2.69,2.69 0 0 0 -2.952,-2.391 z m 2.989,-7.23 a 2.97,2.97 0 0 0 -2.802,3.101 c 0.088,1.63 1.48,2.881 3.111,2.793 1.631,-0.088 2.881,-1.48 2.793,-3.111 a 2.97,2.97 0 0 0 -3.12,-2.802 z m -27.65,22.98 a 1.29,1.29 0 0 0 -1.289,1.289 1.29,1.29 0 0 0 2.406,0.645 1.29,1.29 0 0 0 -1.116,-1.934 z M 3.232,33.274 c 1.77,-0.01 3.198,-1.45 3.195,-3.22 C 6.424,28.284 4.989,26.85 3.22,26.847 1.451,26.844 0.01,28.272 0,30.042 0.01,31.82 1.454,33.255 3.232,33.255 Z M 18.178,6.857 c 0.461,-0.098 0.864,-0.376 1.12,-0.773 0.256,-0.397 0.343,-0.878 0.244,-1.338 -0.207,-0.957 -1.151,-1.566 -2.109,-1.36 -0.958,0.206 -1.567,1.15 -1.361,2.107 0.206,0.957 1.148,1.568 2.106,1.363 z m -5.978,4.97 a 2.15,2.15 0 0 0 1.779,-2.459 2.15,2.15 0 0 0 -2.454,-1.785 2.15,2.15 0 0 0 -0.931,3.86 2.15,2.15 0 0 0 1.606,0.383 z M 7.567,18.329 A 2.69,2.69 0 0 0 7.006,12.986 c -0.954,0.1 -1.783,0.702 -2.173,1.579 -0.39,0.877 -0.284,1.895 0.28,2.672 0.564,0.777 1.499,1.193 2.454,1.093 z m -2.989,7.23 A 2.97,2.97 0 0 0 7.38,22.439 2.95,2.95 0 0 0 4.26,19.637 c -1.63,0.088 -2.881,1.48 -2.793,3.111 0.088,1.631 1.48,2.881 3.111,2.793 z M 16.086,54.61 c -0.205,0.958 0.406,1.901 1.363,2.106 0.957,0.205 1.901,-0.404 2.107,-1.361 0.206,-0.957 -0.402,-1.901 -1.36,-2.109 -0.461,-0.1 -0.942,-0.012 -1.339,0.244 -0.397,0.256 -0.674,0.659 -0.773,1.12 z M 9.734,50.07 a 2.15,2.15 0 0 0 1.794,2.466 2.15,2.15 0 0 0 2.45,-1.791 2.15,2.15 0 0 0 -1.785,-2.454 2.15,2.15 0 0 0 -2.459,1.779 z M 4.447,44.166 c -0.155,1.475 0.916,2.797 2.391,2.952 1.475,0.155 2.797,-0.916 2.952,-2.391 A 2.69,2.69 0 0 0 7.399,41.775 2.67,2.67 0 0 0 4.447,44.166 Z M 1.084,37.403 a 2.95,2.95 0 0 0 2.802,3.101 C 4.941,40.561 5.945,40.05 6.522,39.166 7.099,38.282 7.159,37.156 6.681,36.214 6.203,35.272 5.259,34.657 4.204,34.6 a 2.97,2.97 0 0 0 -3.12,2.802 z m 37.851,19.168 c -0.736,0.202 -1.169,0.962 -0.968,1.698 0.201,0.736 0.96,1.17 1.697,0.97 0.737,-0.2 1.171,-0.959 0.971,-1.696 -0.092,-0.358 -0.324,-0.664 -0.643,-0.85 a 1.38,1.38 0 0 0 -1.057,-0.14 z m -14.199,0 a 1.3910607,1.3910607 0 0 0 -0.71,2.69 1.39,1.39 0 0 0 1.697,-1.71 1.39,1.39 0 0 0 -0.987,-0.98 z M 40.616,2.672 C 40.806,1.935 40.364,1.183 39.627,0.99 38.89,0.797 38.137,1.236 37.941,1.972 c -0.196,0.736 0.24,1.491 0.975,1.69 a 1.38,1.38 0 0 0 1.7,-0.99 z M 25.745,1.906 a 1.3910607,1.3910607 0 1 0 -2.69,0.71 1.3910607,1.3910607 0 1 0 2.69,-0.71 z" + fill="url(#E)" + id="path89" + style="fill:url(#E)" /> + </g> + </symbol> +</svg> diff --git a/src/assets/images/search-icon-light.svg b/src/assets/images/search-icon-light.svg new file mode 100644 index 00000000..432fd136 --- /dev/null +++ b/src/assets/images/search-icon-light.svg @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + viewBox="0 0 24 24" + fill="currentColor" + version="1.1" + id="svg417" + sodipodi:docname="search-icon-white.svg" + inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs421" /> + <sodipodi:namedview + id="namedview419" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + showgrid="false" + inkscape:zoom="32.416667" + inkscape:cx="9.0077121" + inkscape:cy="12" + inkscape:window-width="1888" + inkscape:window-height="1060" + inkscape:window-x="32" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="svg417" /> + <path + d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z" + id="path415" + style="fill:#ffffff" /> +</svg> diff --git a/src/assets/images/sendFiles-icon-light.svg b/src/assets/images/sendFiles-icon-light.svg new file mode 100644 index 00000000..f2447a77 --- /dev/null +++ b/src/assets/images/sendFiles-icon-light.svg @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + height="24px" + viewBox="0 0 24 24" + width="24px" + fill="currentColor" + version="1.1" + id="svg546" + sodipodi:docname="sendFiles-icon-white.svg" + inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs550" /> + <sodipodi:namedview + id="namedview548" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + showgrid="false" + inkscape:zoom="32.416667" + inkscape:cx="9.0077121" + inkscape:cy="12" + inkscape:window-width="1888" + inkscape:window-height="1060" + inkscape:window-x="32" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="svg546" /> + <path + d="M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM14 13v4h-4v-4H7l5-5 5 5h-3z" + id="path544" + style="fill:#ffffff" /> +</svg> diff --git a/src/assets/images/textStorage-icon-light.svg b/src/assets/images/textStorage-icon-light.svg new file mode 100644 index 00000000..3ca7c595 --- /dev/null +++ b/src/assets/images/textStorage-icon-light.svg @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + height="24px" + viewBox="0 0 24 24" + width="24px" + fill="currentColor" + version="1.1" + id="svg1191" + sodipodi:docname="textStorage-icon-white.svg" + inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs1195" /> + <sodipodi:namedview + id="namedview1193" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + showgrid="false" + inkscape:zoom="32.416667" + inkscape:cx="9.0077121" + inkscape:cy="12" + inkscape:window-width="1888" + inkscape:window-height="1060" + inkscape:window-x="32" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="svg1191" /> + <path + d="M19 2h-4.18C14.4.84 13.3 0 12 0c-1.3 0-2.4.84-2.82 2H5c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm7 18H5V4h2v3h10V4h2v16z" + id="path1189" + style="fill:#ffffff" /> +</svg> diff --git a/src/assets/images/translate-icon-light.svg b/src/assets/images/translate-icon-light.svg new file mode 100644 index 00000000..f884ee14 --- /dev/null +++ b/src/assets/images/translate-icon-light.svg @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + height="24px" + viewBox="0 0 24 24" + width="24px" + fill="currentColor" + version="1.1" + id="svg1062" + sodipodi:docname="translate-icon-white.svg" + inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs1066" /> + <sodipodi:namedview + id="namedview1064" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + showgrid="false" + inkscape:zoom="32.416667" + inkscape:cx="9.0077121" + inkscape:cy="12" + inkscape:window-width="1888" + inkscape:window-height="1060" + inkscape:window-x="32" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="svg1062" /> + <path + d="M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z" + id="path1060" + style="fill:#ffffff" /> +</svg> diff --git a/src/assets/images/wikipedia-icon.svg b/src/assets/images/wikipedia-icon.svg deleted file mode 100644 index 87876d46..00000000 --- a/src/assets/images/wikipedia-icon.svg +++ /dev/null @@ -1,3 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="103px" height="94px" viewBox="0 0 103 94"><title>Wikipedia logo version 2</title><radialGradient id="SVGID_1_" cx="244.5713" cy="-427.1392" r="68.6868" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#FFF"/><stop offset=".4835" stop-color="#EAEAEB"/><stop offset=".9451" stop-color="#A9ABAE"/><stop offset="1" stop-color="#999B9E"/></radialGradient><path style="fill:url(#SVGID_1_);" d="M49.85,17.003c0.014-0.606-0.392-1.27-0.392-1.27l-0.025-0.058c0,0-0.487-0.949-1.301-1.228c-0.815-0.278-1.478,0.342-1.478,0.342s-0.114,0.131-0.428,0.494c-0.313,0.364-0.507,0.666-1.198,0.938c-0.692,0.271-1.379,0.204-1.743,0.033c-0.365-0.172-0.457-0.537-0.457-0.537s-0.229-0.722-0.313-1.049c-0.086-0.331-0.308-1.694-0.308-1.694s-0.492-2.747-0.535-3.304c0,0,1.475-0.126,3.686-0.775c2.3-0.673,3.043-1.206,3.043-1.206s-0.432-0.156-0.484-0.662c-0.051-0.507-0.089-1.19-0.089-1.19s-0.089-0.5,0.483-1.139c0.572-0.64,1.354-0.863,1.763-0.953c0.41-0.089,1.281-0.17,2.092-0.134c0.813,0.038,1.266,0.112,1.594,0.291c0.327,0.178,0.356,0.61,0.356,0.61l-0.009,1.146c0,0-0.035,0.402,0.262,0.529c0,0,0.505,0.305,2.197,0.133c0,0,0.719-0.126,1.845-0.46c1.125-0.335,4.129-1.229,4.554-1.341c0.426-0.111,0.953-0.291,1.645-0.469c0.693-0.179,2.041-0.626,2.309-0.73c0.27-0.104,1.811-0.618,2.928-0.81c1.114-0.195,2.226-0.186,2.813,0.149c0,0,0.357,0.304,0.521,0.662c0.162,0.358,0.476,0.863,0.92,1.088c0.457,0.227,0.754,0.371,1.877,0.273c0,0,0.021-0.096-0.396-0.37c-0.417-0.277-0.991-0.701-0.991-0.701s-0.334-0.245-0.408-0.447c-0.072-0.202-0.043-0.306-0.043-0.306l0.877-1.406c0,0,0-0.172,0.506-0.238c0.506-0.067,1.074-0.134,1.742-0.313c0.67-0.178,0.789-0.312,0.789-0.312l0.578,0.178c0,0,3.547,2.853,4.655,3.583l0.198-0.239c0,0,0.437,0.018,0.828,0.172c0.393,0.154,0.979,0.562,0.979,0.562s1.613,1.31,2.072,2.2l0.222,0.679l-0.102,0.161c0,0,0.919,1.307,2.096,2.602c0,0,1.229,1.664,1.689,2.09c0,0-0.108-0.399-0.203-0.849l0.339-0.226l0.2-0.144l0.617,0.259c3.575,4.811,6.435,10.424,8.144,16.328l-0.121,0.484l0.396,0.501c1.129,4.212,1.729,8.643,1.729,13.211c0,1.122-0.038,2.236-0.109,3.339l-0.304,0.511l0.226,0.555C99.95,72.645,78.057,93.131,51.38,93.131c-18.502,0-34.702-9.854-43.637-24.601l-0.102-0.365l-0.205-0.151c-3.387-5.742-5.682-12.205-6.595-19.104l0.212-0.524l-0.336-0.482c-0.213-1.892-0.322-3.812-0.322-5.758c0-2.985,0.255-5.909,0.748-8.755l0.25-0.562l-0.087-0.328C2.463,26.451,4.689,20.783,7.78,15.7l0.684-0.384l0.081,0.032c0,0,0.233-0.169,0.354-0.217l0.076-0.023c0,0,1.179-1.971,1.625-2.601c0,0,0.542-0.348,0.745-0.407c0,0,0.124-0.016,0.189,0.076c0,0,0.496-0.432,1.699-2.054c0.004-0.005,0.007-0.011,0.012-0.017c0,0-0.114-0.076-0.131-0.174c-0.018-0.097,0.108-0.591,0.173-0.717s0.108-0.156,0.108-0.156s1.722-2.032,3.151-3.238c0,0,0.26-0.202,0.678-0.25c0,0,1.472-0.613,3.264-2.184c0,0,0.051-0.289,0.478-0.858c0.428-0.57,1.456-1.163,2.222-1.337c0.764-0.174,0.896-0.038,0.896-0.038l0.064,0.065l0.515,0.766c0,0,0.565-0.316,1.413-0.604c0.847-0.289,0.979-0.262,0.979-0.262l0.823,1.336l-0.987,2c0,0-0.644,1.421-1.655,2.185c0,0-0.472,0.284-1.12,0.127c-0.648-0.157-1.072,0.333-1.072,0.333l-0.17,0.14c0,0,0.14-0.024,0.346-0.103c0,0,0.158,0.065,0.274,0.223c0.114,0.158,0.913,1.175,0.913,1.175s0.005,0.837-0.415,1.938c-0.419,1.1-1.467,2.891-1.467,2.891s-0.733,1.424-1.075,2.253c-0.342,0.829-0.515,1.765-0.488,2.262c0,0,0.187,0.062,0.707-0.202c0.655-0.332,1.083,0.027,1.083,0.027s0.719,0.53,1.041,0.881c0.262,0.289,0.802,1.765,0.209,3.224c0,0-0.402,1.008-1.377,1.724c0,0-0.216,0.332-1.529,0.174c-0.368-0.043-0.585-0.276-1.372-0.2c-0.785,0.077-1.231,0.815-1.231,0.815l0.013-0.024c-0.692,0.999-1.154,2.458-1.154,2.458l-0.057,0.165c0,0-0.241,0.509-0.292,1.752c-0.053,1.284,0.284,3.109,0.284,3.109s7.876-1.387,9.88-0.055l0.58,0.532c0,0,0.046,0.174-0.031,0.376c-0.08,0.204-0.375,0.673-0.987,1.113c-0.611,0.438-1.222,1.583-0.313,2.304c1.034,0.818,1.691,0.766,3.43,0.468c1.74-0.297,2.898-1.269,2.898-1.269s0.972-0.72,0.783-1.628c-0.188-0.908-1.017-1.189-1.017-1.189s-0.658-0.423-0.141-1.238c0,0,0.141-0.689,2.553-1.316c2.414-0.626,6.812-1.52,10.557-1.989c0,0-2.539-8.223-0.738-9.289c0,0,0.438-0.296,1.224-0.408l0.72-0.037c0.131-0.027,0.343,0.005,0.796,0.045c0.453,0.038,1.001,0.076,1.678-0.441c0.676-0.519,0.697-0.819,0.697-0.819"/><radialGradient id="SVGID_2_" cx="197.6416" cy="-371.8613" r="0" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#FFF"/><stop offset=".4835" stop-color="#EAEAEB"/><stop offset=".9451" stop-color="#A9ABAE"/><stop offset="1" stop-color="#999B9E"/></radialGradient><path style="fill:url(#SVGID_2_);" d="M-16.122-14.641"/><linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="456.2744" y1="510.1602" x2="502.7757" y2="582.9122" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#8A8A8A"/><stop offset=".5687" stop-color="#606060"/><stop offset=".5914" stop-color="#FFF"/><stop offset=".6116" stop-color="#585858"/><stop offset="1" stop-color="#303030"/></linearGradient><path style="opacity:.69;fill:url(#SVGID_3_);" d="M82.447,79.307l0.451,0.168c-0.032,0.061-0.067,0.119-0.101,0.179c-0.864,1.573-0.936,1.927-1.36,2.253c-0.424,0.326-0.58,0.539-1.443,0.695c-0.865,0.156-1.771,1.175-1.771,1.175s-0.875,0.835-0.48,0.866c0.396,0.025,1.177-0.609,1.177-0.609s0.497-0.354,0.625-0.255c0.125,0.099-0.539,0.751-0.539,0.751s-1.161,1.176-2.479,1.982l-0.396,0.213c0,0,1.869-1.392,2.764-2.395c0,0,0.185-0.271-0.185,0.057c-0.369,0.325-1.332,0.821-1.741,0.821c-0.41,0,0.016-0.563,0.016-0.563s0.596-0.768,1.812-1.758c1.22-0.994,2.239-0.922,2.239-0.922s0.227,0.043,0.253-0.271c0.028-0.313,0.312-0.863,0.312-0.863s0.453-1.032,1.674-2.749c1.218-1.714,1.77-2.195,1.77-2.195s1.588-1.629,2.423-3.259c0,0,0.581-1.006-0.364-0.255c-0.951,0.753-2.211,1.7-3.44,2.014c-1.233,0.312-1.349-0.836-1.349-0.836s-0.271-1.884,1.049-3.344c1.188-1.316,2.492-1.273,3.684-1.415c1.188-0.144,2.21-1.571,2.21-1.571s0.82-0.922,1.289-3.797c0.218-1.337,0.067-2.244-0.144-2.818l0.021-0.647l-0.368-0.021c-0.078-0.106-0.135-0.153-0.135-0.153s-0.297-0.299-0.607-0.524c-0.313-0.227-0.692-0.649-1.063-1.457c0,0-1.019-2.11-0.792-5.156c0.227-3.047,2.762-2.762,2.762-2.762s1.475,0.143,1.76-0.298c0.283-0.438,0.553-0.993,0.649-2.223c0.101-1.233-0.396-2.408-0.396-2.408s-0.186-0.609-1.049-0.708c-0.863-0.1-1.051,0.169-1.051,0.169s-0.255,0.072-0.723,1.09c-0.471,1.021-0.75,1.488-1.602,1.702c-0.849,0.211-2.023,0.099-2.549-0.992c-0.515-1.072-1.757-3.693-2.351-5.772l0.084-0.735l-0.325-0.471c-0.063-0.396-0.117-0.846-0.13-1.236c-0.026-0.992-0.312-2.097-0.638-3.2c-0.326-1.106-1.459-2.972-1.672-3.399c-0.324-0.667-0.621-0.949-1.021-0.893c-0.396,0.056-0.339,0.056-0.513,0.056c-0.168,0-0.266,0.212-0.311,0.425c-0.042,0.212-0.375,1.315-1.104,1.812c-0.752,0.51-1.147,0.737-2.438,0.85c0,0-1.487,0.099-2.661-2.097C71,29.36,71.301,27.96,71.398,27.45c0.099-0.51,0.539-1.247,1.229-1.388c0.693-0.141,1.119-0.184,1.119-0.184s1.122-0.01,1.603-0.071c0.551-0.071,0.283-1.006,0.283-1.006s-0.361-2.371-2.348-4.318l-0.096-0.487l-0.756-0.381c-1.881-2.04-4.354-5.354-4.354-5.354s-1.105-1.048-0.17-2.493c0,0,0.438-0.963,1.742-0.792c0.419,0.081,0.457,0.123,0.818,0.199c0.481,0.099,1.008,0.225,1.478-0.398c0,0,0.438-0.792-0.271-1.812s-0.923-1.742-1.785-1.687c0,0-0.397-0.055-0.793,0.384C68.702,8.1,67.682,8.378,67.086,8.44c-0.679,0.071-2.252-0.528-3.156-2.082c-0.513-0.874-0.752-1.35-0.865-1.595l0.231-0.34l0.72,0.08c0.186,0.358,0.549,1.056,0.978,1.812c0.552,0.978,1.048,1.118,1.373,1.261c0.325,0.141,1.049-0.071,1.431-0.283c0.385-0.213,0.766-0.695,1.43-0.738c0.668-0.043,1.629,0.071,2.311,0.793c0.682,0.723,1.531,2.224,1.459,2.932c-0.068,0.708-0.111,1.403-1.035,1.699c-0.921,0.298-1.303,0.043-1.884-0.084c-0.581-0.128-0.864-0.072-1.104,0.211c-0.242,0.284-0.512,0.892-0.412,1.162c0.102,0.27,0.186,0.454,0.75,1.262c0.566,0.806,3.474,4.25,4.031,4.766l-0.152,0.698l0.968,0.176c0.625,0.724,1.358,1.668,1.687,2.263c0.493,0.907,0.752,2.337,0.779,3.002c0.025,0.666-0.299,0.963-0.299,0.963s-0.313,0.524-2.012,0.524c-1.517,0-1.614,0.297-1.614,0.297s-0.47,0.467-0.369,1.615c0.103,1.146,0.616,2.344,1.56,3.37c0.778,0.851,2.252-0.006,2.748-0.295c0.51-0.299,0.822-1.264,0.822-1.264s0.102-1.217,1.432-1.217c1.377,0,1.969,1.318,1.969,1.318s0.963,1.295,1.941,4.121c0.481,1.389,0.566,2.281,0.566,2.281l0.126,1.668l-0.513,0.892l0.732,0.312c0.135,0.541,0.348,1.24,0.686,2.044c0,0,1.008,2.381,1.443,3.286c0.44,0.906,0.896,0.766,1.264,0.808c0,0,0.85,0.113,1.16-0.282c0.313-0.398,0.61-1.092,0.61-1.092s0.663-1.812,2.138-1.657c1.475,0.156,1.84,1.092,2.096,2.168c0.256,1.074,0.313,3.229-0.479,4.545c-0.798,1.318-1.688,1.135-1.688,1.135s-1.813-0.17-2.225,0.213c-0.41,0.382-0.623,0.724-0.681,1.613c-0.058,0.894,0.026,2.336,0.751,4.08c0.631,1.523,1.146,1.361,1.432,1.728c0.284,0.368,1.188,1.204,1.104,3.272c-0.082,2.067-0.791,4.149-1.586,5.439c-0.793,1.288-1.997,2.053-1.997,2.053s-0.338,0.211-1.076,0.311c-0.735,0.102-1.784,0.086-2.534,0.513c-0.75,0.426-0.992,1.501-1.063,1.971c-0.069,0.468-0.112,1.529,0.921,1.413c1.034-0.109,2.577-1.4,2.577-1.4s1.486-1.104,1.685-0.752c0.199,0.354-0.636,1.784-0.636,1.784s-1.035,1.562-1.898,2.523c-0.709,0.791-1.641,1.868-2.431,3.102L82.447,79.307L82.447,79.307z"/><linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="425.2861" y1="502.9512" x2="445.7861" y2="598.6606" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#A8A9AB"/><stop offset="1" stop-color="#636668"/></linearGradient><path style="fill:url(#SVGID_4_);" d="M23.441,22.732c-0.007,0.008-0.013,0.018-0.021,0.025C23.428,22.75,23.434,22.74,23.441,22.732z"/><linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="421.0684" y1="504.3701" x2="441.068" y2="597.7433" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#A8A9AB"/><stop offset="1" stop-color="#636668"/></linearGradient><path style="opacity:.45;fill:url(#SVGID_5_);" d="M38.188,89.707l0.163,0.01c-0.163-0.147-0.37-0.281-0.62-0.414c-0.699-0.371-3.731-2.375-4.669-3.009c-0.936-0.633-2.575-1.7-3.297-1.478c-0.554,0.172-0.475,0.394-0.804,0.556c-0.331,0.157-0.687,0.052-1.504-0.384c-0.818-0.434-1.424-0.725-3.02-2.239c-1.245-1.185,1.595-0.118,1.595-0.118s0.619,0.262,0.343-0.385c-0.277-0.646-1.676-2.333-2.994-3.691c-1.068-1.098-1.674-1.86-2.435-2.97l-0.566-0.661l0.007-0.166c-0.018-0.024-0.035-0.054-0.052-0.078c0,0-1.874-3.377-1.676-4.617c0,0,0.068-0.828,1.241-1.188c0.817-0.251,0.71,0.542,3.112,0.975c0,0,2.07,0.559,2.611-0.945c0.539-1.505-0.567-3.393-0.567-3.393s-1.449-2.656-3.244-2.758c-0.95-0.053-0.692,0.586-2.125,0.926c0,0-1.913,0.184-2.519-0.963c-0.734-1.389-1.04-2.969-1.015-4.022c0.022-1,0.054-1.079,0.119-1.371c0.045-0.206,0.192-0.582,0.254-1.128l-0.134-0.667l0.204-0.501c0.002-0.26-0.004-0.535-0.021-0.83c-0.091-1.66-0.213-4.221-0.437-5.71c-0.223-1.491-0.633-3.798-1.991-3.866c0,0-0.671-0.051-1.634,0.885c-0.884,0.856-1.684-0.708-1.728-1.663c-0.053-1.121,0.131-2.254,0.409-2.795c0.277-0.541,1.042-0.567,1.186-0.555c0.146,0.013,0.555,0.171,1.043,0.474c0.488,0.305,1.16,0.305,1.557-0.092c0.395-0.394,0.947-0.856,1.173-2.598c0.224-1.741,0.224-3.547,0.013-5.71l-0.225-0.484l1.339-0.289c-0.001-0.017-0.021-0.126-0.032-0.193c0-0.002,0-0.003,0-0.005c-0.002-0.017-0.005-0.032-0.007-0.049c-0.001-0.003-0.001-0.005-0.001-0.007c-0.003-0.019-0.007-0.038-0.009-0.057c0-0.001-0.001-0.001-0.001-0.003c-0.003-0.02-0.006-0.042-0.009-0.062c0-0.001,0-0.001,0-0.001c-0.004-0.023-0.007-0.045-0.011-0.068c0-0.004-0.001-0.006-0.001-0.008c-0.002-0.022-0.006-0.045-0.008-0.066c-0.001-0.006-0.001-0.01-0.003-0.017c-0.002-0.023-0.005-0.046-0.009-0.069c-0.001-0.004-0.001-0.007-0.002-0.014c-0.003-0.026-0.007-0.05-0.011-0.076c0-0.002,0-0.004,0-0.005c-0.004-0.024-0.008-0.05-0.011-0.076c-0.001-0.007-0.001-0.01-0.003-0.017c-0.002-0.025-0.006-0.052-0.009-0.08c-0.001-0.005-0.001-0.011-0.002-0.021c-0.005-0.027-0.007-0.053-0.011-0.081c-0.001-0.006-0.002-0.013-0.002-0.019c-0.002-0.029-0.006-0.058-0.01-0.087c0-0.004-0.001-0.008-0.003-0.014c-0.002-0.028-0.005-0.056-0.009-0.082c-0.001-0.006-0.001-0.011-0.002-0.016c-0.002-0.031-0.006-0.06-0.01-0.09c0-0.006-0.001-0.015-0.002-0.021c-0.004-0.03-0.006-0.061-0.011-0.09c0-0.007-0.001-0.015-0.002-0.022c-0.003-0.03-0.006-0.062-0.01-0.093c0-0.006-0.002-0.012-0.002-0.019c-0.003-0.032-0.005-0.063-0.009-0.094c0-0.002,0-0.005,0-0.009c-0.004-0.032-0.005-0.066-0.01-0.1c0-0.005,0-0.012-0.001-0.02c-0.002-0.033-0.005-0.065-0.007-0.098c-0.001-0.007-0.001-0.014-0.001-0.021c-0.004-0.033-0.006-0.067-0.008-0.099c0-0.005,0-0.012-0.001-0.02c-0.002-0.033-0.006-0.069-0.007-0.102c0-0.003,0-0.007-0.001-0.01c-0.002-0.033-0.004-0.066-0.006-0.1c-0.001-0.006-0.001-0.011-0.001-0.017c-0.001-0.032-0.003-0.068-0.005-0.1c0-0.008,0-0.014-0.001-0.021c-0.001-0.031-0.002-0.065-0.003-0.099c-0.001-0.006-0.001-0.013-0.001-0.021c-0.002-0.033-0.003-0.066-0.004-0.1c0-0.005,0-0.009,0-0.014c-0.001-0.032-0.001-0.066-0.002-0.099c0-0.003,0-0.005,0-0.009c0-0.034,0-0.067-0.001-0.101c0-0.005,0-0.013,0-0.017c0-0.033,0-0.067,0-0.098c0-0.005,0.001-0.012,0.001-0.019c0-0.032,0-0.065,0.001-0.095c0-0.005,0-0.009,0-0.015c0.001-0.033,0.001-0.065,0.003-0.099c0.052-1.244,0.292-1.752,0.292-1.752l0.057-0.164c0,0,0.46-1.459,1.154-2.459l-0.013,0.024c0,0,0.446-0.738,1.231-0.814c0.785-0.079,1.004,0.156,1.371,0.2c0.04,0.004,0.078,0.008,0.115,0.013c0.013,0.002,0.025,0.002,0.037,0.004c0.025,0.002,0.051,0.004,0.075,0.006c0.014,0.001,0.027,0.003,0.041,0.003c0.021,0.001,0.043,0.003,0.064,0.004c0.014,0.001,0.028,0.002,0.041,0.003c0.02,0.001,0.04,0.001,0.058,0.003c0.014,0,0.026,0,0.042,0c0.019,0.001,0.036,0.002,0.055,0.002c0.013,0.001,0.026,0.001,0.038,0.002c0.017,0,0.034,0,0.051,0c0.011,0,0.023,0,0.034,0c0.017,0,0.033,0,0.05,0c0.011,0,0.02-0.001,0.032-0.001c0.016-0.001,0.031-0.001,0.046-0.001c0.011-0.001,0.02-0.001,0.03-0.002c0.016,0,0.03-0.002,0.045-0.002c0.009,0,0.019,0,0.026-0.001c0.016-0.001,0.03-0.002,0.044-0.004c0.006,0,0.016-0.001,0.023-0.002c0.015-0.001,0.029-0.001,0.044-0.003c0.006-0.001,0.013-0.002,0.02-0.002c0.016-0.002,0.03-0.004,0.045-0.008c0.004,0,0.008,0,0.013-0.001c0.019-0.002,0.036-0.005,0.052-0.008l0,0c0.035-0.006,0.068-0.014,0.098-0.021c0,0,0,0,0.002-0.002c0.012-0.002,0.026-0.005,0.039-0.01c0.002,0,0.004,0,0.008-0.001c0.009-0.003,0.019-0.006,0.028-0.009c0.004,0,0.007-0.002,0.01-0.003c0.009-0.003,0.019-0.007,0.026-0.009c0.002-0.001,0.005-0.002,0.008-0.003c0.008-0.003,0.015-0.006,0.021-0.009c0.004-0.001,0.006-0.003,0.009-0.003c0.007-0.004,0.014-0.005,0.02-0.009c0.003-0.001,0.006-0.003,0.008-0.004c0.005-0.002,0.012-0.005,0.019-0.007c0.001-0.001,0.003-0.002,0.005-0.004c0.005-0.003,0.01-0.005,0.016-0.007c0.002-0.002,0.003-0.002,0.006-0.004c0.004-0.001,0.008-0.005,0.012-0.007c0.002-0.001,0.004-0.001,0.005-0.003c0.004-0.002,0.008-0.006,0.012-0.008c0.001,0,0.003-0.002,0.004-0.003c0.003-0.003,0.007-0.004,0.011-0.007c0.001-0.001,0.001-0.001,0.002-0.003c0.004-0.001,0.006-0.005,0.008-0.008h0.002c0.003-0.002,0.005-0.005,0.008-0.007l0.001-0.001c0.002-0.002,0.004-0.004,0.006-0.006s0.002-0.002,0.003-0.003c0.001,0,0.002-0.002,0.002-0.002c0.001-0.003,0.001-0.003,0.003-0.005c0.003-0.001,0.003-0.004,0.003-0.004c0.328-0.241,0.593-0.516,0.797-0.775c0.014-0.017,0.026-0.033,0.04-0.05c0.002-0.004,0.005-0.009,0.008-0.012c0.013-0.015,0.026-0.031,0.038-0.048c0.002-0.004,0.006-0.008,0.007-0.011c0.012-0.018,0.025-0.033,0.038-0.05c0.001,0,0.001,0,0.001-0.001c0.039-0.054,0.075-0.109,0.109-0.159c0-0.002,0.002-0.004,0.003-0.007c0.01-0.016,0.02-0.029,0.03-0.044c0.001-0.004,0.005-0.007,0.007-0.011c0.008-0.014,0.017-0.029,0.024-0.042c0.003-0.004,0.005-0.009,0.009-0.013c0.008-0.014,0.017-0.028,0.024-0.042l0.001-0.002c0.017-0.027,0.032-0.055,0.046-0.079c0.002-0.003,0.004-0.008,0.007-0.012c0.005-0.009,0.01-0.021,0.016-0.03c0.003-0.007,0.007-0.014,0.012-0.02c0.004-0.008,0.01-0.017,0.014-0.024c0.002-0.008,0.006-0.017,0.011-0.023c0.004-0.007,0.009-0.016,0.012-0.022c0.004-0.007,0.007-0.014,0.011-0.021c0.002-0.006,0.007-0.011,0.01-0.018c0.066-0.13,0.097-0.207,0.097-0.207c0.594-1.459,0.052-2.935-0.21-3.224c-0.32-0.354-1.041-0.883-1.041-0.883s-0.426-0.357-1.08-0.025c-0.521,0.264-0.711,0.201-0.711,0.201c-0.024-0.498,0.149-1.432,0.491-2.263c0.341-0.829,1.075-2.253,1.075-2.253s1.047-1.792,1.467-2.89c0.418-1.102,0.415-1.94,0.415-1.94s-0.795-1.019-0.91-1.177c-0.115-0.158-0.272-0.223-0.272-0.223c-0.205,0.078-0.345,0.103-0.345,0.103l0.169-0.14c0,0,0.424-0.492,1.073-0.334c0.648,0.158,1.119-0.126,1.119-0.126c1.011-0.764,1.654-2.187,1.654-2.187l0.988-1.997L27.059,1.12c0,0-0.131-0.028-0.979,0.259c0,0-0.773,1.905-1.725,3.087c0,0-0.374,0.552-0.664,0.416c-0.289-0.134-0.629-0.144-0.91-0.085c-0.281,0.06-1.156,0.349-1.948,1.413c-0.79,1.064-0.883,1.863-0.458,2.101c0.425,0.238,1.045-0.076,1.42-0.407c0.375-0.333,0.638-0.485,0.757-0.47c0.118,0.02,0.093,0.315,0.068,0.41c-0.026,0.094-0.154,1.364-1.625,3.913c-0.369,0.64-0.845,1.589-1.069,2.046l0.608,0.447l-0.999,0.503c-0.266,0.758-0.605,1.945-0.471,2.61c0.204,1.011,1.158,1.011,1.158,1.011s0.621,0.027,1.344-0.348c0.722-0.375,0.892,1.242,0.892,1.505c0,0.264-0.007,1.726-1.02,2.442c0,0-0.409,0.313-0.985,0.313c-0.579,0-0.954-0.169-0.954-0.169s-0.984-0.272-1.59,0.083c-0.604,0.358-1.326,1.098-1.897,2.17c-0.569,1.072-1.045,2.986-1.019,4.397c0.02,1.111,0.18,2.162,0.291,2.879l0.667,0.435l-0.543,0.623c0.079,1.136,0.168,3.363,0.155,4.109c-0.018,0.911-0.154,2.84-1.115,3.292c0,0-0.324,0.171-0.868-0.238s-1.132-0.426-1.37-0.435c-0.238-0.007-1.285,0.162-1.692,1.311c-0.408,1.145-0.375,2.688-0.29,3.597c0.086,0.91,0.876,2.458,1.872,2.458c0,0,0.484,0.035,1.055-0.553c0.568-0.586,0.902-0.637,1.156-0.629c0.255,0.009,0.749,0.272,1.072,2.851c0.307,2.442,0.437,4.442,0.414,6.668l0.605,0.392l-0.758,0.768c-0.042,0.199-0.089,0.417-0.142,0.626c-0.169,0.682-0.187,1.364-0.024,2.569c0.161,1.21,0.811,3.72,1.754,4.375c1.252,0.871,2.071,0.856,2.916,0.791c0.842-0.067,1.424-0.712,1.424-0.712s0.331-0.342,0.685-0.237c0.356,0.104,1.346,0.66,2.058,2.084c0.713,1.425,0.871,2.992-0.316,3.272c-1.187,0.272-3.231-0.846-3.231-0.846s-1.161-0.647-2.109,0.064c-0.951,0.713-0.977,1.807-0.502,3.15c0.261,0.738,0.782,1.938,1.513,3.188l0.721,0.302l-0.193,0.551c0.492,0.748,1.055,1.479,1.678,2.105c0,0,2.466,2.729,3.838,4.457c0,0,0.08,0.157-0.158,0.016c-0.238-0.146-1.266-0.621-1.82-0.566c-0.555,0.054-0.45,0.395-0.45,0.395s0.238,1.254,4.01,3.365c0,0,1.359,0.766,2.216,0.766c0,0,0.277,0.039,0.619-0.346c0.346-0.381,0.45-0.341,0.688-0.262c0.237,0.076,0.553,0.249,1.741,1.105c1.188,0.857,3.496,2.176,4.325,2.731c0.83,0.555,0.793,0.657,0.621,1.054c-0.171,0.396,0.593,0.619,0.593,0.619s1.899,0.855,2.928,0.846c1.029-0.016,1.464-0.119,2.097,0.012c0.632,0.133,1.28,0.291,1.345,0.346c0.066,0.053-0.315,0.038-0.315,0.038s-2.362-0.276-2.494-0.21c-0.13,0.066,0.014,0.184,0.99,0.436v0.006c1.245,0.217,2.507,0.387,3.782,0.51c-0.489-0.061-2.52-0.322-3.823-0.713c0,0-0.131-0.078,0.173-0.014c0.303,0.065,2.018,0.225,2.466,0.157c0.448-0.065-0.092-0.274-0.092-0.274s-0.897-0.425-2.889-0.582c0,0-0.803-0.055-1.503,0.014c-0.699,0.066-1.41-0.264-1.41-0.264s-1.028-0.317-0.78-0.646c0.126-0.165,0.137-0.336,0.065-0.502L38.188,89.707L38.188,89.707z"/><linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="444.7598" y1="550.8145" x2="473.8418" y2="550.8145" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#231F20"/><stop offset="1" stop-color="#474747"/></linearGradient><path style="opacity:.35;fill:url(#SVGID_6_);" d="M62.342,86.16l-0.438,0.646c0.096,0.655-0.104,0.875-0.254,1.119c-0.156,0.26-0.59,0.592-0.375,1.185c0.218,0.59,1.687,0.401,2.535,0.144c0.852-0.26,1.569-0.49,2.134-0.693c0.562-0.198,0.719,0.086,0.719,0.086s0.246,0.175-0.574,0.606c-0.821,0.433-2.336,0.634-3.055,0.72c-0.724,0.086-0.506-0.043-1.586,0.33c-1.082,0.377-0.07,0.707-0.07,0.707c2.435,0.635,4.188,0.115,4.188,0.115l0.332-0.097c0.27-0.077,0.535-0.161,0.803-0.244c-2.021,0.456-3.326,0.149-3.739,0.095c-0.431-0.058-0.778-0.145-0.88-0.361c-0.102-0.215,0.479-0.2,0.479-0.2s1.683-0.188,3.24-0.69c1.557-0.506,1.932-0.98,1.871-1.341c-0.057-0.358-0.848-0.332-1.785-0.028c-0.937,0.305-2.334,0.75-2.662,0.821c-0.334,0.07-0.691,0.06-0.812-0.146c-0.114-0.203-0.216-0.53,0.146-0.905c0.36-0.376,0.402-0.694,0.402-0.694c0.055-0.254,0.057-0.523,0.021-0.8L62.342,86.16l0.545-0.118c-0.298-1.124-1.052-2.218-1.279-2.577c-0.314-0.507-0.836-0.793-2.393-0.535c-1.556,0.26-3.386,1.035-3.386,1.035s-1.888,0.997-3.298,0.812c-1.413-0.188-1.703-1.614-1.688-2.063c0.015-0.447,0.304-0.835,1.039-1.123c0.735-0.289,2.465-0.678,4.985-0.808s3.458-1.771,3.458-1.771c0.33-0.478,0.922-1.543-0.489-2.336c-1.41-0.791-1.441-0.593-2.119-1.107c-0.678-0.52-1.412-1.153-1.701-2.033c-0.025-0.084-0.066-0.197-0.104-0.292l-0.849-0.558l0.41-0.371c-0.34-0.67-0.693-1.271-0.693-1.271s-1.281-1.902-0.246-3.703c1.038-1.803,2.736-2.348,2.736-2.348s1.5-0.332,2.996,0.016c1.418,0.324,2.133-0.219,2.133-0.219s0.865-0.374,1.123-2.102c0.264-1.729-0.014-4.943-2.316-5.578c-2.307-0.633-3.527,0.563-3.527,0.563s-1.24,1.369-1.644,1.57c-0.404,0.201-1.022,0.563-1.022,0.563s-0.867,0.519-1.453,0.648c-0.393,0.086-1.791-1.771-1.933-3.201c-0.133-1.316-0.401-2.388-0.306-5.096l-0.485-0.63l0.537-0.533c0.101-2.999-0.417-5.116-1.188-6.461c-0.807-1.412-2.119-2.161-2.766-2.478c-0.648-0.318-2.147-0.462-3.17-0.086c-1.023,0.374-1.239,0.678-1.613,1.326c-0.376,0.648-0.836,0.605-0.836,0.605s-1.427,0.043-1.888-2.133c-0.646-3.049,0.359-4.035,0.359-4.035s0.318-0.476,1.369-0.619c1.053-0.144,1.73,0.115,2.537,0.315c0.806,0.202,1.41,0.116,2.419-0.374c1.008-0.491,1.442-1.297,1.238-2.739c-0.195-1.393-0.255-1.742-1.483-5.964l-0.875-0.46l0.583-0.579C44.87,23.032,44.8,20.35,44.8,20.35c-0.106-0.977,0.049-1.292,0.598-1.54c0.576-0.259,1.116-0.175,1.934-0.123c0.818,0.053,1.425-0.079,1.847-0.316c0.422-0.237,1.581-0.87,1.504-2.162c-0.08-1.292-1.109-2.824-1.953-3.351c-0.843-0.528-1.953-0.316-2.558,0.131c-0.606,0.45-0.845,1.029-1.214,1.214c-0.369,0.183-0.895,0.605-1.45,0.474c-0.554-0.132-0.581-1.371-0.818-2.77c-0.153-0.907-0.271-1.611-0.338-1.989l-0.678-0.254c0.044,0.557,0.535,3.304,0.535,3.304s0.223,1.364,0.308,1.692c0.086,0.329,0.314,1.05,0.314,1.05s0.092,0.364,0.456,0.535c0.365,0.172,1.052,0.24,1.743-0.032c0.692-0.271,0.886-0.572,1.199-0.938c0.315-0.364,0.429-0.493,0.429-0.493s0.663-0.622,1.478-0.343c0.813,0.278,1.299,1.228,1.299,1.228l0.028,0.06c0,0,0.403,0.661,0.392,1.269v-0.057c0,0-0.022,0.301-0.697,0.818c-0.676,0.519-1.226,0.479-1.678,0.442c-0.454-0.04-0.666-0.072-0.797-0.045l-0.719,0.038C45.178,18.303,44.74,18.6,44.74,18.6c-1.8,1.064,0.736,9.288,0.736,9.288l0,0L45.2,28.501c0,0,0.514,2.052,0.904,3.378c0.388,1.326,0.562,2.637,0.62,2.91c0.058,0.274,0.044,0.762-0.317,1.051c-0.359,0.289-1.239,0.534-1.425,0.562c-0.187,0.029-0.535-0.042-0.996-0.201c-0.462-0.158-0.922-0.187-0.922-0.187s-1.11-0.188-2.291,0.173c-1.182,0.359-2.076,1.569-2.148,3.083c-0.071,1.513-0.057,2.278,0.535,3.617c0.59,1.34,1.657,2.104,2.463,2.118c0.808,0.014,1.469-0.403,1.931-1.051c0.459-0.65,0.59-0.751,0.59-0.751c0.548-0.302,1.944-0.433,2.651-0.172c0.708,0.258,2.007,1.073,2.723,2.679c0.579,1.298,0.76,2.75,0.729,5.363l0.584,0.448l-0.61,0.703c-0.007,0.246-0.016,0.498-0.026,0.761c-0.143,3.876,0.72,5.864,0.72,5.864c0.491,1.065,1.023,1.83,1.745,2.318c0.719,0.489,1.699,0.156,2.018,0c0.315-0.158,1.194-0.563,1.943-1.037c0.749-0.477,0.725-0.679,1.629-1.515c0.907-0.833,2.076-0.604,2.076-0.604s1.107,0.028,1.74,1.313c0.637,1.283,0.509,3.109,0.347,3.773c-0.158,0.662-0.444,1.097-1.063,0.979c-0.621-0.114-1.645-0.217-2.019-0.231c-0.375-0.014-1.433-0.049-2.394,0.203c-0.938,0.244-2.205,0.92-3.414,2.883c-0.938,1.52-0.478,3.013-0.262,3.603c0.17,0.462,0.635,1.104,1.043,1.896l0.756,0.252l-0.35,0.656c0.398,0.963,0.701,1.493,1.305,2.151c0.648,0.705,1.672,1.251,2.881,1.714c1.213,0.462,0.662,1.282,0.662,1.282c-0.69,1.497-2.75,1.557-3.354,1.628c-0.604,0.07-1.872,0.188-3.058,0.447c-1.182,0.261-2.291,0.418-2.954,1.182c-0.661,0.764-0.402,1.557-0.013,2.393c0.388,0.834,1.427,1.28,2.853,1.226c1.426-0.058,2.35-0.476,3.214-0.851s2.362-0.809,2.81-0.937c0.445-0.129,1.051-0.39,1.498,0.26c0.482,0.701,0.994,1.697,1.229,2.45L62.342,86.16L62.342,86.16z"/><path style="opacity:.1;fill:#232323;" d="M101.566,51.162c0,0,0.347-3.236,0.457-4.392c0.018-0.173,0.031-0.343,0.045-0.513l-0.098-0.241c-0.459,5.815-0.938,7.727-0.938,7.727s0.013-0.037,0.031-0.101c0.189-0.817,0.357-1.646,0.51-2.48C101.568,51.162,101.566,51.162,101.566,51.162L101.566,51.162z"/><path style="opacity:.1;fill:#232323;" d="M91.268,12.579l0.328,0.413l0.279,0.5c1.021,1.648,2.846,4.295,2.846,4.295s0.739,0.958,0.905,0.968c0.164,0.01-0.084-0.741-0.084-0.741s-0.271-0.979,0.517,0.298c0.73,1.19,1.207,2.359,1.317,2.72c0.114,0.361,0.042,0.411,0.042,0.411s-0.146,0.072-0.146,0.33c0,0.505,0.496,1.659,0.496,1.659s1.545,3.926,2.07,5.563c0.526,1.641,1.133,4.368,1.133,4.368s0.187,0.804,0.207,1.174c0.021,0.371-0.063,0.381-0.229,0.186c-0.164-0.196-0.329-0.072-0.329-0.072s-0.175,0.072-0.175,0.773c0,0.7,0.085,2.346,0.217,3.615c0.152,1.505,0.616,2.133,0.616,2.133s0.413,0.618,0.526-0.577c0.096-1.028,0.185-0.228,0.185-0.228c0.196,1.557,0.062,4.544,0.03,4.955c-0.019,0.218-0.032,0.433-0.049,0.64l0.133-0.221c0.201-2.971,0.06-5.359,0.06-5.359s-0.144-1.323-0.3-1.311c-0.155,0.01-0.211,0.701-0.211,0.701s-0.065,0.467-0.156,0.456c-0.088-0.011-0.369,0.022-0.566-1.412c-0.199-1.436-0.156-2.949-0.156-2.949s-0.043-0.155,0.048-0.189c0.09-0.034,0.188,0.1,0.188,0.1s0.133,0.189,0.287,0.033c0.156-0.154,0.19-0.622-0.301-3.08c-0.288-1.454-0.711-2.896-1.006-3.832l-0.294-0.333l-0.058-0.718c0,0-0.311-0.913-1.033-2.737c-0.723-1.824-0.846-2.458-0.846-2.458s-0.045-0.2,0.066-0.234c0.111-0.032,0.091-0.178,0.091-0.178s-0.013-0.245-0.278-0.99c-0.268-0.746-0.426-1.281-1.356-2.86c-0.869-1.468-1.124-1.558-1.124-1.558s-0.426-0.234-0.112,0.591c0.313,0.823-0.075,0.232-0.075,0.232c-0.925-1.177-2.838-4.292-2.838-4.292l-0.537-0.373l-0.508-1.261l-0.015,0.01"/><path style="opacity:.1;fill:#232323;" d="M1.547,32.696l-0.183,0.37c-0.472,2.495-0.625,5.135-0.62,5.31c0.01,0.208-0.036,0.211-0.075,0.178c-0.042-0.035,0.03-0.16-0.048-0.16c-0.079,0-0.108,0.211-0.108,0.211L0.512,38.6c-0.021,0.288-0.038,0.574-0.053,0.861l0.016-0.003c0.068-0.098,0.097-0.028,0.097-0.028s-0.029,0.126,0.097,0.056c0.126-0.07,0.21-1.379,0.21-1.379s0.014-2.813,0.836-6.14c0.819-3.327,1.281-4.259,1.281-4.259s0.154-0.418,0.138-0.083C3.12,27.958,3.33,27.986,3.33,27.986c0.375-0.054,0.821-1.125,1.267-2.493c0.445-1.363,0.668-2.589,0.668-2.7c0-0.11-0.055-0.194-0.152-0.138c-0.098,0.056-0.125,0.014-0.125,0.014c-0.014-0.208,0.361-1.127,0.361-1.127c1.253-3.202,3.104-5.694,3.104-5.694l0.09-0.504c-0.164,0.254-0.27,0.419-0.421,0.661c-0.056,0.089-0.042,0.297-0.001,0.32c-0.201,0.191-0.365,0.35-0.476,0.456c-2.707,4.473-3.059,6.556-3.059,6.556c-0.017,0.214,0.004,0.311,0.111,0.306c0.065-0.003,0.251-0.349,0.116,0.354c-0.09,0.468-0.524,1.708-0.693,2.212c-0.171,0.505-0.358,0.85-0.495,0.826C3.49,27.01,3.49,26.801,3.49,26.801s-0.042-0.546-0.398,0.245c-0.356,0.791-0.713,1.859-1.425,4.65c-0.031,0.125-0.063,0.251-0.092,0.38L1.547,32.696L1.547,32.696z"/><path style="opacity:.1;fill:#232323;" d="M4.841,62.626c-0.15-0.401-0.264-0.722-0.179-0.581c0.085,0.143,0.198,0.432,0.462,0.725c0.263,0.291,0.442-0.226-0.622-3.104s-1.354-3.04-1.402-3.095c-0.046-0.058-0.215-0.237-0.167,0.167c0.045,0.404,0.018,0.656-0.51-1.146c-0.528-1.806-0.996-4.844-1.025-5.089c-0.027-0.243-0.169-1.778-0.396-3.594c-0.226-1.814-0.246-3.743-0.207-4.28c0.039-0.537-0.066-0.828-0.123-0.837c-0.056-0.008-0.094,0.047-0.131,0.284c-0.038,0.234-0.01,0.395-0.067,0.385c-0.057-0.009-0.076-0.471-0.076-0.471H0.391c0,0.05,0,0.1,0,0.151c0,0.174,0.001,0.345,0.002,0.519l0.039,0.402c0.033,0.597,0.129,0.354,0.135,0.246c0.006-0.109,0.03-0.329,0.03-0.329s0.103-0.884,0.084,0.02c-0.019,0.904,0.236,4.563,0.236,4.563c0.019,0.236,0.041,0.479,0.068,0.729l0.063,0.092l-0.042,0.104c0.265,2.425,0.795,5.086,0.795,5.086c0.507,2.417,1.11,3.846,1.308,4.25c0.198,0.405,0.236,0.085,0.17-0.271c-0.066-0.357,0.546,0.688,0.873,1.674c0.332,0.99,0.556,1.815,0.556,1.815s0.254,0.781,0.142,0.828c-0.113,0.046-0.292-0.293-0.292-0.293s-0.473-0.835-0.274-0.228c0.398,1.231,1.6,3.822,1.6,3.822l1.396,2.471C6.282,65.836,4.982,63.004,4.841,62.626L4.841,62.626z"/><path style="opacity:.1;fill:#232323;" d="M7.281,67.639c0.069,0.125,0.136,0.246,0.202,0.359L7.281,67.639z"/><path style="opacity:.1;fill:#232323;" d="M20.722,2.874C20.51,3.216,20.48,3.388,20.48,3.388s0.112-0.118,0.183-0.237C20.733,3.033,20.722,2.874,20.722,2.874z"/><path style="opacity:.1;fill:#232323;" d="M17.216,5.572c-0.417,0.048-0.677,0.25-0.677,0.25S16.889,5.761,17.216,5.572z"/><path style="opacity:.1;fill:#232323;" d="M84.005,4.909c0,0,0.247-0.03,0.347,0.02c0.101,0.049,0.066-0.158,0.066-0.158s-0.287-0.406-0.322-0.556c-0.32-0.089-0.611-0.1-0.611-0.1l-0.028,0.034c-0.01,0.075-0.036,0.188-0.012,0.297C83.441,4.448,83.917,4.811,84.005,4.909L84.005,4.909z"/><path style="opacity:.1;fill:#232323;" d="M87.487,7.88l0.095-0.152l-0.223-0.679c-0.004-0.012-0.012-0.022-0.021-0.036c-0.007,0.066-0.049,0.125-0.172,0.115c0,0-0.099-0.03-0.011,0.198C87.219,7.469,87.355,7.699,87.487,7.88L87.487,7.88z"/><path style="opacity:.1;fill:#232323;" d="M101.566,51.162c0,0,0.347-3.236,0.457-4.392c0.018-0.173,0.031-0.343,0.045-0.513l-0.098-0.241c-0.459,5.815-0.938,7.727-0.938,7.727s0.013-0.037,0.031-0.101c0.189-0.817,0.357-1.646,0.51-2.48C101.568,51.162,101.566,51.162,101.566,51.162L101.566,51.162z"/><linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="266.4922" y1="-395.2783" x2="295.9644" y2="-485.0349" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset=".0094" stop-color="#FCFCFC"/><stop offset=".0655" stop-color="#EEEEEE"/><stop offset=".1342" stop-color="#E5E5E5"/><stop offset=".2515" stop-color="#E3E3E3"/><stop offset=".3357" stop-color="#8A8A8A"/><stop offset=".4422" stop-color="#B8B8B8"/><stop offset="1" stop-color="#3B3B3B"/></linearGradient><path style="opacity:.5;fill:url(#SVGID_7_);" d="M79.003,84.528c0,0,0.667-0.653,0.539-0.752c-0.128-0.101-0.623,0.256-0.623,0.256s-0.073,0.062-0.185,0.142l0.393-0.252c0,0-0.038,0.238-0.355,0.555c0,0-0.094,0.094-0.258,0.248c-0.957,0.938-2.386,1.998-2.386,1.998l0.396-0.211C77.844,85.703,79.003,84.528,79.003,84.528z"/><linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="460.4629" y1="512.5557" x2="509.5884" y2="573.3062" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#EFF0F0"/><stop offset=".5914" stop-color="#F0F1F2"/><stop offset=".599" stop-color="#787878"/><stop offset=".6456" stop-color="#EEEFF0"/><stop offset="1" stop-color="#D8D9DB"/></linearGradient><path style="opacity:.73;fill:url(#SVGID_8_);" d="M82.984,39.705l0.51-0.891l-0.127-1.667c0,0-0.085-0.893-0.566-2.28c-0.979-2.828-1.941-4.122-1.941-4.122s-0.592-1.318-1.969-1.318c-1.33,0-1.431,1.219-1.431,1.219s-0.312,0.963-0.821,1.261c-0.5,0.29-1.972,1.146-2.748,0.296c-0.941-1.026-1.461-2.225-1.56-3.372c-0.101-1.146,0.367-1.615,0.367-1.615s0.1-0.296,1.614-0.296c1.703,0,2.014-0.525,2.014-0.525s0.324-0.296,0.297-0.963s-0.284-2.097-0.779-3.001c-0.324-0.596-1.058-1.537-1.684-2.261l-0.967-0.178l0.15-0.699c-0.56-0.514-3.465-3.959-4.031-4.766c-0.564-0.808-0.65-0.993-0.75-1.262c-0.099-0.269,0.17-0.877,0.412-1.161c0.238-0.283,0.521-0.341,1.104-0.212c0.58,0.127,0.961,0.381,1.886,0.084c0.919-0.297,0.962-0.992,1.033-1.699c0.071-0.708-0.78-2.209-1.458-2.932c-0.684-0.721-1.645-0.836-2.311-0.792c-0.664,0.042-1.047,0.523-1.433,0.737c-0.382,0.213-1.103,0.425-1.429,0.284c-0.326-0.142-0.823-0.284-1.375-1.261c-0.43-0.76-0.794-1.459-0.979-1.817L63.299,4.42v0.012c0,0,0.633,1.654,1.633,2.811c0.998,1.157,2.266,0.919,2.266,0.919s0.82-0.089,1.533-0.772c0.711-0.683,1.761-0.148,2.024,0.04c0.269,0.189,0.853,0.911,1.478,2.127c0.621,1.216-0.355,2.058-0.355,2.058s-0.555,0.535-1.691,0.088c-1.14-0.443-1.813,0.259-1.986,0.614c-0.182,0.357-0.508,0.99,0.076,1.73c0.584,0.742,3.178,4.273,4.916,5.945c1.74,1.672,2.314,3.047,2.682,4.342c0.365,1.297,0.079,1.899-0.521,2.018c-0.604,0.118-1.148,0.021-2.086,0.187c-0.94,0.17-1.349,0.367-1.543,1.653c-0.199,1.286,0.562,3.373,1.67,4.361c1.106,0.989,2.334,0.386,2.76,0.228c0.427-0.159,1.352-0.653,1.681-2.027c0.188-0.783,0.851-0.721,0.851-0.721s0.563-0.071,0.854,0.117c0.287,0.19,0.633,0.525,1.402,1.87c0.772,1.346,1.453,3.146,1.724,4.738C82.924,38.35,82.729,38.576,82.984,39.705c0.256,1.128,1.078,3.245,1.466,4.074c0.383,0.832,0.78,1.662,0.989,2.107c0.205,0.445,0.531,0.782,1.443,0.802c0.908,0.02,1.273-0.228,1.541-0.662c0.27-0.435,0.612-1.088,0.713-1.316c0.1-0.228,0.467-0.911,1.146-1.02c0.685-0.108,1.762,0.01,2.106,1.198c0.313,1.071,0.76,2.622-0.158,4.5c-0.65,1.334-1.129,0.859-2.451,0.948c0,0-1.165-0.01-1.781,0.921c-0.611,0.93-0.416,2.61-0.286,3.877s0.988,3.113,1.621,3.563c0.636,0.443,0.86,0.849,1.08,1.256c0.216,0.404,0.534,1.205,0.216,3.313c-0.313,2.106-0.979,3.74-1.867,4.521c-0.024,0.021-0.05,0.043-0.07,0.063c-0.067,0.065-0.141,0.135-0.219,0.201c-0.537,0.521-0.371,0.543-0.889,0.793c-0.594,0.289-0.988,0.207-1.958,0.365c-0.97,0.16-1.583,0.327-2.088,0.821c-0.503,0.495-1.243,1.409-0.979,3.187c0.148,0.986,1.318,0.584,2.229,0.111c-0.274,0.125-0.553,0.221-0.798,0.246c-1.033,0.113-0.991-0.949-0.921-1.415c0.069-0.47,0.313-1.544,1.063-1.97s1.799-0.41,2.533-0.512c0.738-0.101,1.076-0.313,1.076-0.313s1.205-0.766,1.997-2.055c0.793-1.289,1.502-3.371,1.587-5.438c0.084-2.068-0.821-2.902-1.104-3.271c-0.283-0.366-0.799-0.203-1.431-1.729c-0.724-1.74-0.81-3.188-0.751-4.079c0.057-0.892,0.27-1.231,0.682-1.612c0.41-0.383,2.223-0.213,2.223-0.213s0.893,0.185,1.686-1.134c0.793-1.317,0.738-3.471,0.481-4.546c-0.253-1.076-0.623-2.013-2.097-2.168c-1.471-0.152-2.138,1.66-2.138,1.66s-0.297,0.693-0.608,1.092c-0.312,0.395-1.16,0.285-1.16,0.285c-0.37-0.044-0.821,0.099-1.264-0.81c-0.438-0.906-1.442-3.286-1.442-3.286c-0.339-0.809-0.556-1.512-0.688-2.055L82.984,39.705L82.984,39.705z"/><linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="272.8721" y1="-392.8257" x2="302.4699" y2="-482.9646" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset="1" stop-color="#E4E5E6"/></linearGradient><path style="opacity:.53;fill:url(#SVGID_9_);" d="M82.487,79.313l0.801-0.479c0.788-1.231,1.72-2.31,2.431-3.103c0.863-0.961,1.896-2.522,1.896-2.522s0.835-1.431,0.638-1.784c-0.13-0.23-0.704,0.02-1.687,0.752c-3.674,2.746-3.971,1.246-3.971,1.246c0.422,2.438,4.729-1.633,5.108-1.375c-0.063,0.563-0.457,1.172-1.25,2.25c0,0-0.388,0.555-0.78,0.953c-0.369,0.432-0.578,0.641-0.578,0.641s-0.088,0.09-0.125,0.125c-0.471,0.541-1.024,1.242-1.595,2.018c-0.019,0.021-0.104,0.113-0.125,0.143c-0.295,0.416-0.491,0.73-0.702,1.062c-0.014,0.022-0.064,0.011-0.076,0.034c0-0.002-0.013,0.014-0.025,0.037c-0.245,0.39-0.373,0.713-0.508,0.959c-0.012,0.029-0.021,0.065-0.03,0.095c0,0-0.319,0.665-0.457,1.067c-0.14,0.405-0.12,0.547-0.623,0.625c-0.504,0.078-0.276-0.053-1.021,0.196c0,0-0.403,0.199-0.938,0.571c-0.027,0.021-0.057,0.042-0.082,0.063c-0.736,0.604-1.247,1.119-1.534,1.436c-0.051,0.063-0.099,0.13-0.146,0.195c0,0-0.157,0.168,0.051,0.188c0.206,0.021,0.633-0.01,1.008-0.169l0.088-0.057c-0.186,0.103-0.373,0.174-0.513,0.162c-0.396-0.026,0.479-0.864,0.479-0.864s0.906-1.019,1.771-1.175c0.862-0.156,1.021-0.371,1.444-0.693c0.426-0.327,0.494-0.682,1.359-2.254c0.03-0.059,0.064-0.115,0.098-0.176L82.487,79.313L82.487,79.313z"/><linearGradient id="SVGID_10_" gradientUnits="userSpaceOnUse" x1="444.6943" y1="510.9561" x2="469.7246" y2="592.0699" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#FFF"/><stop offset=".7473" stop-color="#F9F9F9"/><stop offset="1" stop-color="#D5D7D8"/></linearGradient><path style="opacity:.96;fill:url(#SVGID_10_);" d="M55.064,72.686l0.408-0.377c-0.34-0.668-0.693-1.269-0.693-1.269s-1.282-1.901-0.245-3.703c1.036-1.803,2.737-2.348,2.737-2.348s1.5-0.332,2.996,0.017c1.418,0.323,2.133-0.22,2.133-0.22s0.865-0.376,1.123-2.104c0.261-1.729-0.014-4.94-2.317-5.576c-2.306-0.633-3.528,0.563-3.528,0.563s-1.242,1.369-1.644,1.57c-0.404,0.2-1.024,0.562-1.024,0.562s-0.865,0.52-1.453,0.648c-0.39,0.087-1.788-1.771-1.931-3.2c-0.133-1.313-0.4-2.385-0.305-5.084c0-0.005,0-0.01,0-0.017l-0.486-0.629l0.537-0.526c0.102-3-0.418-5.119-1.188-6.463c-0.805-1.414-2.118-2.163-2.766-2.479c-0.647-0.317-2.146-0.461-3.169-0.086c-1.022,0.375-1.237,0.677-1.613,1.325c-0.376,0.65-0.835,0.606-0.835,0.606s-1.427,0.044-1.89-2.132c-0.644-3.049,0.36-4.036,0.36-4.036s0.318-0.475,1.369-0.619c1.053-0.144,1.73,0.115,2.536,0.317c0.807,0.2,1.41,0.114,2.42-0.374c1.009-0.49,1.442-1.298,1.24-2.738c-0.196-1.397-0.249-1.727-1.484-5.966l-0.874-0.458l0.582-0.579c-1.182-4.271-1.257-6.961-1.257-6.961c-0.105-0.975,0.049-1.29,0.598-1.537c0.576-0.261,1.117-0.177,1.934-0.125c0.819,0.052,1.425-0.079,1.847-0.316c0.423-0.236,1.583-0.87,1.503-2.163c-0.078-1.292-1.108-2.823-1.951-3.35c-0.844-0.528-1.952-0.317-2.56,0.132c-0.606,0.447-0.843,1.028-1.213,1.212c-0.368,0.185-0.896,0.607-1.45,0.474c-0.554-0.132-0.581-1.372-0.818-2.77c-0.155-0.915-0.276-1.614-0.342-1.989l-0.674-0.254c0.043,0.557,0.535,3.304,0.535,3.304l0.294,1.624c0,0,0,0.007,0,0.02c0.006,0.018,0.009,0.036,0.013,0.05c0.019,0.079,0.049,0.18,0.082,0.289c0.114,0.215,0.37,0.456,0.942,0.502c1.076,0.089,1.772-0.468,2.025-0.709c0.254-0.239,0.86-0.911,0.86-0.911s0.329-0.632,1.253-0.494c0.922,0.14,1.238,0.773,1.403,1.013c0.167,0.242,1.57,1.961,0.672,2.861c-0.039,0.039-0.093,0.089-0.152,0.146c-0.104,0.111-0.245,0.246-0.446,0.399c-0.675,0.517-1.226,0.48-1.678,0.442c-0.453-0.039-0.665-0.07-0.795-0.043l-0.72,0.038c-0.787,0.11-1.224,0.408-1.224,0.408c-1.8,1.065,0.735,9.287,0.735,9.287s0.671,2.029,0.973,2.979c0.301,0.949,0.496,1.625,0.791,3.264c0.295,1.639-0.231,2.092-0.525,2.251c-0.294,0.158-0.984,0.568-1.77,0.604c-0.783,0.034-1.027-0.368-2.371-0.432c-1.345-0.065-2.246,0.345-2.661,0.906c-0.417,0.561-0.913,1.862-0.675,3.4c0.237,1.541,0.504,2.064,1.092,2.748c0.59,0.681,1.165,0.97,1.978,0.696c0.792-0.266,0.764-0.756,1.173-1.164c0.517-0.519,0.855-0.792,2.063-0.821c1.208-0.029,1.979,0.288,2.594,0.784c0.619,0.496,1.934,1.646,2.294,3.356c0.359,1.713,0.424,2.268,0.424,3.676s-0.101,2.978-0.064,4.381c0.036,1.4,0.187,2.841,0.577,3.795c0.386,0.955,0.926,1.755,1.4,2.18c0.475,0.426,0.896,0.438,1.373,0.252c0.475-0.188,1.511-0.771,2.373-1.324c0.861-0.555,0.797-0.99,1.576-1.502c0.875-0.576,1.799-0.605,2.457-0.486c0.661,0.112,1.676,0.631,2.092,1.889C63.059,60.58,63,61.998,63,61.998s0.035,1.186-0.445,1.876c-0.48,0.688-1.272,0.616-1.625,0.545c-0.354-0.071-1.094-0.136-1.094-0.136s-1.451-0.165-2.563,0.094c-1.105,0.258-2.077,1.085-2.73,1.896c-0.652,0.813-0.941,1.57-0.984,2.158c-0.043,0.59,0.027,1.595,0.642,2.572c0.612,0.979,0.712,1.432,1.409,2.827c0.695,1.396,2.15,2.17,2.201,2.206c0.05,0.037,1.388,0.523,1.89,0.949c0.505,0.425,0.555,0.826,0.411,1.208c-0.145,0.381-0.438,1.094-1.604,1.604c-1.166,0.512-2.591,0.523-3.496,0.617c-0.906,0.094-2.651,0.332-3.697,0.834c-1.043,0.503-0.97,1.454-0.97,1.454s-0.028,1.556,1.337,1.983c1.365,0.434,2.64,0,3.201-0.237c0.562-0.238,1.487-0.583,1.487-0.583s1.791-0.631,2.752-0.848c0.965-0.217,1.533-0.323,2.188,0.832c0.652,1.158,1.014,1.886,1.078,2.625c0.064,0.74-0.209,1.148-0.461,1.432c-0.25,0.279-0.217,0.46-0.217,0.46c-0.105,0.873,1.182,0.763,1.182,0.763s0.041-0.004,0.11-0.018c-0.26,0.021-0.499-0.021-0.59-0.178c-0.116-0.202-0.217-0.531,0.146-0.906c0.359-0.374,0.402-0.693,0.402-0.693c0.305-1.439-1.038-3.371-1.354-3.875c-0.315-0.503-0.836-0.791-2.394-0.531c-1.556,0.26-3.386,1.037-3.386,1.037s-1.891,0.995-3.299,0.809c-1.413-0.188-1.701-1.614-1.687-2.063c0.016-0.444,0.304-0.836,1.038-1.122c0.733-0.289,2.464-0.679,4.984-0.809c2.522-0.128,3.458-1.771,3.458-1.771c0.331-0.478,0.923-1.543-0.489-2.338c-1.412-0.789-1.44-0.589-2.116-1.104c-0.68-0.521-1.412-1.153-1.701-2.034c-0.026-0.084-0.07-0.198-0.108-0.291L55.064,72.686L55.064,72.686z"/><linearGradient id="SVGID_11_" gradientUnits="userSpaceOnUse" x1="390.042" y1="485.6797" x2="390.042" y2="485.6797" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#FFF"/><stop offset=".7473" stop-color="#F9F9F9"/><stop offset="1" stop-color="#D5D7D8"/></linearGradient><path style="fill:url(#SVGID_11_);" d="M-16.122-14.641"/><linearGradient id="SVGID_12_" gradientUnits="userSpaceOnUse" x1="390.042" y1="485.6797" x2="390.042" y2="485.6797" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#FFF"/><stop offset=".7473" stop-color="#F9F9F9"/><stop offset="1" stop-color="#D5D7D8"/></linearGradient><path style="fill:url(#SVGID_12_);" d="M-16.122-14.641"/><path style="opacity:.1;fill:#232323;" d="M92.002,13.363c1.021,1.649,2.844,4.295,2.844,4.295s0.256,0.332,0.5,0.605l0.01-0.011c0.011-0.375-0.051-0.571-0.06-0.621l-0.091-0.274c-0.021-0.367,0.438,0.095,0.611,0.288c-0.498-0.754-0.659-0.811-0.659-0.811s-0.423-0.234-0.111,0.59c0.312,0.824-0.075,0.233-0.075,0.233c-0.924-1.177-2.838-4.293-2.838-4.293l-0.553-0.383L92.002,13.363L92.002,13.363z"/><path style="opacity:.1;fill:#232323;" d="M101.539,51.352c0.014-0.063,0.023-0.125,0.034-0.188c-0.004,0-0.009,0-0.009,0s0.005-0.03,0.013-0.089C101.563,51.17,101.551,51.262,101.539,51.352L101.539,51.352z"/><path style="opacity:.1;fill:#232323;" d="M100.822,35.679c0.088-0.033,0.188,0.1,0.188,0.1s0.135,0.189,0.289,0.033c0.107-0.104,0.155-0.353,0.025-1.257c-0.004,0.229-0.053,0.409-0.137,0.59c-0.139,0.296-0.314,0.02-0.441-0.081c-0.129-0.098-0.168,0.07-0.168,0.07l-0.004,0.162c0,0.7,0.087,2.346,0.217,3.617c0.063,0.605,0.173,1.071,0.287,1.408l0.041,0.076c0.089,0.148,0.188,0.343,0.307,0.255c0.116-0.089,0.274-0.582,0.274-0.582l0.128-0.591c0.191,0.113,0.291,0.529,0.341,0.962c-0.002-0.037-0.004-0.056-0.004-0.056s-0.144-1.324-0.3-1.313c-0.155,0.01-0.21,0.701-0.21,0.701s-0.066,0.468-0.157,0.456c-0.088-0.011-0.365,0.022-0.564-1.412c-0.201-1.436-0.158-2.949-0.158-2.949S100.732,35.713,100.822,35.679L100.822,35.679z"/><path style="opacity:.1;fill:#232323;" d="M99.696,28.566l0.298,0.341c0.479,1.494,0.996,3.843,1.092,4.264c-0.027-0.139-0.056-0.286-0.088-0.441c-0.288-1.454-0.711-2.896-1.006-3.832L99.696,28.566l-0.05-0.702c-0.004-0.01-0.006-0.016-0.006-0.016s-0.312-0.913-1.033-2.737c-0.725-1.824-0.848-2.458-0.848-2.458s-0.043-0.2,0.066-0.234c0.109-0.032,0.09-0.178,0.09-0.178s-0.013-0.245-0.277-0.99c-0.182-0.503-0.312-0.911-0.662-1.607c0.281,0.585,0.463,1.052,0.524,1.259l0.028,0.068c0,0,0.099,0.148,0.066,0.552c-0.027,0.403-0.146,0.452-0.146,0.452l0.022,0.14c0.141,0.538,0.418,1.187,0.418,1.187s1.065,2.709,1.748,4.54L99.696,28.566L99.696,28.566z"/><linearGradient id="SVGID_13_" gradientUnits="userSpaceOnUse" x1="274.5342" y1="-396.1577" x2="255.2091" y2="-490.1944" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset="1" stop-color="#E4E5E6"/></linearGradient><path style="fill:url(#SVGID_13_);" d="M42.958,91.536c0.938,0.177,1.723,0.358,1.889,0.396C44.514,91.822,43.895,91.653,42.958,91.536z"/><linearGradient id="SVGID_14_" gradientUnits="userSpaceOnUse" x1="422.5586" y1="518.7568" x2="427.2878" y2="578.1768" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset=".2198" stop-color="#989A9C"/><stop offset=".2527" stop-color="#FFF"/></linearGradient><path style="fill:url(#SVGID_14_);" d="M20.381,74.92l0.007-0.164l-0.052-0.08c0,0-1.874-3.375-1.676-4.615c0,0,0.069-0.827,1.241-1.187c0.817-0.25,0.71,0.538,3.112,0.976c0,0,2.07,0.557,2.611-0.946c0.539-1.507-0.566-3.394-0.566-3.394s-1.45-2.656-3.244-2.756c-0.95-0.055-0.692,0.583-2.125,0.924c0,0-1.913,0.185-2.519-0.963c-0.733-1.389-1.015-2.968-1.015-4.021c0-1.058,0.045-1.001,0.126-1.405c0.045-0.219,0.186-0.548,0.248-1.09l-0.134-0.675l0.204-0.499c0.002-0.26-0.004-0.535-0.021-0.83c-0.092-1.661-0.211-4.221-0.436-5.711c-0.223-1.491-0.633-3.799-1.991-3.865c0,0-0.671-0.052-1.636,0.885c-0.882,0.856-1.682-0.708-1.726-1.663c-0.052-1.121,0.131-2.255,0.409-2.795c0.277-0.541,1.042-0.566,1.186-0.554c0.146,0.012,0.555,0.17,1.042,0.474c0.489,0.304,1.161,0.304,1.558-0.092c0.395-0.395,0.948-0.856,1.173-2.598c0.225-1.741,0.225-3.547,0.013-5.71l-0.224-0.485l1.339-0.288c-0.001-0.016-0.021-0.125-0.032-0.195c0,0,0-0.001-0.001-0.002c-0.001-0.017-0.004-0.033-0.007-0.052c0-0.002,0-0.004,0-0.005c-0.003-0.019-0.007-0.038-0.009-0.057c-0.001-0.001-0.001-0.001-0.001-0.003c-0.003-0.022-0.006-0.042-0.009-0.062c0-0.001,0-0.001,0-0.001c-0.004-0.022-0.006-0.045-0.011-0.067c0-0.003-0.001-0.006-0.001-0.007c-0.002-0.022-0.006-0.045-0.008-0.068c-0.001-0.005-0.001-0.01-0.003-0.015c-0.002-0.023-0.005-0.047-0.009-0.069c-0.001-0.004-0.002-0.01-0.002-0.014c-0.003-0.026-0.007-0.05-0.012-0.076c0-0.002,0-0.005,0-0.005c-0.004-0.025-0.008-0.05-0.012-0.076c0-0.007-0.001-0.012-0.002-0.018c-0.002-0.024-0.006-0.052-0.009-0.079c-0.001-0.005-0.001-0.011-0.003-0.021c-0.004-0.027-0.006-0.053-0.01-0.081c-0.001-0.007-0.002-0.013-0.003-0.02c-0.003-0.028-0.005-0.057-0.009-0.087c-0.001-0.003-0.001-0.008-0.003-0.013c-0.003-0.028-0.005-0.056-0.009-0.082c-0.001-0.006-0.001-0.011-0.002-0.017c-0.003-0.031-0.006-0.06-0.01-0.091c-0.001-0.007-0.001-0.014-0.002-0.02c-0.004-0.03-0.006-0.062-0.011-0.09c0-0.007-0.001-0.015-0.002-0.022c-0.003-0.031-0.006-0.063-0.01-0.094c-0.001-0.006-0.002-0.011-0.002-0.018c-0.003-0.032-0.005-0.063-0.009-0.094c0-0.003,0-0.005-0.001-0.009c-0.003-0.033-0.004-0.068-0.009-0.1c0-0.005,0-0.013-0.001-0.02c-0.002-0.035-0.005-0.065-0.007-0.099c-0.001-0.008-0.001-0.015-0.002-0.021c-0.003-0.032-0.005-0.066-0.007-0.099c0-0.005-0.001-0.011-0.001-0.02c-0.002-0.033-0.006-0.068-0.007-0.101c0-0.003-0.001-0.008-0.001-0.009c-0.002-0.033-0.004-0.066-0.007-0.1c0-0.006,0-0.012,0-0.017c-0.001-0.032-0.003-0.068-0.005-0.1c0-0.008,0-0.014-0.001-0.022c-0.001-0.033-0.004-0.067-0.005-0.098c0-0.006,0-0.013,0-0.021c-0.002-0.033-0.003-0.066-0.004-0.101c0-0.005,0-0.008,0-0.013c-0.001-0.032-0.002-0.066-0.002-0.099c0-0.003,0-0.005,0-0.009c0-0.034-0.001-0.067-0.001-0.102c0-0.005,0-0.012,0-0.016c0-0.033,0-0.067,0-0.098c0-0.005,0-0.012,0-0.019c0.001-0.032,0.001-0.065,0.001-0.096c0-0.004,0.001-0.009,0.001-0.014c0-0.033,0.001-0.066,0.003-0.1c0.052-1.243,0.291-1.751,0.291-1.751l0.058-0.166c0,0,0.46-1.458,1.152-2.458l-0.011,0.024c0,0,0.446-0.738,1.231-0.816c0.785-0.077,1.003,0.158,1.371,0.202c0.04,0.004,0.078,0.008,0.115,0.013c0.013,0.001,0.025,0.002,0.037,0.004c0.025,0.002,0.051,0.003,0.074,0.006c0.014,0.001,0.028,0.002,0.042,0.003c0.021,0.001,0.043,0.002,0.064,0.004c0.014,0.001,0.028,0.001,0.041,0.002c0.02,0.001,0.04,0.002,0.058,0.002c0.013,0.002,0.026,0.002,0.04,0.002c0.021,0.001,0.037,0.002,0.055,0.002c0.014,0,0.026,0.001,0.039,0.001c0.016,0,0.034,0.001,0.051,0.001c0.011,0,0.023,0,0.034,0c0.017,0,0.032,0,0.05-0.001c0.01,0,0.02,0,0.032-0.001c0.016,0,0.031,0,0.046-0.001c0.011,0,0.02-0.001,0.03-0.001c0.015,0,0.03-0.002,0.045-0.002c0.009,0,0.017-0.001,0.026-0.001c0.015-0.001,0.03-0.003,0.044-0.004c0.006-0.001,0.016-0.002,0.022-0.002c0.016-0.001,0.03-0.002,0.044-0.004c0.007-0.001,0.014-0.001,0.019-0.002c0.016-0.002,0.03-0.004,0.045-0.007c0.006,0,0.009,0,0.014-0.001c0.019-0.002,0.036-0.006,0.052-0.008l0,0c0.035-0.008,0.068-0.014,0.098-0.021c0,0,0-0.002,0.002-0.002c0.012-0.002,0.025-0.005,0.039-0.01c0.002,0,0.004-0.001,0.007-0.001c0.01-0.003,0.02-0.006,0.029-0.009c0.003-0.001,0.007-0.002,0.01-0.004c0.009-0.002,0.018-0.006,0.026-0.008c0.002-0.002,0.005-0.003,0.008-0.003c0.008-0.003,0.015-0.006,0.021-0.009c0.003-0.001,0.006-0.003,0.009-0.004c0.006-0.003,0.014-0.004,0.02-0.009c0.003-0.001,0.006-0.002,0.008-0.003c0.005-0.002,0.012-0.005,0.019-0.007c0.001-0.002,0.003-0.003,0.005-0.004c0.005-0.004,0.01-0.005,0.015-0.008c0.003-0.001,0.004-0.003,0.008-0.003c0.004-0.002,0.008-0.005,0.012-0.008c0,0,0.004,0,0.005-0.002c0.004-0.003,0.008-0.006,0.012-0.008c0.001-0.002,0.002-0.002,0.004-0.003c0.003-0.003,0.007-0.004,0.01-0.008c0.002,0,0.002,0,0.002-0.002c0.003-0.001,0.007-0.005,0.011-0.008c0,0,0.001,0,0.001-0.001c0.004-0.002,0.005-0.004,0.009-0.007h0.001c0.002-0.002,0.004-0.004,0.006-0.007c0.001-0.001,0.002-0.001,0.003-0.002s0.002-0.002,0.002-0.002c0.001-0.003,0.001-0.003,0.003-0.005c0.002-0.002,0.004-0.004,0.004-0.004c0.328-0.241,0.591-0.516,0.797-0.775c0.014-0.017,0.026-0.034,0.04-0.05c0.002-0.004,0.005-0.009,0.008-0.012c0.013-0.016,0.026-0.032,0.038-0.05c0.002-0.003,0.006-0.006,0.007-0.01c0.012-0.018,0.025-0.032,0.038-0.05c0,0,0,0,0.001,0c0.039-0.055,0.075-0.109,0.109-0.159c0-0.003,0.002-0.006,0.003-0.008c0.01-0.015,0.021-0.028,0.03-0.044c0.001-0.003,0.004-0.007,0.007-0.01c0.008-0.016,0.017-0.029,0.024-0.042c0.002-0.004,0.005-0.009,0.009-0.013c0.008-0.014,0.017-0.028,0.023-0.042c0.001-0.001,0.001-0.002,0.002-0.002c0.017-0.028,0.032-0.055,0.046-0.079c0.002-0.003,0.004-0.008,0.006-0.013c0.006-0.01,0.01-0.021,0.017-0.029c0.003-0.007,0.007-0.014,0.012-0.02c0.004-0.008,0.009-0.017,0.014-0.024c0.002-0.008,0.006-0.017,0.01-0.023c0.004-0.007,0.009-0.016,0.012-0.023c0.004-0.006,0.006-0.014,0.011-0.021c0.002-0.006,0.007-0.013,0.01-0.021c0.066-0.128,0.097-0.205,0.097-0.205c0.593-1.459,0.052-2.936-0.21-3.225c-0.32-0.353-1.041-0.882-1.041-0.882s-0.288-0.241-0.751-0.144c0.349-0.049,0.791,0.091,0.966,0.558c0.277,0.734,0.376,1.335,0.212,2.33c0,0-0.26,1.387-1.384,2.233c-1.125,0.848-1.923,0.096-2.885,0.13c-0.962,0.032-1.516,0.701-1.809,1.157c-0.293,0.457-1.417,2.2-1.319,5.067c0.097,2.868,0.291,4.301,0.325,5.558c0.033,1.205,0.178,3.976-0.635,5.278c-0.815,1.303-1.628,0.65-2.2,0.309c-0.571-0.341-1.223-0.245-1.744,0.131c-0.521,0.375-0.833,1.124-0.848,3.324c-0.016,2.364,1.532,2.606,1.532,2.606s0.293,0.146,0.945-0.537c0,0,0.651-0.685,1.253-0.603c0.604,0.082,0.995,0.716,1.255,1.808c0.261,1.092,0.796,5.621,0.717,8.668c-0.034,1.271-0.62,1.286-0.36,3.617c0,0,0.409,3.13,1.401,4.089c0.995,0.962,2.378,0.781,2.706,0.75c0.324-0.032,0.7-0.26,0.7-0.26s0.309-0.197,0.537-0.374c0.23-0.182,0.522-0.428,1.011-0.277c0.489,0.146,1.645,0.896,2.557,2.571c0.915,1.678,0.496,3.317-0.26,3.521c-0.668,0.182-0.848,0.229-1.971-0.05c-1.124-0.274-1.451-0.567-1.957-0.766c-0.504-0.196-1.043-0.263-1.547,0.114c-0.505,0.373-1.345,1.057-0.343,3.32c0.961,2.174,1.692,3.797,3.518,5.623c-0.522-0.607-0.956-1.188-1.427-1.871L20.381,74.92L20.381,74.92z"/><linearGradient id="SVGID_15_" gradientUnits="userSpaceOnUse" x1="237.3721" y1="-388.3604" x2="218.8474" y2="-478.5023" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset="1" stop-color="#E4E5E6"/></linearGradient><path style="fill:url(#SVGID_15_);" d="M22.494,7.387l-0.05,0.025C22.45,7.41,22.469,7.401,22.494,7.387z"/><linearGradient id="SVGID_16_" gradientUnits="userSpaceOnUse" x1="259.9063" y1="-479.3379" x2="259.8987" y2="-479.3752" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset="1" stop-color="#E4E5E6"/></linearGradient><path style="fill:url(#SVGID_16_);" d="M46.028,92.85c0.13,0.014,0.26,0.026,0.391,0.041c-0.114-0.016-0.31-0.039-0.561-0.074C45.916,92.828,45.972,92.838,46.028,92.85L46.028,92.85z"/><path style="fill:#9FA2A3;" d="M24.089,5.489c-0.649,0.36-0.7-0.016-1.141,0.017c-0.439,0.033-1.026,0.212-1.596,1.043c-0.571,0.831-0.586,1.89,0.326,1.417c0,0,0.436-0.428,0.815-0.579c0.081-0.043,0.24-0.126,0.406-0.174l0.144-0.117c0,0,0.424-0.491,1.073-0.333c0.648,0.156,1.119-0.129,1.119-0.129c1.01-0.761,1.655-2.184,1.655-2.184l0.987-1.998l-0.826-1.336c0,0-0.698,1.489-1.383,2.53C24.986,4.692,25.033,4.972,24.089,5.489L24.089,5.489z"/><path style="fill:#9FA2A3;" d="M19.871,16.292c0,0-0.424,1.89,1.156,1.597c0,0,0.006-0.002,0.022-0.007c-0.062,0.003-0.089-0.006-0.089-0.006c-0.025-0.497,0.149-1.432,0.49-2.261c0.341-0.83,1.075-2.254,1.075-2.254s1.047-1.791,1.467-2.89c0.42-1.102,0.416-1.939,0.416-1.939s-0.8-1.019-0.915-1.176c-0.115-0.157-0.272-0.223-0.272-0.223c-0.054,0.019-0.103,0.036-0.146,0.051c0.115-0.007,0.221,0.021,0.283,0.114c0.213,0.31-0.39,2.036-0.39,2.036s-0.522,1.238-1.548,3.03C20.393,14.157,19.871,16.292,19.871,16.292L19.871,16.292z"/><linearGradient id="SVGID_17_" gradientUnits="userSpaceOnUse" x1="268.9033" y1="-394.6382" x2="249.4966" y2="-489.0725" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset="1" stop-color="#E4E5E6"/></linearGradient><path style="fill:url(#SVGID_17_);" d="M38.185,89.697l0.166,0.02c-0.134-0.119-0.305-0.236-0.497-0.347c0.184,0.113,0.489,0.358,0.312,0.665c-0.245,0.424-0.048,0.457,0.489,0.863c0,0,0.022,0.013,0.061,0.033c-0.156-0.107-0.253-0.234-0.156-0.362c0.125-0.166,0.136-0.334,0.065-0.499L38.185,89.697L38.185,89.697z"/><linearGradient id="SVGID_18_" gradientUnits="userSpaceOnUse" x1="254.4561" y1="-391.5991" x2="235.0337" y2="-486.1104" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset="1" stop-color="#E4E5E6"/></linearGradient><path style="fill:url(#SVGID_18_);" d="M24.437,82.749c-1.245-1.185,1.595-0.118,1.595-0.118s0.619,0.262,0.343-0.385c-0.246-0.57-1.373-1.963-2.543-3.219l0.144,0.156c0,0,2.346,2.721,2.183,2.966c-0.164,0.245-1.108-0.325-1.108-0.325s-1.401-0.539-1.206,0.13c0.143,0.491,1.059,1.271,1.536,1.649C25.109,83.372,24.798,83.09,24.437,82.749z"/><linearGradient id="SVGID_19_" gradientUnits="userSpaceOnUse" x1="262.6514" y1="-392.9692" x2="243.1559" y2="-487.8355" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset="1" stop-color="#E4E5E6"/></linearGradient><path style="fill:url(#SVGID_19_);" d="M26.977,84.73c0.424,0.256,0.903,0.513,1.365,0.676c0,0,0.831,0.293,1.337-0.114c0.503-0.403,0.503-0.601,1.238-0.243c0,0,1.388,0.696,2.382,1.444c0.98,0.735,3.557,2.336,4.396,2.791c-0.764-0.417-3.712-2.365-4.633-2.99c-0.936-0.633-2.574-1.698-3.297-1.476c-0.554,0.172-0.474,0.396-0.804,0.555c-0.331,0.158-0.688,0.055-1.504-0.383C27.291,84.9,27.134,84.818,26.977,84.73L26.977,84.73z"/><linearGradient id="SVGID_20_" gradientUnits="userSpaceOnUse" x1="271.5479" y1="-390.9575" x2="251.1904" y2="-490.0176" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset="1" stop-color="#E4E5E6"/></linearGradient><path style="fill:url(#SVGID_20_);" d="M39.903,91.448c0.37,0.104,0.672,0.06,0.787,0.035c-0.678,0.04-1.35-0.269-1.35-0.269s-0.067-0.021-0.165-0.061C39.413,91.268,39.689,91.385,39.903,91.448z"/><linearGradient id="SVGID_21_" gradientUnits="userSpaceOnUse" x1="274.6582" y1="-395.8442" x2="255.2559" y2="-490.2569" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset="1" stop-color="#E4E5E6"/></linearGradient><path style="fill:url(#SVGID_21_);" d="M44.293,92.169c0,0-1.344-0.163-1.939-0.163c0,0-0.037,0.064,0.226,0.158c-0.021-0.021-0.031-0.049,0.189,0c0.304,0.064,2.018,0.225,2.465,0.158c0.448-0.068-0.091-0.278-0.091-0.278s-0.088-0.041-0.267-0.102C44.553,92.201,44.293,92.169,44.293,92.169L44.293,92.169z"/><path style="opacity:.1;fill:#232323;" d="M4.662,62.045c0.085,0.143,0.198,0.432,0.462,0.725c0.146,0.16,0.266,0.072,0.162-0.525c-0.253-0.182-0.407-0.318-0.464-0.371c-0.113-0.013-0.263-0.297-0.263-0.297s-0.471-0.835-0.274-0.227c0.398,1.23,1.6,3.821,1.6,3.821l1.396,2.47c-0.999-1.803-2.299-4.633-2.44-5.013C4.691,62.223,4.577,61.904,4.662,62.045L4.662,62.045z"/><path style="opacity:.1;fill:#232323;" d="M1.547,32.696l0.032-0.643c0.027-0.122,0.057-0.241,0.087-0.36c0.712-2.789,1.069-3.858,1.425-4.649c0.356-0.792,0.398-0.245,0.398-0.245s0,0.209,0.136,0.234c0.135,0.023,0.324-0.32,0.494-0.826c0.17-0.504,0.604-1.745,0.693-2.212c0.135-0.704-0.051-0.358-0.115-0.354c-0.108,0.005-0.126-0.091-0.113-0.306c0,0,0.382-2.122,3.064-6.563c0.18-0.17,0.321-0.307,0.47-0.449c-0.055-0.052-0.033-0.265,0.001-0.32c0.136-0.214,0.275-0.435,0.422-0.661l-0.09,0.504c0,0-1.85,2.492-3.104,5.694c0,0-0.342,0.835-0.359,1.094c-0.025,0.154-0.104,0.739,0.152,0.582l0.065-0.048c-0.093,0.484-0.295,1.37-0.607,2.325c-0.288,0.878-0.573,1.633-0.841,2.078l-0.002-0.004c-0.08,0.067-0.098-0.016-0.146-0.21c-0.048-0.198-0.113-0.198-0.113-0.198c-0.179,0-0.324,0.202-0.41,0.359c-0.04,0.056-0.089,0.19-0.089,0.19s-0.461,0.934-1.281,4.26c-0.822,3.328-0.836,6.14-0.836,6.14s-0.084,1.309-0.21,1.379c-0.126,0.07-0.097-0.056-0.097-0.056s-0.045-0.052-0.114,0.045c0,0,0.02-0.76,0.044-0.875c0,0,0.041-0.206,0.119-0.206s0.006,0.125,0.048,0.16c0.039,0.032,0.084,0.03,0.075-0.178c-0.005-0.176,0.147-2.816,0.621-5.312L1.547,32.696L1.547,32.696z"/><path style="opacity:.1;fill:#232323;" d="M0.392,41.994c0-0.002,0-0.004,0-0.005c0,0,0.018,0.217,0.042,0.356l-0.003,0.01c0.078,0.357,0.187,0.357,0.187,0.357c0.008-0.096,0.087-0.273,0.183-0.458c0.007,0.106,0.007,0.231-0.004,0.375c-0.037,0.537-0.019,2.466,0.209,4.28c0.225,1.815,0.367,3.349,0.394,3.594c0.029,0.245,0.498,3.283,1.025,5.089c0.285,0.967,0.422,1.344,0.483,1.424l0.008,0.049c0,0,0.097,0.184,0.348,0.32c0,0,0.111-0.097,0.112-0.412c0.018,0.031,0.037,0.065,0.057,0.105c-0.083,0.262-0.105,0.426-0.105,0.426l0,0c-0.042-0.043-0.06-0.031-0.046,0.045c0.067,0.357,0.027,0.68-0.169,0.272c-0.198-0.403-0.8-1.832-1.307-4.251c0,0-0.531-2.659-0.795-5.084l0.042-0.105L0.989,48.29c-0.027-0.248-0.048-0.491-0.067-0.729c0,0-0.255-3.657-0.237-4.562c0.019-0.904-0.085-0.02-0.085-0.02s-0.021,0.219-0.028,0.329c-0.008,0.109-0.103,0.352-0.136-0.246C0.459,43.322,0.392,42.261,0.392,41.994L0.392,41.994z"/><path style="opacity:.1;fill:#232323;" d="M24.672,1.974l-0.53-0.753l-0.066-0.065c0,0-0.131-0.136-0.896,0.038l-0.11,0.022c0,0,0.38-0.094,0.168,0.191c-0.212,0.285-0.56,0.496-1.172,1.15c-0.612,0.655-0.411,0.803-0.01,0.668c0.401-0.138,1.188-0.499,2.606-1.243L24.672,1.974z"/><path style="opacity:.1;fill:#232323;" d="M23.106,1.21c-0.022,0.003-0.036,0.006-0.036,0.006L23.106,1.21z"/><path style="opacity:.1;fill:#232323;" d="M23.637,1.811c0.31-0.272,0.429-0.484,0.454-0.641l-0.015-0.014c0,0-0.131-0.136-0.896,0.038l-0.075,0.015c0.09-0.015,0.303-0.032,0.133,0.198c-0.212,0.285-0.56,0.496-1.172,1.151c-0.612,0.656-0.411,0.803-0.01,0.667c0.106-0.038,0.239-0.088,0.4-0.157C22.599,2.755,23.046,2.325,23.637,1.811z"/><path style="opacity:.1;fill:#232323;" d="M83.482,4.115l-0.2,0.235c0,0,0.136,0.081,0.208,0.141c0.008,0.005,0.014,0.01,0.021,0.012c-0.043-0.034-0.07-0.056-0.07-0.056c-0.023-0.109,0.004-0.223,0.014-0.297L83.482,4.115c0,0,0.055,0.002,0.143,0.011L83.482,4.115L83.482,4.115z"/><path style="opacity:.53;fill:#FFF;" d="M62.559,90.319c0,0,1.686-0.187,3.239-0.691c1.558-0.504,1.935-0.981,1.874-1.341c-0.037-0.238-0.396-0.305-0.906-0.238c0.271-0.021,0.514,0.032,0.354,0.332c-0.313,0.582-0.861,0.782-0.861,0.782s-0.267,0.19-0.89,0.371c-0.806,0.245-1.794,0.375-2.335,0.438c-0.691,0.082-0.521-0.033-1.465,0.291c-0.023,0.016-0.047,0.025-0.065,0.043c-0.289,0.237,1.071,0.514,1.071,0.514s1.302,0.361,3.257,0.23l0.067-0.021c0.267-0.078,0.533-0.161,0.8-0.245c-2.021,0.457-3.324,0.149-3.737,0.095c-0.434-0.058-0.777-0.144-0.88-0.359C61.98,90.305,62.559,90.319,62.559,90.319L62.559,90.319z"/><path style="opacity:.1;fill:#232323;" d="M63.301,4.417l0.717,0.076c1.429-0.405,2.651-0.776,2.651-0.776s1.265-0.41,1.901-0.636c0.635-0.227,1.09-0.313,1.656-0.41c0.563-0.096,1.309-0.14,1.709-0.131c0.398,0.007,0.528,0.122,0.528,0.122s0.166,0.131,0.245,0.27c0.077,0.138,0.74,1.891,2.975,2.005c2.231,0.112,2.261-1.096,2.063-1.464c-0.226-0.427-0.896-0.863-0.896-0.863s-0.898-0.575-1.09-0.846c-0.192-0.271,0.033-0.358,0.104-0.376c0.066-0.018,2.433-0.497,2.729-0.608l0.021-0.02l-0.563-0.174c0,0-0.119,0.134-0.789,0.312c-0.67,0.179-1.233,0.246-1.742,0.313c-0.504,0.067-0.504,0.239-0.504,0.239l-0.879,1.406c0,0-0.029,0.104,0.043,0.305c0.073,0.202,0.41,0.448,0.41,0.448s0.573,0.424,0.99,0.699c0.418,0.275,0.395,0.373,0.395,0.373c-1.123,0.095-1.418-0.048-1.875-0.276c-0.445-0.223-0.76-0.729-0.922-1.086c-0.162-0.357-0.521-0.663-0.521-0.663c-0.589-0.336-1.696-0.343-2.813-0.15c-1.115,0.194-2.656,0.707-2.923,0.812c-0.271,0.104-1.616,0.551-2.309,0.729c-0.694,0.179-1.224,0.357-1.646,0.47c-0.426,0.11-3.431,1.005-4.557,1.339c-1.124,0.333-1.848,0.461-1.848,0.461c-1.688,0.171-2.193-0.134-2.193-0.134c-0.297-0.125-0.262-0.527-0.262-0.527l0.009-1.147c0,0-0.029-0.433-0.356-0.611c-0.328-0.179-0.779-0.252-1.593-0.29c-0.811-0.038-1.683,0.044-2.093,0.134c-0.408,0.09-1.19,0.313-1.764,0.952c-0.573,0.641-0.481,1.141-0.481,1.141s0.035,0.683,0.088,1.19c0.052,0.504,0.484,0.662,0.484,0.662s-0.744,0.532-3.045,1.206c-2.209,0.648-3.682,0.774-3.682,0.774l0.678,0.254c0,0,5.468-1.015,7.148-2.616c0,0,0.624-0.293,0.02-0.88c-0.606-0.585-0.897-0.761-0.897-0.761s-0.41-0.224,0.019-0.771c0.43-0.547,0.923-0.795,1.352-0.933c0.429-0.138,1.753-0.25,2.925-0.093c0,0,0.491,0.041,0.459,0.408c-0.034,0.366-0.088,0.872-0.077,1.028c0.008,0.158,0.023,0.515,0.398,0.845c0.378,0.332,1.099,0.453,1.099,0.453s1.257,0.228,2.843-0.217c1.584-0.445,3.642-1.14,5.431-1.629L63.301,4.417L63.301,4.417z"/><path style="fill:#232323;" d="M-16.122-14.641"/><path style="fill:#616161;" d="M48.462,6.628c0.31,0.207,0.476,0.221,0.5,0.421c0.055,0.339-0.56,0.64-0.56,0.64l-0.006-0.011c0,0-0.431-0.157-0.484-0.664c-0.052-0.505-0.088-1.19-0.088-1.19s0.001,0.2,0.046,0.26C48.004,6.256,48.087,6.378,48.462,6.628z"/><path style="opacity:.17;fill:#FFF;" d="M82.447,79.307l0.451,0.17c1.104-0.617,1.496-0.809,1.759-0.963c1.183-0.703,2.592-1.563,2.963-1.855c0,0,0.761-0.518,0.116,0.195s-0.969,1.007-0.969,1.007s-0.625,0.626-0.471,0.782c0,0,0.166,0.246,1.193-0.687c1.023-0.929,2.15-2.258,2.275-2.44c0.127-0.188,0.146-0.293,0.146-0.293s0.107-0.215,0.273-0.393c0.145-0.15,1.377-1.496,1.994-2.121c0,0,0.002,0.001,0.006,0.003c0.273-0.362,0.541-0.729,0.806-1.102c-0.358,0.379-1.724,1.829-2.483,2.684c0,0-0.713,0.763-0.938,1.056s-0.225,0.47-0.225,0.47s-0.117,0.196-0.392,0.519s-1.24,1.186-1.24,1.186s-0.577,0.47-0.754,0.478c-0.179,0.011,0.431-0.538,0.431-0.538s0.588-0.625,0.967-1.123c0.382-0.498,0.137-0.47,0.137-0.47s-0.186-0.049-0.986,0.459c-0.8,0.508-1.367,0.858-1.367,0.858s-1.722,0.986-2.814,1.623c-1.096,0.636-3.6,1.908-5.021,2.492c-1.43,0.588-2.162,0.715-2.035,0.527c0.127-0.186,0.461-0.459,0.461-0.459s0.399-0.4,0.399-0.803c0,0,0.128-0.586-1.604-0.223c-1.729,0.36-3.293,1.213-3.293,1.213s-2.571,1.182-1.965,1.887c0,0,0.117,0.186,0.635,0.352c0.52,0.166-0.92,0.606-0.92,0.606c-1.365,0.448-2.413,0.651-3.74,0.926c-1.963,0.403-3.564,0.761-4.165,0.894c-0.165,0.035-0.253,0.059-0.253,0.059s-1.212,0.292-3.229,1.072c-2.015,0.783-5.972,1.43-5.972,1.43s-2.542,0.293-2.777,0.627c-0.234,0.331,0.177,0.499,0.177,0.499s0.362,0.224,1.671,0.283c0,0,0.451,0,0.471,0.036c0.018,0.039,0.046,0.068-0.235,0.156c-0.286,0.088-0.854,0.314-2.778,0.558c-1.936,0.245-1.896-0.067-1.896-0.067s-0.01-0.076,0.078-0.216c0.087-0.134,0.009-0.369-0.293-0.535c0,0-0.419-0.272-1.829-0.262c-1.408,0.009-4.212,0.017-6.833-0.14c-2.374-0.143-5.59-0.551-6.099-0.664c0,0-0.117-0.029-0.206-0.117c-0.088-0.09-0.646-0.422-1.164-0.733c-0.517-0.313-2.073-0.907-2.073-0.907s-2.011-0.783-1.945-0.521c0.015,0.063,0.13,0.153,0.268,0.246c0.351,0.188,0.704,0.375,1.06,0.56l0.002-0.002c0,0-0.743-0.402-0.538-0.402s0.438,0.109,0.438,0.109s1.213,0.332,1.966,0.686c0.753,0.353,1.407,0.83,1.407,0.83s0.929,0.549,2.319,0.732c1.346,0.182,3.174,0.389,3.777,0.448l0.594-0.272l0.433,0.354c1.106,0.068,2.575,0.146,2.575,0.146s2.976,0.111,4.605-0.019c0.733-0.063,0.507,0.317,0.507,0.317s-0.214,0.354,0.206,0.529c0,0,0.771,0.439,3.343,0.157c2.573-0.286,3.138-0.862,3.138-0.862s0.299-0.275-0.351-0.398c-0.513-0.1-0.513-0.051-1.175-0.117c-0.665-0.067-0.998-0.205-0.557-0.323c0.441-0.114,1.174-0.175,1.174-0.175s2.249-0.313,4.066-0.783c0,0,1.938-0.458,3.861-1.134c0.756-0.265,1.395-0.459,1.887-0.599l0.438-0.644l0.644,0.372c0.065-0.014,0.103-0.021,0.103-0.021s2.306-0.539,3.274-0.703c0.966-0.168,3.154-0.637,4.087-1.086c0.928-0.448,1.396-0.805,1.505-1.075c0.107-0.272-0.393-0.431-0.393-0.431s-0.588-0.138-0.508-0.34c0.075-0.205,0.293-0.382,1.213-0.793c0.918-0.41,2.07-0.859,3.227-1.144c1.154-0.282,0.732,0.194,0.732,0.194s-0.692,0.705-0.783,0.979c-0.086,0.273,0.029,0.285,0.119,0.333c0.088,0.05,0.646,0.028,1.022-0.067c0.383-0.099,3.464-1.271,5.341-2.347c0.049-0.026,0.094-0.054,0.139-0.08L82.447,79.307z"/><linearGradient id="SVGID_22_" gradientUnits="userSpaceOnUse" x1="221.1826" y1="-454.5649" x2="221.373" y2="-454.5649" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#808080"/><stop offset=".0868" stop-color="#7A7A7A"/><stop offset=".36" stop-color="#6B6B6B"/><stop offset=".5192" stop-color="#686868"/><stop offset=".6377" stop-color="#5F5F5F"/><stop offset=".7431" stop-color="#4E4E4E"/><stop offset=".8408" stop-color="#383838"/><stop offset=".9324" stop-color="#1B1B1B"/><stop offset="1" stop-color="#000"/></linearGradient><path style="opacity:.68;fill:url(#SVGID_22_);" d="M7.432,68.01l0.178,0.131c-0.105-0.099-0.167-0.155-0.167-0.155s-0.008,0.003-0.024,0.003C7.423,67.993,7.429,68.002,7.432,68.01L7.432,68.01z"/><linearGradient id="SVGID_23_" gradientUnits="userSpaceOnUse" x1="221.4043" y1="-449.8027" x2="316.0254" y2="-449.8027" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#808080"/><stop offset=".0868" stop-color="#7A7A7A"/><stop offset=".3817" stop-color="#828282"/><stop offset=".5185" stop-color="#808080"/><stop offset=".5677" stop-color="#797979"/><stop offset=".6027" stop-color="#6E6E6E"/><stop offset=".608" stop-color="#6B6B6B"/><stop offset="1" stop-color="#4E4E4E"/></linearGradient><path style="opacity:.43;fill:url(#SVGID_23_);" d="M90.412,59.954l-0.371-0.021c-1.807,1.463-2.342,1.938-3.781,2.955c0,0-1.644,1.228-3.44,2.196c-1.804,0.97-3.919,0.853-3.919,0.853s-0.573-0.062-0.295-0.477c0.275-0.415,0.634-1.425,0.771-1.938c0.141-0.516,0.415-1.82-0.633-2.235s-3.018,0.196-3.018,0.196s-4.525,1.205-6.371,3.23c-1.793,1.969-0.286,2.846-0.286,2.846s0.702,0.49,1.386,0.73c0.645,0.229,0.516,0.436,0.354,0.555c0,0-2.021,1.287-4.408,1.974c0,0-3.268,1.001-6.441,1.206c-3.154,0.203-4.495,0.283-4.495,0.283l-0.399,0.379l-0.758-0.252c-1.283,0.154-3.455,0.463-5.596,0.979c-2.622,0.64-5.123,1.147-6.903,2.296c0,0-1.333,0.887-0.566,1.746c0.765,0.862,1.565,1.23,1.565,1.23s0.472,0.207,0.464,0.336c-0.009,0.164-0.015,0.309-0.367,0.512c0,0-1.394,0.814-4.108,0.859c-2.714,0.045-3.911,0.021-4.707-0.695c-0.658-0.591,0.165-1.844,0.165-1.844s0.33-0.612,0-1.453c-0.33-0.84-2.218-0.854-2.218-0.854l-2.615-0.134c-3.095-0.081-7.182-0.427-9.001-0.653c0,0-0.012-0.002-0.033-0.006l-0.006,0.166l-0.721-0.303c-1.139-0.221-3.243-0.668-4.075-1.084c-0.759-0.38-1.167-0.313-1.066-1.102c0.101-0.769-0.753-1.836-0.753-1.836s-1.188-1.287-2.257-2.086c-1.069-0.804-1.523-0.564-1.523-0.564s-0.484,0.258-0.049,1.296c0.436,1.04,0.86,1.403,0.86,1.403s0.208,0.22,0.089,0.279c-0.118,0.06-0.484-0.219-0.789-0.478c-0.253-0.21-1.885-1.742-2.456-2.276l0.105,0.356c0.019,0.028,0.035,0.062,0.052,0.086c0.184,0.291,0.855,1.269,2.155,2.28c1.549,1.213,1.559,0.729,1.559,0.729s0.061-0.399-0.297-0.84c-0.359-0.44-0.934-1.373-0.791-1.715c0.144-0.339,0.309-0.31,0.309-0.31s0.133-0.051,0.596,0.299c0.462,0.351,1.498,1.076,2.011,1.703c0.513,0.623,0.48,1.181,0.48,1.181s-0.102,0.563,0.453,1.17c0.553,0.604,1.733,1.714,5.859,2.351c0.025,0.004,0.034,0.006,0.059,0.01l0.193-0.551l0.573,0.663c3.598,0.521,5.555,0.563,5.555,0.563s4.709,0.162,5.982,0.162c1.272,0,1.035,0.666,1.035,0.666s-0.072,0.359-0.225,0.646c-0.155,0.287-0.524,1.365-0.144,1.939c0,0,0.585,1.427,4.381,1.527c0,0,3.324,0.268,5.643-0.688c2.319-0.954,0.226-2.275,0.226-2.275s-0.794-0.481-1.13-0.739c-0.308-0.234-0.184-0.481-0.121-0.646c0.06-0.162,0.297-0.359,0.563-0.492c0.266-0.134,1.239-0.654,5.365-1.722c4.124-1.069,6.587-1.183,6.587-1.183s0.02-0.002,0.055-0.004l0.338-0.656l0.854,0.556c0.732-0.06,1.681-0.129,2.526-0.171c1.691-0.082,4.341-0.471,5.879-0.807c1.54-0.343,3.869-1.062,5.592-1.951c1.725-0.895,1.809-1.519,1.809-1.519s0.328-0.475-0.392-0.995c-0.719-0.523-1.036-0.382-1.673-1.027c-0.637-0.646,0.557-1.62,0.557-1.62s0.612-0.861,4.021-2.175c3.403-1.313,3.979-0.873,4.153-0.729s0.195,0.615,0.123,0.935c-0.069,0.317-0.494,1.455-0.721,2.053c-0.227,0.594-0.316,1.406,0.605,1.601c0.923,0.194,2.215-0.008,3.428-0.442c2.893-1.033,3.756-2.295,8.534-5.764c0.012-0.008,0.021-0.017,0.03-0.021L90.412,59.954l0.689,0.108c1.978-1.573,3.869-3.571,3.869-3.571s1.258-1.261,1.889-2.356c0.595-1.026,0.027,0.89,0.027,0.89s-0.32,1.516,0.19,2.077c0.405,0.445,1.563-0.795,1.563-0.795s0.688-0.789,0.965-2.061c0.408-1.875,0.185-2.248,0.185-2.248s-0.246-0.389-0.093-0.852c0.154-0.459,1.158-3.047,1.98-4.01l0.502-0.563c0-0.008,0.002-0.02,0.002-0.027l-0.224-0.557l0.304-0.512c0,0-0.279,0.322-1.404,2.177c-1.266,2.087-1.467,3.771-1.467,3.771s-0.119,0.653-0.054,1.034c0.063,0.355,0.188,0.519,0.192,0.622c0.009,0.104-0.073,0.959-0.508,1.773c-0.438,0.814-0.815,1.031-0.815,1.031s-0.756,0.545-0.86,0.157c-0.104-0.39-0.074-0.72-0.035-0.966c0.035-0.248,0.289-1.579,0.252-2.072c-0.035-0.494-0.479-0.098-0.479-0.098s-0.104,0.119-0.298,0.366s-1.288,1.637-1.705,2.125c-0.988,1.157-1.886,1.989-4.292,3.93c-0.007,0.003-0.015,0.011-0.019,0.015L90.412,59.954L90.412,59.954z"/><linearGradient id="SVGID_24_" gradientUnits="userSpaceOnUse" x1="214.5928" y1="-431.356" x2="314.4043" y2="-431.356" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#555555"/><stop offset="1" stop-color="#231F20"/></linearGradient><path style="opacity:.31;fill:url(#SVGID_24_);" d="M1.193,48.543l0.104,0.975c0.235,0.285,0.577,0.677,1.071,1.187c1.084,1.121,1.427,0.416,1.427,0.416s0.253-0.705-0.054-1.985C3.434,47.85,3.488,47.09,4.066,47.11c0.578,0.019,2.258,0.361,2.782,1.752c0,0,0.217,0.649,0.018,1.479c-0.2,0.834-0.162,1.57-0.018,2.295c0.145,0.725,0.759,1.407,1.464,1.971c0.706,0.562,2.746,1.535,4.734,1.66c1.987,0.127,2.601,0.021,2.601,0.021l0.746-0.767l0.134,0.668c0.812-0.09,2.116-0.229,3.62-0.393c2.528-0.271,4.227-0.544,5.798-0.308c1.573,0.235,2.079,1.462,2.079,1.462s0.108,0.314-0.253,0.544c-0.349,0.224-0.749,0.547-0.948,0.89c-0.199,0.346-0.411,1.068,0.16,2.035c0.572,0.963,2.142,1.592,3.478,1.432c1.335-0.155,3.335-0.67,4.52-0.979c1.287-0.337,2.424-0.971,2.572-1.98c0.147-1.008-1.534-2.295-1.534-2.295s-0.812-0.609-0.91-0.75c-0.1-0.139,0.099-0.197,0.099-0.197s0.949-0.229,1.357-0.414c0.404-0.189,1.522-0.646,3.353-1.219s5.608-1.248,5.608-1.248s2.084-0.332,4.685-0.543l0.622-0.702l0.485,0.625c0.409-0.024,0.825-0.046,1.243-0.063c3.572-0.129,5.344-0.554,7.242-0.979c1.897-0.427,4.568-1.978,4.965-2.276c0.396-0.295,1.229-0.66,1.396-1.957c0.168-1.295-1.364-2.157-1.364-2.157s-1.218-0.644-1.475-0.93c-0.258-0.287-0.02-0.562-0.02-0.562s0.689-1.485,2.896-2.354c2.205-0.872,3.689-1.107,4.618-1.208c0.932-0.099,1.245,0.237,1.374,0.396c0.128,0.157,0.128,0.485,0.021,0.821c-0.102,0.308-0.444,1.038-0.645,1.395c-0.197,0.356-0.523,1.216-0.316,1.622c0.208,0.405,0.843,0.593,1.662,0.445c0.821-0.149,2.988-0.761,4.888-1.553c1.9-0.792,5.073-2.345,5.073-2.345s0.009-0.004,0.022-0.012l0.086-0.729l0.729,0.295c1.02-0.562,2.764-1.58,4.01-2.631c1.871-1.573,3.699-3.225,4.166-3.639c0.465-0.417,0.892-0.752,1.307-0.732c0.414,0.021,0.732,0.317,0.988,1.434c0.258,1.118,0.308,2.038,0.426,2.582c0.117,0.543,0.285,1.175,0.931,1.304c0.646,0.129,1.513-0.434,1.838-0.713c0.33-0.276,0.92-1.176,0.882-2.382c0,0,0.068-1.604-0.761-3.127c0,0-0.351-0.614-0.479-0.782c-0.088-0.118-0.155-0.238-0.01-0.525c0.148-0.286,0.467-0.821,1.062-1.156c0.448-0.256,0.88-0.316,1.128-0.396c0,0,0.275-0.067,0.626-0.261l-0.126-0.412l0.289,0.316c0.404-0.239,0.652,0.045,0.652,0.045l-0.392-0.501l0.119-0.484c0,0-0.304-0.163-0.685-0.088c-0.383,0.078-0.42,0.362-1.014,0.458c-0.593,0.096-1.275,0.306-1.945,1.319c-0.67,1.011,0,2.271,0,2.271s0.359,0.592,0.533,0.896c0.172,0.306,1.066,2.215,0.037,3.608c0,0-0.552,0.643-1.525,0.86c-0.86,0.19-0.642-0.816-0.729-1.355c0,0-0.129-2.281-1.237-3.588c-0.976-1.146-2.746,0.888-3.629,1.566c-0.822,0.629-3.228,3.112-6.684,4.925l-0.51,0.892l-0.324-0.472c-1.658,0.827-5.418,2.656-7.87,3.514c0,0-1.875,0.762-2.64,0.782c0,0-0.17,0.006-0.034-0.179c0.133-0.185,0.276-0.322,0.507-0.737c0.23-0.418,0.646-1.357,0.646-2.327c0-0.969-1.119-1.917-2.68-1.748c-1.561,0.167-3.052,0.6-4.849,1.292c-1.796,0.692-3.343,2.159-3.55,3.375c-0.209,1.216,1.105,1.92,1.105,1.92s1.484,0.751,1.674,1.157c0.188,0.406,0.049,0.783,0.049,0.783s-0.129,0.406-0.783,0.782c-0.649,0.377-2.42,1.287-2.42,1.287s-2.207,1.217-5.562,1.512c0,0-3.058,0.26-4.817,0.348c-0.022,0.002-0.046,0.002-0.069,0.003l-0.541,0.53l-0.587-0.449c-1.64,0.136-3.54,0.359-3.54,0.359s-4.29,0.609-8.219,1.822c-3.336,1.027-3.971,1.594-3.971,1.594s-0.711,0.596-0.118,1.453c0,0,0.341,0.539,1.03,1.08c0.685,0.541,1.237,1.057,1.159,1.317c-0.08,0.265-0.29,0.382-0.29,0.382s-0.961,0.856-4.894,1.518c0,0-2.531,0.488-3.31-0.275c-0.778-0.766-0.435-1.279-0.435-1.279s0.052-0.173,0.62-0.527c0,0,0.951-0.596,0.647-1.727c-0.303-1.135-2.129-2.545-4.101-2.533c0,0-2.303,0.006-8.196,0.762c0,0-0.008,0-0.027,0.005l-0.204,0.501l-0.605-0.393c-0.324,0.039-0.713,0.076-1.114,0.107c-1.012,0.07-2.477-0.057-4.3-0.596c-1.824-0.543-2.963-1.535-3.126-2.133c-0.114-0.412,0.035-0.996,0.035-0.996S7.62,50.2,7.405,49.115c-0.22-1.083-0.582-1.934-1.631-2.567c-1.048-0.632-1.643-0.522-1.643-0.522s-0.939-0.144-0.904,1.446c0.037,1.59,0.235,2.256,0.235,2.256s0.181,0.562-0.108,0.635c-0.288,0.072-0.74-0.361-0.74-0.361s-1.021-0.924-1.619-1.688l0.048,0.066l-0.214,0.525c0,0,0.067,0.115,0.266,0.375L1.193,48.543L1.193,48.543z"/><linearGradient id="SVGID_25_" gradientUnits="userSpaceOnUse" x1="214.8965" y1="-410.8818" x2="306.501" y2="-410.8818" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#A0A0A0"/><stop offset=".0769" stop-color="#656767"/><stop offset="1" stop-color="#717375"/></linearGradient><path style="opacity:.34;fill:url(#SVGID_25_);" d="M91.075,11.742l0.183,0.846c0,0-0.563,0.313-1.678,0.613c-1.113,0.3-2.188,0.801-2.188,0.801s-0.89,0.289-0.551,1.013c0.338,0.726,0.838,1.076,0.838,1.076s0.711,0.69,0.736,1.213c0.021,0.526-0.199,0.765-0.764,1.076c-0.563,0.313-1.075,0.375-1.075,0.375s-1.338,0.24-2.001-0.387c-0.663-0.626-0.787-1.663-0.787-1.663s-0.05-0.876-1.148-1.251c-1.102-0.375-2.453,0.425-2.453,0.425s-1.063,0.563-2.2,1.3c-1.14,0.738-3.291,1.64-4.642,2.114l-0.152,0.699l-0.758-0.382c-1.422,0.489-3.271,1.109-3.271,1.109S66.652,21.645,65,21.871c-1.648,0.224-2.016-0.014-2.238-0.238c-0.228-0.224,0.039-1.012,0.039-1.012s0.674-1.376,0.348-2.09c-0.324-0.714-2.451-0.9-2.486-0.9c-0.04,0-2.318-0.265-4.451,0.932c-1.895,1.062-2.143,1.642-2.143,1.642s-0.604,0.938,0.113,1.867c0.807,1.051,1.879,1.146,1.879,1.146s1.021,0.079,1.258,0.38c0.24,0.299,0.076,0.626,0.076,0.626s-0.336,0.925-2.228,1.312c0,0-3.181,0.933-9.113,1.776l-0.582,0.579c-3.743,0.47-8.143,1.363-10.555,1.989c-2.412,0.627-2.553,1.317-2.553,1.317c-0.519,0.813,0.141,1.236,0.141,1.236s0.829,0.283,1.017,1.19c0.19,0.91-0.783,1.629-0.783,1.629s-1.159,0.972-2.898,1.269c-1.739,0.297-2.396,0.35-3.429-0.47c-0.91-0.721-0.298-1.863,0.312-2.301c0.612-0.438,0.909-0.91,0.988-1.112c0.079-0.204,0.032-0.377,0.032-0.377l-0.58-0.534c-2.005-1.33-9.883,0.063-9.883,0.063s0,0.002,0,0l-1.341,0.289l-0.673-0.435c0,0-2.291,0.604-4.876,0.589c-2.712-0.014-1.27-2.128-1.27-2.128s0.638-1.118,0.75-1.764c0,0,0.224-1.745-1.42-1.631c-1.645,0.112-1.968,1.546-1.968,1.546s-0.112,0.801-0.089,1.392c0.021,0.594-0.002,1.847-0.742,2.56c-0.737,0.713-1.529,0.495-1.529,0.495s-1.331-0.582-1.595-0.718c-0.274-0.142-0.517-0.151-0.751-0.066c-0.02,0.007-0.039,0.018-0.057,0.029l-0.175,0.75l0.025-0.623c-0.156,0.176-0.271,0.42-0.271,0.42l0.088,0.327l-0.248,0.565c-0.002,0.012-0.005,0.023-0.006,0.035l0.008,0.003c0,0,0.087-0.196,0.222-0.357l0.182-0.369L1.493,32.94c0.055-0.044,0.112-0.07,0.172-0.074c0.281-0.017,0.629,0.158,0.629,0.158s1.135,0.611,1.642,0.716s0.875-0.065,1.205-0.292c0.527-0.365,1.143-1.121,1.4-1.839c0.229-0.646,0.279-2.394,0.279-2.394l0.004,0.014c0,0,0-0.421-0.011-0.518c-0.012-0.098-0.075-0.553,0.204-0.783c0.278-0.234,0.459-0.347,1.144-0.364c0.68-0.017,0.886,0.38,0.886,0.38S9.28,28.269,9.28,28.48c0,0.21-0.068,0.34-0.068,0.34s-0.371,0.626-0.5,0.934c-0.13,0.307-0.636,1.323-0.489,2.177c0.148,0.852,1.479,1.251,1.479,1.251s1.062,0.25,2.575,0.027l3.12-0.503l0.543-0.624l0.218,0.474c0.805-0.147,2.14-0.369,3.583-0.511c2.326-0.228,4.787-0.262,5.821-0.132c0,0,0.484,0.061,0.405,0.234c-0.062,0.136-0.421,0.415-0.421,0.415s-0.135,0.081-0.654,0.667s-0.671,1.155-0.693,1.661c-0.024,0.505,0.516,1.995,2.415,2.394c1.901,0.397,4.077-0.341,4.077-0.341s1.427-0.314,2.786-1.674c1.41-1.411,0.012-3.108,0.012-3.108s-0.22-0.304-0.647-0.442c0,0-0.187-0.05-0.079-0.17c0.108-0.12,0.37-0.647,1.37-0.905c1-0.257,3.977-1.198,11.065-2.135l0.274-0.617l0.874,0.459c2.708-0.373,4.551-0.694,7.827-1.454c0,0,3.04-0.539,3.675-1.651c0.368-0.65,1.032-1.539-0.045-2.434c0,0-0.125-0.161-0.791-0.312c-0.666-0.151-1.179-0.252-1.738-0.653c-0.563-0.403-0.551-0.869-0.551-0.869s-0.047-0.445,0.862-0.958c0,0,0.851-0.623,2.54-1.158c1.691-0.533,3.648-0.296,3.648-0.296s0.82,0.089,0.685,0.643c-0.14,0.555-0.604,1.482-0.622,1.959c-0.021,0.474,0.012,1.027,0.938,1.414c0.931,0.386,2.267,0.266,2.267,0.266s1.386-0.069,3.647-0.801c2.265-0.731,4.594-1.573,4.594-1.573l-0.094-0.483l0.971,0.173c0.591-0.22,1.406-0.539,2.285-0.936c1.801-0.81,2.656-1.488,3.48-1.958c0,0,1.815-1.118,2.887-1.088c0,0,0.25-0.009,0.272,0.32c0.022,0.329,0.104,0.814,0.218,1.096c0.111,0.281,0.734,1.822,2.729,2.048c1.993,0.228,2.846-1.118,2.846-1.118s0.683-1.049-0.493-2.296c0,0-0.961-1.028-0.99-1.107c0,0-0.104-0.155,0.168-0.233c0.269-0.078,3.152-0.884,4.268-1.398c0,0,0.012-0.005,0.036-0.015l-0.271-0.485l0.535,0.365c0.202-0.101,0.449-0.246,0.544-0.395c0.171-0.271-0.054-0.797-0.054-0.797l0.006-0.007c-0.133-0.184-0.266-0.366-0.4-0.546l-0.606-0.256l-0.06,0.033L91.075,11.742"/><path style="opacity:.1;fill:#232323;" d="M8.12,16.324l-0.291,0.435c0.134-0.023,0.244-0.056,0.244-0.056s0.404-0.066,1.112,0.12c0.917,0.244,2.067-0.496,2.067-0.496s0.872-0.523,1.274-1.381l0.361-1.005c0,0,0.291-0.972,1.105-1.281c0,0,0.317-0.171,0.831-0.177c0.513-0.005,0.392,0.354,0.392,0.354s-0.056,0.233-0.586,0.912c-0.529,0.677-0.671,1.196-0.671,1.196s-0.318,0.722,0.193,0.957c0,0,0.24,0.141,0.939-0.091c0.7-0.233,3.02-0.843,4.438-1.06l0.993-0.506c-0.313-0.23-0.602-0.444-0.602-0.444c-2.388,0.442-4.168,0.995-4.775,1.226c-0.609,0.23-0.62,0.082-0.62,0.082c-0.211-0.248,0.435-1.022,0.435-1.022s0.655-0.894,0.913-1.715c0.259-0.82-0.892-0.707-0.892-0.707c-0.758,0.121-1.303,0.48-1.93,1.236c-0.486,0.586-0.782,1.389-0.893,1.814c-0.071,0.267-0.193,0.515-0.193,0.515s-0.091,0.165-0.45,0.322c-0.416,0.182-1.228,0.396-1.228,0.396s-0.54,0.045-0.931-0.15c-0.24-0.118-0.901,0.05-0.901,0.05l0.091-0.504l-0.082-0.032l-0.683,0.383c-0.115,0.189-0.228,0.379-0.341,0.569c-0.063,0.146-0.179,0.475,0.044,0.51c0.05,0.008,0.113,0.008,0.164,0.008L8.12,16.324L8.12,16.324z"/><path style="opacity:.1;fill:#232323;" d="M13.295,9.19c0,0,0.342-0.271,0.342-0.026c0,0.248-0.333,0.69-0.333,0.69s-0.107,0.134-0.172,0.134C13.068,9.987,13.15,9.516,13.295,9.19L13.295,9.19z"/><path style="fill:#232323;" d="M-16.122-14.641"/><path style="opacity:.1;fill:#232323;" d="M10.595,12.501c0,0-0.388,0.46,0,0.52l0.838-0.828c-0.037-0.037-0.054-0.055-0.157-0.112C11.277,12.081,10.752,12.343,10.595,12.501L10.595,12.501z"/><path style="opacity:.3;fill:#FFF;" d="M77.807,85.745c0,0-1.75,0.806-3.396,1.603c-1.647,0.803-2.25,1.14-2.25,1.14s-0.088,0.049-0.031,0.082c0.056,0.028-0.008,0.063-0.008,0.063c-0.847,0.409-2.703,1.07-2.703,1.07s-0.167,0.057-0.157,0.02c0.006-0.041,0.199-0.105,0.199-0.105s0.381-0.146,0.283-0.217c-0.098-0.072-1.21,0.305-1.21,0.305s-1.949,0.621-2.894,0.887c-0.941,0.269-2.75,0.735-2.75,0.735c-1.201,0.298-3.75,0.798-4.315,0.901c-0.562,0.104-0.417,0.064-0.417,0.064s0.492-0.189-0.411-0.226c-1.146-0.05-2.362,0.112-3.612,0.288c-1.25,0.18-1.178,0.324-1.178,0.324s-0.04,0.154,0.708,0.14c0.752-0.019,0.534,0.046,0.534,0.046c-1.396,0.202-4.2,0.238-4.2,0.238l0.005,0.01c0.456,0.014,0.916,0.018,1.376,0.018c0.608,0,1.218-0.01,1.822-0.031c0.241-0.021,1.483-0.15,1.925-0.244c0.486-0.105-0.093-0.105-0.093-0.105l-0.74-0.023c0,0-0.776-0.026-0.052-0.158c0.729-0.133,1.834-0.192,2.388-0.252c0.83-0.094,0.541,0.105,0.541,0.105l-0.04,0.023c0,0,0.014,0.094,0.528,0.066c0.515-0.024,4.721-0.804,7.069-1.487c2.347-0.688,4.102-1.255,4.102-1.255s0.157-0.055,0.066,0.025c-0.094,0.078-0.463,0.2-0.463,0.2s-0.595,0.3,0.844-0.108c0.066-0.02,0.134-0.039,0.197-0.06c1.234-0.469,2.446-0.983,3.635-1.543c0.029-0.028,0.131-0.146-0.021-0.101c-0.172,0.056,0-0.065,0.187-0.131c0.184-0.066,2.267-1.162,3.363-1.608l0.002,0.003c0.394-0.227,0.781-0.455,1.17-0.691L77.807,85.745L77.807,85.745z"/><linearGradient id="SVGID_26_" gradientUnits="userSpaceOnUse" x1="217.6563" y1="-436.751" x2="217.6563" y2="-436.751" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset=".078" stop-color="#F4F4F4"/><stop offset=".3807" stop-color="#CECECE"/><stop offset=".5396" stop-color="#BFBFBF"/><stop offset=".8357" stop-color="#7C7C7C"/><stop offset=".8996" stop-color="#A8A8A8"/><stop offset=".9093" stop-color="#9A9A9A"/><stop offset=".9327" stop-color="#7D7D7D"/><stop offset=".9558" stop-color="#686868"/><stop offset=".9785" stop-color="#5B5B5B"/><stop offset="1" stop-color="#575757"/></linearGradient><path style="fill:url(#SVGID_26_);" d="M3.893,50.249L3.893,50.249L3.893,50.249z"/><linearGradient id="SVGID_27_" gradientUnits="userSpaceOnUse" x1="214.3262" y1="-436.5107" x2="322.8717" y2="-424.4851" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset=".078" stop-color="#F4F4F4"/><stop offset=".3807" stop-color="#CECECE"/><stop offset=".5396" stop-color="#BFBFBF"/><stop offset=".8357" stop-color="#7C7C7C"/><stop offset=".8996" stop-color="#A8A8A8"/><stop offset=".9093" stop-color="#9A9A9A"/><stop offset=".9327" stop-color="#7D7D7D"/><stop offset=".9558" stop-color="#686868"/><stop offset=".9785" stop-color="#5B5B5B"/><stop offset="1" stop-color="#575757"/></linearGradient><path style="fill:url(#SVGID_27_);" d="M1.193,48.543l0.107,0.98c0.236,0.285,0.579,0.675,1.067,1.181c1.084,1.121,1.428,0.416,1.428,0.416s0.072-0.201,0.092-0.586c-0.042,0.216-0.209,0.403-0.788-0.056c-0.298-0.237-0.688-0.627-1.076-1.049c-0.326-0.326-0.723-0.742-1.021-1.117l0.048,0.065l-0.213,0.526c0,0,0.069,0.115,0.268,0.376L1.193,48.543L1.193,48.543z"/><linearGradient id="SVGID_28_" gradientUnits="userSpaceOnUse" x1="213.8887" y1="-436.4771" x2="336.8819" y2="-422.851" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset=".078" stop-color="#F4F4F4"/><stop offset=".3807" stop-color="#CECECE"/><stop offset=".5396" stop-color="#BFBFBF"/><stop offset=".8357" stop-color="#7C7C7C"/><stop offset=".8996" stop-color="#A8A8A8"/><stop offset=".9093" stop-color="#9A9A9A"/><stop offset=".9327" stop-color="#7D7D7D"/><stop offset=".9558" stop-color="#686868"/><stop offset=".9785" stop-color="#5B5B5B"/><stop offset="1" stop-color="#575757"/></linearGradient><path style="fill:url(#SVGID_28_);" d="M3.741,49.133c-0.006-0.027-0.013-0.054-0.02-0.078c0.012,0.088,0.028,0.179,0.043,0.272c0,0,0.094,0.394,0.12,0.753C3.87,49.813,3.83,49.498,3.741,49.133z"/><linearGradient id="SVGID_29_" gradientUnits="userSpaceOnUse" x1="411.2539" y1="557.002" x2="507.2363" y2="537.6277" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#EDEDEE"/><stop offset=".4176" stop-color="#FFF"/><stop offset=".6264" stop-color="#F8F9F9"/><stop offset="1" stop-color="#BFC0C2"/></linearGradient><path style="fill:url(#SVGID_29_);" d="M99.696,28.566l0.29,0.316c0.406-0.238,0.654,0.045,0.654,0.045l-0.386-0.494c-0.383,0.082-1.093,0.256-2.233,0.61c0,0-1.353,0.594-1.59,1.532c-0.016,0.332,0.049,0.641,0.116,0.876c0.753,1.429,0.913,1.666,0.913,1.666c0.499,1.091,0.422,1.993,0.25,2.824c-0.188,0.921-1.188,1.668-1.794,1.842c-0.608,0.171-0.953,0-1.14-0.483c-0.188-0.485-0.157-0.845-0.438-2.34c-0.28-1.499-0.653-2.2-1.216-2.372c-0.563-0.173-1.313,0.468-1.749,0.811c-0.438,0.344-2.417,2.152-2.417,2.152s-2.324,2.091-5.743,4.026c-3.417,1.935-7.69,3.418-7.69,3.418s-2.842,1.092-3.525,0.998c-0.688-0.093-0.516-0.718-0.297-1.076c0.219-0.36,0.516-0.937,0.766-1.545c0.313-0.756,0.201-1.654-0.359-1.967c-0.562-0.311-1.248-0.468-3.523,0.094s-3.197,1.076-3.838,1.451c-0.643,0.376-1.576,1.233-1.842,1.716c-0.266,0.484-0.563,0.983,0.126,1.576c0.688,0.594,0.763,0.485,1.56,1.046c0.797,0.562,0.922,0.64,0.969,1.466c0.045,0.827-0.766,1.341-0.766,1.341s-3.123,2.082-6.602,2.777c-2.34,0.469-6.833,0.639-6.833,0.639s-1.327-0.045-5.384,0.547c-4.056,0.594-6.787,1.514-7.738,1.856c-0.952,0.343-2.34,0.81-3.136,1.17c-0.795,0.358-0.375,0.89-0.203,1.015c0.172,0.123,1.185,1.074,1.498,1.354c0.312,0.282,1.466,1.279,0.108,2.108c-1.356,0.826-3.603,1.264-3.603,1.264s-3.121,0.654-4.119,0.234c-1.001-0.422-1.2-0.778-1.452-1.358c-0.313-0.718-0.016-1.263,0.794-1.78c0.77-0.486,0.469-1.199,0.469-1.199c-0.983-1.9-3.058-2.058-4.774-1.936c-2.72,0.198-5.358,0.471-7.425,0.734c-3.059,0.39-4.541-0.063-5.992-0.516c-1.452-0.453-2.997-1.529-3.154-2.498c-0.027-0.097-0.039-0.199-0.042-0.307c-0.078-0.758,0.074-1.146,0.184-1.784c0.108-0.625-0.043-1.532-0.084-1.758c-0.008-0.026-0.016-0.058-0.023-0.085c-0.507-1.304-1.725-1.903-2.668-2.058c-0.953-0.157-0.983,0.857-0.983,0.857s-0.002,0.012-0.006,0.04c0.078-0.208,0.222-0.315,0.444-0.31c0.577,0.02,2.259,0.361,2.781,1.754c0,0,0.218,0.648,0.019,1.479c-0.199,0.832-0.162,1.571-0.019,2.295c0.145,0.725,0.759,1.408,1.465,1.969c0.704,0.562,2.745,1.535,4.734,1.66c1.814,0.117,2.483,0.037,2.587,0.023l0.759-0.768l0.135,0.666c0.81-0.088,2.115-0.229,3.619-0.394c2.529-0.271,4.227-0.541,5.8-0.306c1.572,0.232,2.078,1.463,2.078,1.463s0.107,0.313-0.253,0.542c-0.349,0.226-0.75,0.548-0.947,0.891c-0.2,0.345-0.411,1.066,0.159,2.033c0.572,0.965,2.142,1.595,3.478,1.435c1.336-0.158,3.336-0.672,4.521-0.98c1.286-0.336,2.424-0.969,2.572-1.979c0.148-1.009-1.534-2.297-1.534-2.297s-0.81-0.611-0.909-0.75c-0.1-0.14,0.099-0.197,0.099-0.197s0.95-0.229,1.356-0.416c0.403-0.19,1.523-0.644,3.353-1.217c1.831-0.572,5.609-1.248,5.609-1.248s2.09-0.332,4.694-0.543l0.612-0.705l0.493,0.627c0.406-0.023,0.819-0.045,1.235-0.061c3.572-0.129,5.343-0.555,7.24-0.979c1.897-0.426,4.569-1.979,4.965-2.276c0.396-0.296,1.229-0.662,1.395-1.958c0.17-1.294-1.363-2.157-1.363-2.157s-1.218-0.643-1.476-0.929c-0.256-0.288-0.019-0.562-0.019-0.562s0.689-1.485,2.896-2.355c2.207-0.872,3.69-1.106,4.619-1.207c0.931-0.099,1.247,0.237,1.375,0.395c0.128,0.158,0.128,0.485,0.021,0.821c-0.101,0.308-0.443,1.039-0.644,1.396c-0.199,0.356-0.522,1.216-0.317,1.622c0.211,0.405,0.842,0.592,1.662,0.444c0.822-0.147,2.987-0.761,4.889-1.553c1.897-0.793,5.074-2.344,5.074-2.344s0.01-0.005,0.021-0.013l0.086-0.729l0.729,0.296c1.021-0.562,2.764-1.582,4.01-2.63c1.871-1.574,3.699-3.225,4.166-3.641c0.465-0.415,0.89-0.751,1.305-0.732c0.416,0.021,0.734,0.318,0.99,1.434c0.258,1.119,0.306,2.038,0.426,2.583c0.117,0.542,0.285,1.176,0.929,1.305c0.644,0.128,1.513-0.436,1.841-0.713c0.326-0.277,0.918-1.176,0.879-2.383c0,0,0.068-1.605-0.762-3.127c0,0-0.348-0.614-0.477-0.782c-0.088-0.119-0.155-0.238-0.008-0.523c0.146-0.288,0.465-0.821,1.059-1.157c0.449-0.256,0.881-0.316,1.128-0.396c0,0,0.28-0.069,0.636-0.266L99.696,28.566L99.696,28.566z"/><path style="fill:#FFF;" d="M1.547,32.696l-0.05,0.239c0.053-0.041,0.111-0.068,0.17-0.072c0.281-0.018,0.629,0.158,0.629,0.158s1.135,0.61,1.642,0.716c0.507,0.105,0.875-0.065,1.205-0.292c0.25-0.174,0.521-0.434,0.763-0.737c-0.29,0.29-0.725,0.548-1.365,0.595c0,0-0.571-0.049-1.419-0.587c-0.846-0.537-1.327-0.231-1.729,0.105l0,0l-0.249,0.564c-0.001,0.013-0.003,0.023-0.006,0.036l0.009,0.001c0,0,0.087-0.192,0.217-0.352L1.547,32.696L1.547,32.696z"/><path style="opacity:.73;fill:#FFF;" d="M6.387,31.961c0.059-0.12,0.112-0.238,0.155-0.354c0.05-0.14,0.09-0.334,0.125-0.55c-0.096,0.44-0.223,0.73-0.223,0.73S6.428,31.853,6.387,31.961L6.387,31.961z"/><path style="opacity:.73;fill:#FFF;" d="M6.807,28.654c-0.038,0.439-0.038,0.987-0.038,1.493l0,0c0.04-0.509,0.052-0.935,0.052-0.935l0.004,0.014c0,0,0-0.421-0.011-0.518C6.811,28.695,6.809,28.677,6.807,28.654z"/><linearGradient id="SVGID_30_" gradientUnits="userSpaceOnUse" x1="413.5137" y1="516.4121" x2="417.999" y2="516.4121" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#E2E3E4"/><stop offset=".5055" stop-color="#FFF"/></linearGradient><path style="fill:url(#SVGID_30_);" d="M8.12,16.324l-0.291,0.435c0.087-0.014,0.089-0.007,0.244-0.056c0,0,0.404-0.066,1.112,0.12c0.917,0.244,2.067-0.496,2.067-0.496s0.272-0.164,0.583-0.458c-0.4,0.24-1.385,0.762-2.132,0.585c-0.961-0.229-0.994-0.017-1.336-0.049c-0.292-0.028-0.292-0.11-0.275-0.314c0.002-0.032,0.023-0.054,0.03-0.092c0.05-0.261,0.339-0.689,0.339-0.689l-0.684,0.383c-0.115,0.189-0.227,0.378-0.34,0.569c-0.063,0.146-0.179,0.475,0.044,0.509c0.055,0.009,0.11,0.011,0.163,0.009L8.12,16.324L8.12,16.324z"/><path style="fill:#FFF;" d="M17.019,15.036c-1.027,0.278-1.972,0.734-2.494,0.604c-0.438-0.109-0.084-0.76,0.042-0.965c0.069-0.146,0.167-0.292,0.249-0.406c0.31-0.506,0.833-1.351,0.833-1.351s0,0,0-0.002c0.017-0.032,0.033-0.067,0.049-0.102c0.067-0.18,0.12-0.537-0.472-0.597c-0.799-0.082-1.613,0.619-1.613,0.619s-0.547,0.301-0.838,1.417l0.112-0.313c0,0,0.291-0.973,1.105-1.281c0,0,0.317-0.171,0.831-0.177c0.513-0.005,0.392,0.354,0.392,0.354s-0.056,0.233-0.586,0.912c-0.529,0.677-0.671,1.195-0.671,1.195s-0.319,0.723,0.193,0.957c0,0,0.238,0.141,0.939-0.091c0.7-0.233,3.02-0.843,4.438-1.06l0.993-0.506C19.849,14.299,18.012,14.769,17.019,15.036L17.019,15.036z"/><path style="fill:#FFF;" d="M-16.122-14.641"/><path style="fill:#FFF;" d="M-16.122-14.641"/><path style="opacity:.1;fill:#231F20;" d="M90.578,74.217c0.006-0.004,0.009-0.008,0.014-0.013C90.587,74.21,90.582,74.213,90.578,74.217z"/><path style="opacity:.1;fill:#231F20;" d="M90.821,73.951c0.001-0.002,0.002-0.004,0.003-0.004C90.823,73.947,90.822,73.949,90.821,73.951z"/><path style="opacity:.1;fill:#231F20;" d="M90.738,74.042c0.003-0.004,0.008-0.009,0.011-0.013C90.746,74.033,90.741,74.038,90.738,74.042z"/><path style="opacity:.25;fill:#231F20;" d="M87.9,76.68l-0.164,0.174c-0.646,0.716-0.969,1.007-0.969,1.007l-0.242,0.269l0,0c-0.002,0.006-0.006,0.012-0.012,0.014c0.008,0.002,0.018,0.004,0.041,0.004c0,0,0.229-0.002,0.588-0.219c-0.072,0.041-0.139,0.068-0.181,0.07c-0.177,0.012,0.431-0.538,0.431-0.538s0.588-0.626,0.967-1.125c0.382-0.497,0.138-0.468,0.138-0.468s-0.087-0.021-0.397,0.125C88.125,76.018,88.268,76.223,87.9,76.68L87.9,76.68z"/><path style="opacity:.1;fill:#231F20;" d="M90.657,74.133c0.003-0.006,0.007-0.013,0.013-0.017C90.664,74.121,90.662,74.128,90.657,74.133z"/><path style="opacity:.22;fill:#231F20;" d="M72.945,81.21c0,0,2.215-0.931,3.402-0.79c0,0,0.611,0.059-0.062,0.711c-0.672,0.652-0.892,1.168,0.396,0.752c0,0,0.094-0.033,0.244-0.086c-0.504,0.143-0.734,0.143-0.658,0.033c0.127-0.188,0.461-0.461,0.461-0.461s0.399-0.4,0.399-0.801c0,0,0.128-0.588-1.604-0.225c-1.01,0.209-1.969,0.59-2.588,0.867C72.941,81.211,72.943,81.211,72.945,81.21L72.945,81.21z"/><path style="opacity:.1;fill:#231F20;" d="M72.234,81.555l-0.004,0.002C72.232,81.557,72.234,81.555,72.234,81.555z"/><path style="opacity:.1;fill:#231F20;" d="M88.057,76.014c-0.014,0.008-0.026,0.015-0.043,0.021C88.028,76.027,88.043,76.021,88.057,76.014z"/><path style="opacity:.28;fill:#231F20;" d="M78.305,81.299c1.448-0.521,3.93-1.854,5.023-2.492C82.232,79.442,79.73,80.717,78.305,81.299z"/><path style="opacity:.1;fill:#231F20;" d="M87.512,76.325c0.026-0.017,0.055-0.032,0.08-0.049C87.566,76.293,87.538,76.309,87.512,76.325z"/><path style="opacity:.1;fill:#231F20;" d="M91.618,73.084c0.008-0.011,0.019-0.023,0.026-0.029C91.637,73.061,91.626,73.073,91.618,73.084z"/><path style="opacity:.1;fill:#231F20;" d="M91.434,73.281c0.01-0.012,0.019-0.02,0.023-0.027C91.451,73.264,91.441,73.27,91.434,73.281z"/><path style="opacity:.1;fill:#231F20;" d="M91.521,73.188c0.01-0.012,0.02-0.022,0.029-0.032C91.539,73.165,91.53,73.178,91.521,73.188z"/><path style="opacity:.1;fill:#231F20;" d="M90.9,73.863c0.003-0.006,0.007-0.01,0.012-0.016C90.907,73.854,90.903,73.857,90.9,73.863z"/><path style="opacity:.1;fill:#231F20;" d="M71.246,82.088c-0.014,0.008-0.023,0.018-0.036,0.022C71.221,82.105,71.232,82.096,71.246,82.088z"/><path style="opacity:.1;fill:#231F20;" d="M91.346,73.375c0.008-0.008,0.014-0.015,0.021-0.021C91.359,73.36,91.354,73.367,91.346,73.375z"/><path style="opacity:.1;fill:#231F20;" d="M91.077,73.669c0.006-0.006,0.01-0.011,0.013-0.015C91.087,73.659,91.083,73.663,91.077,73.669z"/><path style="opacity:.1;fill:#231F20;" d="M91.251,73.479c0.007-0.006,0.015-0.012,0.021-0.021C91.266,73.463,91.255,73.473,91.251,73.479z"/><path style="opacity:.1;fill:#231F20;" d="M90.987,73.768c0.004-0.006,0.01-0.012,0.016-0.021C90.997,73.756,90.991,73.762,90.987,73.768z"/><path style="opacity:.1;fill:#231F20;" d="M91.161,73.578c0.006-0.006,0.011-0.014,0.017-0.02C91.172,73.564,91.165,73.572,91.161,73.578z"/><path style="opacity:.1;fill:#231F20;" d="M71.816,81.764c-0.008,0.006-0.02,0.012-0.026,0.017C71.799,81.774,71.809,81.77,71.816,81.764z"/><path style="opacity:.1;fill:#231F20;" d="M72.044,81.646c-0.006,0.004-0.012,0.006-0.019,0.009C72.032,81.652,72.038,81.649,72.044,81.646z"/><path style="opacity:.1;fill:#231F20;" d="M71.305,82.055c-0.011,0.008-0.021,0.014-0.031,0.021C71.283,82.067,71.294,82.063,71.305,82.055z"/><path style="opacity:.1;fill:#231F20;" d="M71.969,81.684c-0.008,0.004-0.015,0.009-0.021,0.014C71.953,81.692,71.961,81.688,71.969,81.684z"/><path style="opacity:.1;fill:#231F20;" d="M72.109,81.613c-0.004,0.005-0.01,0.006-0.016,0.01C72.102,81.619,72.105,81.617,72.109,81.613z"/><path style="opacity:.1;fill:#231F20;" d="M72.008,81.665c-0.007,0.004-0.013,0.007-0.021,0.011C71.994,81.672,72.001,81.669,72.008,81.665z"/><path style="opacity:.1;fill:#231F20;" d="M72.206,81.566c-0.003,0.002-0.005,0.003-0.007,0.004C72.201,81.569,72.203,81.568,72.206,81.566z"/><path style="opacity:.1;fill:#231F20;" d="M72.148,81.594c-0.008,0.004-0.016,0.01-0.024,0.015C72.135,81.604,72.141,81.598,72.148,81.594z"/><path style="opacity:.1;fill:#231F20;" d="M71.928,81.707c-0.01,0.003-0.02,0.01-0.027,0.016C71.908,81.715,71.918,81.711,71.928,81.707z"/><path style="opacity:.1;fill:#231F20;" d="M72.193,81.575c-0.006,0.001-0.01,0.003-0.014,0.004C72.184,81.578,72.189,81.575,72.193,81.575z"/><path style="opacity:.1;fill:#231F20;" d="M72.172,81.585c-0.004,0.003-0.008,0.005-0.015,0.007C72.164,81.59,72.168,81.585,72.172,81.585z"/><path style="opacity:.1;fill:#231F20;" d="M72.079,81.631c-0.008,0.002-0.013,0.004-0.019,0.006C72.066,81.635,72.071,81.633,72.079,81.631z"/><path style="opacity:.1;fill:#231F20;" d="M71.866,81.739c-0.011,0.002-0.021,0.008-0.027,0.013C71.848,81.747,71.857,81.741,71.866,81.739z"/><path style="opacity:.1;fill:#231F20;" d="M71.555,81.906c-0.018,0.012-0.033,0.02-0.052,0.029C71.521,81.924,71.539,81.918,71.555,81.906z"/><path style="opacity:.1;fill:#231F20;" d="M72.219,81.561c0,0.002-0.002,0.002-0.002,0.004C72.217,81.563,72.219,81.563,72.219,81.561z"/><path style="opacity:.1;fill:#231F20;" d="M71.421,81.986c-0.011,0.006-0.022,0.01-0.03,0.02C71.398,81.996,71.41,81.992,71.421,81.986z"/><path style="opacity:.1;fill:#231F20;" d="M71.363,82.02c-0.012,0.005-0.021,0.013-0.032,0.021C71.342,82.032,71.354,82.024,71.363,82.02z"/><path style="opacity:.1;fill:#231F20;" d="M71.482,81.948c-0.014,0.006-0.023,0.015-0.036,0.021C71.458,81.963,71.471,81.956,71.482,81.948z"/><path style="opacity:.1;fill:#231F20;" d="M71.768,81.79c-0.01,0.004-0.018,0.009-0.024,0.017C71.751,81.799,71.758,81.794,71.768,81.79z"/><path style="opacity:.1;fill:#231F20;" d="M91.708,72.984c0.013-0.014,0.024-0.028,0.04-0.042C91.734,72.956,91.723,72.971,91.708,72.984z"/><path style="opacity:.1;fill:#231F20;" d="M71.717,81.818c-0.01,0.004-0.019,0.009-0.027,0.015C71.698,81.827,71.707,81.822,71.717,81.818z"/><path style="opacity:.1;fill:#231F20;" d="M71.665,81.846c-0.011,0.006-0.021,0.014-0.028,0.018C71.645,81.858,71.654,81.852,71.665,81.846z"/><path style="opacity:.1;fill:#231F20;" d="M71.609,81.875c-0.01,0.008-0.021,0.014-0.03,0.02C71.589,81.889,71.602,81.881,71.609,81.875z"/><path style="opacity:.1;fill:#231F20;" d="M92.443,72.197c-0.021,0.021-0.037,0.039-0.055,0.061C92.406,72.238,92.423,72.217,92.443,72.197z"/><path style="opacity:.1;fill:#231F20;" d="M92.359,72.287c-0.021,0.021-0.041,0.044-0.061,0.066C92.318,72.331,92.339,72.309,92.359,72.287z"/><path style="opacity:.1;fill:#231F20;" d="M92.501,72.135c-0.011,0.015-0.021,0.023-0.028,0.033C92.48,72.157,92.49,72.148,92.501,72.135z"/><path style="opacity:.1;fill:#231F20;" d="M91.786,72.899c0.022-0.021,0.042-0.042,0.062-0.063C91.828,72.857,91.807,72.878,91.786,72.899z"/><path style="opacity:.1;fill:#231F20;" d="M92.273,72.379c-0.014,0.016-0.025,0.029-0.041,0.045C92.245,72.409,92.26,72.395,92.273,72.379z"/><path style="opacity:.1;fill:#231F20;" d="M92.579,72.053c-0.013,0.012-0.021,0.021-0.03,0.032C92.559,72.074,92.569,72.063,92.579,72.053z"/><path style="opacity:.1;fill:#231F20;" d="M92.762,71.858c-0.002,0-0.002,0-0.002,0.001C92.76,71.858,92.76,71.858,92.762,71.858z"/><path style="opacity:.1;fill:#231F20;" d="M92.703,71.919c-0.004,0.005-0.01,0.013-0.014,0.017C92.693,71.928,92.699,71.924,92.703,71.919z"/><path style="opacity:.1;fill:#231F20;" d="M87.938,76.074c-0.017,0.008-0.027,0.016-0.043,0.023C87.907,76.09,87.922,76.082,87.938,76.074z"/><path style="opacity:.1;fill:#231F20;" d="M92.648,71.98c-0.012,0.011-0.021,0.021-0.029,0.029C92.629,72,92.637,71.991,92.648,71.98z"/><path style="opacity:.1;fill:#231F20;" d="M87.666,76.229c-0.018,0.013-0.031,0.021-0.051,0.031C87.633,76.25,87.648,76.241,87.666,76.229z"/><path style="opacity:.1;fill:#231F20;" d="M48.204,91.026c0,0-0.001,0-0.003,0.002C48.203,91.026,48.203,91.026,48.204,91.026z"/><path style="opacity:.1;fill:#231F20;" d="M48.073,91.03c-0.007,0-0.013,0-0.021,0C48.06,91.03,48.066,91.03,48.073,91.03z"/><path style="opacity:.1;fill:#231F20;" d="M48.136,91.028c-0.007,0.002-0.013,0.002-0.02,0.002C48.123,91.03,48.129,91.03,48.136,91.028z"/><path style="opacity:.1;fill:#231F20;" d="M48.005,91.032c-0.003,0-0.007,0-0.012,0C47.998,91.032,48.002,91.032,48.005,91.032z"/><path style="opacity:.1;fill:#231F20;" d="M47.94,91.035c-0.004,0-0.009,0-0.015,0C47.93,91.035,47.935,91.035,47.94,91.035z"/><path style="opacity:.1;fill:#231F20;" d="M87.869,76.111c-0.014,0.006-0.021,0.015-0.039,0.021C87.848,76.126,87.857,76.117,87.869,76.111z"/><path style="opacity:.1;fill:#231F20;" d="M87.807,76.146c-0.014,0.009-0.025,0.018-0.041,0.021C87.779,76.164,87.793,76.155,87.807,76.146z"/><path style="opacity:.1;fill:#231F20;" d="M87.738,76.186c-0.016,0.011-0.028,0.018-0.044,0.024C87.71,76.203,87.723,76.196,87.738,76.186z"/><path style="opacity:.1;fill:#231F20;" d="M87.951,76.067c0.02-0.011,0.035-0.021,0.054-0.027C87.986,76.047,87.971,76.057,87.951,76.067z"/><path style="opacity:.1;fill:#231F20;" d="M87.719,77.52c0,0-0.082,0.064-0.193,0.147C87.592,77.621,87.664,77.566,87.719,77.52z"/><path style="opacity:.1;fill:#231F20;" d="M92.205,72.452c-0.021,0.022-0.042,0.046-0.064,0.067C92.163,72.498,92.186,72.475,92.205,72.452z"/><path style="opacity:.1;fill:#231F20;" d="M28.05,87.006c-0.019-0.007-0.037-0.016-0.056-0.021C28.013,86.991,28.031,86.999,28.05,87.006z"/><path style="opacity:.1;fill:#231F20;" d="M71.051,82.217c-0.013,0.008-0.021,0.017-0.037,0.021C71.027,82.23,71.038,82.223,71.051,82.217z"/><path style="opacity:.1;fill:#231F20;" d="M45.854,89.871c-0.024,0-0.049-0.004-0.074-0.004C45.806,89.867,45.831,89.871,45.854,89.871z"/><path style="opacity:.1;fill:#231F20;" d="M27.678,86.883c0.02,0.004,0.039,0.01,0.058,0.019C27.717,86.893,27.696,86.887,27.678,86.883z"/><path style="opacity:.1;fill:#231F20;" d="M27.555,86.844c0.038,0.012,0.078,0.022,0.119,0.037C27.633,86.869,27.593,86.854,27.555,86.844z"/><path style="opacity:.1;fill:#231F20;" d="M27.862,86.941c-0.041-0.014-0.082-0.026-0.123-0.04C27.78,86.913,27.82,86.928,27.862,86.941z"/><path style="opacity:.1;fill:#231F20;" d="M91.88,72.799c0.015-0.016,0.026-0.027,0.04-0.043C91.907,72.771,91.895,72.784,91.88,72.799z"/><path style="opacity:.1;fill:#231F20;" d="M28.058,87.006c0.04,0.016,0.079,0.026,0.116,0.041C28.137,87.033,28.098,87.021,28.058,87.006z"/><path style="opacity:.1;fill:#231F20;" d="M91.977,72.695c0.014-0.016,0.026-0.027,0.041-0.044C92.002,72.668,91.989,72.68,91.977,72.695z"/><path style="opacity:.1;fill:#231F20;" d="M92.057,72.612c0.021-0.022,0.039-0.041,0.061-0.062C92.096,72.571,92.076,72.59,92.057,72.612z"/><path style="opacity:.1;fill:#231F20;" d="M27.991,86.985c-0.021-0.009-0.041-0.017-0.062-0.022C27.95,86.969,27.97,86.977,27.991,86.985z"/><path style="opacity:.1;fill:#231F20;" d="M71.133,82.162c0.021-0.013,0.037-0.021,0.055-0.036C71.17,82.139,71.152,82.149,71.133,82.162z"/><path style="opacity:.1;fill:#231F20;" d="M46.361,89.926c-0.016-0.002-0.035-0.004-0.053-0.008C46.325,89.922,46.345,89.924,46.361,89.926z"/><path style="opacity:.1;fill:#231F20;" d="M71.122,82.17c-0.019,0.012-0.034,0.021-0.049,0.032C71.088,82.191,71.105,82.18,71.122,82.17z"/><path style="opacity:.1;fill:#231F20;" d="M46.439,89.939c-0.017-0.002-0.032-0.006-0.049-0.008C46.407,89.934,46.422,89.938,46.439,89.939z"/><path style="opacity:.1;fill:#231F20;" d="M46.513,89.953c-0.016-0.005-0.031-0.007-0.047-0.011C46.481,89.946,46.497,89.948,46.513,89.953z"/><path style="opacity:.1;fill:#231F20;" d="M46.096,89.891c-0.031-0.002-0.065-0.006-0.1-0.01C46.031,89.885,46.065,89.889,46.096,89.891z"/><path style="opacity:.1;fill:#231F20;" d="M46.278,89.913c-0.02-0.002-0.041-0.004-0.061-0.006C46.237,89.909,46.259,89.911,46.278,89.913z"/><path style="opacity:.1;fill:#231F20;" d="M46.19,89.904c-0.028-0.005-0.054-0.008-0.084-0.012C46.136,89.896,46.163,89.899,46.19,89.904z"/><path style="opacity:.1;fill:#231F20;" d="M45.971,89.881c-0.025-0.005-0.051-0.006-0.079-0.009C45.92,89.875,45.945,89.877,45.971,89.881z"/><path style="opacity:.1;fill:#231F20;" d="M27.926,86.961c-0.02-0.004-0.039-0.011-0.058-0.019C27.888,86.953,27.908,86.957,27.926,86.961z"/><path style="opacity:.1;fill:#231F20;" d="M47.395,90.975c0.001,0.004,0.003,0.004,0.004,0.004C47.398,90.979,47.396,90.979,47.395,90.975z"/><path style="opacity:.1;fill:#231F20;" d="M47.375,90.969c0.001,0,0.002,0,0.003,0C47.378,90.969,47.376,90.969,47.375,90.969z"/><path style="opacity:.1;fill:#231F20;" d="M47.418,90.982L47.418,90.982L47.418,90.982z"/><path style="opacity:.1;fill:#231F20;" d="M47.465,90.996c0.003,0,0.004,0.001,0.006,0.001C47.47,90.997,47.468,90.996,47.465,90.996z"/><path style="opacity:.1;fill:#231F20;" d="M47.442,90.988c0.001,0,0.002,0.002,0.002,0.002L47.442,90.988z"/><path style="opacity:.1;fill:#231F20;" d="M47.342,90.955L47.342,90.955L47.342,90.955z"/><path style="opacity:.1;fill:#231F20;" d="M46.589,89.967c-0.02-0.002-0.036-0.009-0.054-0.013C46.553,89.959,46.57,89.965,46.589,89.967z"/><path style="opacity:.1;fill:#231F20;" d="M46.764,90.012c-0.011-0.004-0.021-0.008-0.033-0.012C46.742,90.006,46.753,90.008,46.764,90.012z"/><path style="opacity:.1;fill:#231F20;" d="M49.049,90.953c-0.01,0.001-0.021,0.002-0.032,0.004C49.028,90.955,49.038,90.954,49.049,90.953z"/><path style="opacity:.1;fill:#231F20;" d="M46.659,89.984c-0.021-0.006-0.039-0.01-0.061-0.014C46.619,89.975,46.639,89.979,46.659,89.984z"/><path style="opacity:.1;fill:#231F20;" d="M47.767,91.028c0.003,0,0.003,0,0.006,0C47.773,91.028,47.77,91.028,47.767,91.028z"/><path style="opacity:.1;fill:#231F20;" d="M47.821,91.03c0.003,0,0.007,0,0.013,0C47.828,91.03,47.824,91.03,47.821,91.03z"/><path style="opacity:.1;fill:#231F20;" d="M45.214,89.855c0.047,0,0.092,0,0.139,0C45.308,89.855,45.261,89.855,45.214,89.855z"/><path style="opacity:.1;fill:#231F20;" d="M47.716,91.026c0.005,0,0.009,0,0.013,0.002C47.727,91.026,47.722,91.026,47.716,91.026z"/><path style="opacity:.36;fill:#231F20;" d="M46.772,90.014c0,0,0.158,0.021,0.059,0.338c-0.1,0.313,0.06,0.451,0.475,0.594l0.023,0.006c0,0,0.001,0,0.002,0c-0.079-0.04-0.074-0.08-0.074-0.08s-0.01-0.078,0.078-0.216c0.087-0.136,0.009-0.369-0.293-0.536C47.044,90.118,46.967,90.07,46.772,90.014L46.772,90.014L46.772,90.014z"/><path style="opacity:.1;fill:#231F20;" d="M47.869,91.032c0.006,0,0.012,0,0.018,0C47.881,91.032,47.875,91.032,47.869,91.032z"/><path style="opacity:.1;fill:#231F20;" d="M47.495,91.002c0.001,0,0.004,0,0.004,0C47.497,91.002,47.496,91.002,47.495,91.002z"/><path style="opacity:.1;fill:#231F20;" d="M47.677,91.024c0.004,0,0.007,0,0.01,0C47.684,91.024,47.681,91.024,47.677,91.024z"/><path style="opacity:.1;fill:#231F20;" d="M47.529,91.006c0.001,0,0.002,0,0.002,0S47.53,91.006,47.529,91.006z"/><path style="opacity:.1;fill:#231F20;" d="M47.559,91.01c0.002,0.002,0.005,0.002,0.008,0.002C47.566,91.012,47.561,91.01,47.559,91.01z"/><path style="opacity:.1;fill:#231F20;" d="M47.594,91.016c0.002,0,0.004,0,0.008,0C47.599,91.016,47.596,91.016,47.594,91.016z"/><path style="opacity:.1;fill:#231F20;" d="M46.711,89.997c-0.011-0.002-0.026-0.007-0.043-0.011C46.685,89.99,46.701,89.995,46.711,89.997z"/><path style="opacity:.1;fill:#231F20;" d="M28.748,87.256c-0.008-0.003-0.018-0.007-0.025-0.01C28.731,87.25,28.739,87.254,28.748,87.256z"/><path style="opacity:.1;fill:#231F20;" d="M28.776,87.27c-0.007-0.002-0.016-0.008-0.024-0.012C28.761,87.262,28.769,87.268,28.776,87.27z"/><path style="opacity:.1;fill:#231F20;" d="M28.681,87.23c-0.008-0.004-0.021-0.006-0.03-0.01C28.66,87.225,28.672,87.227,28.681,87.23z"/><path style="opacity:.1;fill:#231F20;" d="M45.66,89.862c0.026,0,0.052,0.005,0.074,0.005C45.711,89.865,45.686,89.865,45.66,89.862z"/><path style="opacity:.1;fill:#231F20;" d="M28.797,87.275c-0.005-0.002-0.013-0.006-0.021-0.008C28.784,87.271,28.792,87.273,28.797,87.275z"/><path style="opacity:.1;fill:#231F20;" d="M27.38,86.794c0.038,0.011,0.074,0.022,0.112,0.031C27.453,86.816,27.417,86.803,27.38,86.794z"/><path style="opacity:.1;fill:#231F20;" d="M27.492,86.825c0.021,0.004,0.039,0.011,0.058,0.019C27.53,86.836,27.512,86.829,27.492,86.825z"/><path style="opacity:.1;fill:#231F20;" d="M28.814,87.284c-0.003-0.002-0.006-0.005-0.012-0.007C28.808,87.279,28.811,87.282,28.814,87.284z"/><path style="opacity:.1;fill:#231F20;" d="M28.64,87.219c-0.011-0.006-0.021-0.01-0.03-0.014C28.621,87.21,28.629,87.213,28.64,87.219z"/><path style="opacity:.38;fill:#231F20;" d="M27.687,87.239c-0.014-0.013-0.023-0.022-0.03-0.032c-0.263-0.197-0.343-0.418-0.343-0.418l0.009-0.011c0.017,0.007,0.034,0.011,0.052,0.014c-0.291-0.075-0.5-0.104-0.479-0.018c0.015,0.061,0.131,0.153,0.269,0.245c0.174,0.094,0.346,0.187,0.522,0.279V87.239L27.687,87.239z"/><path style="opacity:.1;fill:#231F20;" d="M28.716,87.245c-0.009-0.003-0.018-0.006-0.027-0.01C28.699,87.239,28.708,87.242,28.716,87.245z"/><path style="opacity:.1;fill:#231F20;" d="M28.602,87.202c-0.013-0.004-0.027-0.01-0.042-0.015C28.574,87.192,28.59,87.198,28.602,87.202z"/><path style="opacity:.1;fill:#231F20;" d="M28.841,87.293c0,0-0.006-0.004-0.022-0.009C28.835,87.29,28.841,87.293,28.841,87.293z"/><path style="opacity:.1;fill:#231F20;" d="M28.232,87.068c-0.018-0.006-0.031-0.014-0.047-0.018C28.201,87.055,28.215,87.063,28.232,87.068z"/><path style="opacity:.1;fill:#231F20;" d="M45.534,89.858c0.028,0,0.054,0.002,0.081,0.002C45.587,89.858,45.562,89.858,45.534,89.858z"/><path style="opacity:.1;fill:#231F20;" d="M45.397,89.855c0.029,0,0.06,0,0.089,0C45.457,89.855,45.427,89.855,45.397,89.855z"/><path style="opacity:.1;fill:#231F20;" d="M28.348,87.11c-0.034-0.013-0.07-0.025-0.106-0.039C28.278,87.085,28.314,87.098,28.348,87.11z"/><path style="opacity:.1;fill:#231F20;" d="M28.506,87.168c-0.013-0.005-0.025-0.01-0.037-0.015C28.481,87.158,28.494,87.162,28.506,87.168z"/><path style="opacity:.1;fill:#231F20;" d="M28.401,87.129c-0.013-0.006-0.028-0.011-0.043-0.015C28.373,87.118,28.388,87.123,28.401,87.129z"/><path style="opacity:.1;fill:#231F20;" d="M28.557,87.186c-0.013-0.004-0.025-0.012-0.04-0.017C28.531,87.176,28.544,87.182,28.557,87.186z"/><path style="opacity:.1;fill:#231F20;" d="M28.458,87.15c-0.016-0.008-0.031-0.014-0.047-0.018C28.427,87.137,28.442,87.143,28.458,87.15z"/><path style="opacity:.1;fill:#231F20;" d="M70.02,84.389c0.004,0,0.006,0,0.006,0C70.023,84.389,70.023,84.389,70.02,84.389z"/><path style="opacity:.1;fill:#231F20;" d="M70.789,84.087c-0.001,0.003-0.003,0.005-0.004,0.005C70.786,84.09,70.788,84.088,70.789,84.087z"/><path style="opacity:.1;fill:#231F20;" d="M70.762,84.102c-0.002,0.002-0.004,0.002-0.006,0.004C70.758,84.104,70.76,84.104,70.762,84.102z"/><path style="opacity:.1;fill:#231F20;" d="M70.732,84.116c-0.002,0.002-0.004,0.003-0.006,0.004C70.729,84.119,70.73,84.118,70.732,84.116z"/><path style="opacity:.1;fill:#231F20;" d="M70.697,84.133c-0.001,0-0.002,0-0.002,0.002C70.695,84.133,70.696,84.133,70.697,84.133z"/><path style="opacity:.1;fill:#231F20;" d="M70.417,84.249c0.006-0.001,0.009-0.002,0.011-0.002C70.426,84.247,70.423,84.248,70.417,84.249z"/><path style="opacity:.1;fill:#231F20;" d="M70.389,84.262h0.002H70.389z"/><path style="opacity:.1;fill:#231F20;" d="M70.662,84.146L70.662,84.146L70.662,84.146z"/><path style="opacity:.1;fill:#231F20;" d="M70.316,84.289c0.002-0.002,0.007-0.003,0.009-0.003C70.321,84.286,70.318,84.287,70.316,84.289z"/><path style="opacity:.1;fill:#231F20;" d="M70.285,84.299c0.003,0,0.005-0.002,0.009-0.004C70.29,84.297,70.288,84.299,70.285,84.299z"/><path style="opacity:.1;fill:#231F20;" d="M70.354,84.275c0.002-0.002,0.002-0.002,0.002-0.002S70.354,84.273,70.354,84.275z"/><path style="opacity:.1;fill:#231F20;" d="M48.946,90.965c-0.011,0-0.022,0.004-0.033,0.004C48.924,90.969,48.935,90.965,48.946,90.965z"/><path style="opacity:.1;fill:#231F20;" d="M70.256,84.311c0.002,0,0.004,0,0.006-0.002C70.26,84.311,70.258,84.311,70.256,84.311z"/><path style="opacity:.1;fill:#231F20;" d="M70.78,82.41c0.013-0.009,0.026-0.021,0.042-0.032C70.809,82.389,70.793,82.401,70.78,82.41z"/><path style="opacity:.1;fill:#231F20;" d="M70.956,82.279c0.013-0.008,0.022-0.016,0.033-0.023C70.98,82.264,70.969,82.271,70.956,82.279z"/><path style="opacity:.1;fill:#231F20;" d="M70.898,82.321c0.012-0.009,0.022-0.017,0.033-0.022C70.923,82.305,70.91,82.313,70.898,82.321z"/><path style="opacity:.19;fill:#231F20;" d="M70.903,83.794c0.2,0.064,0.106,0.171-0.087,0.278l0.089-0.033c0,0,0.793-0.436,0.458-0.633c-0.338-0.198-1.129-0.275-0.613-0.969l0.02-0.02c-0.442,0.344-0.756,0.727-0.498,1.021C70.27,83.443,70.387,83.629,70.903,83.794z"/><path style="opacity:.1;fill:#231F20;" d="M70.566,84.191c-0.002,0-0.006,0.002-0.008,0.003C70.561,84.193,70.564,84.191,70.566,84.191z"/><path style="opacity:.1;fill:#231F20;" d="M70.631,84.163c-0.002,0.001-0.004,0.002-0.006,0.003C70.627,84.165,70.629,84.164,70.631,84.163z"/><path style="opacity:.1;fill:#231F20;" d="M70.598,84.176c0,0.002-0.004,0.004-0.006,0.004C70.594,84.18,70.598,84.178,70.598,84.176z"/><path style="opacity:.1;fill:#231F20;" d="M70.493,84.223c-0.003,0-0.003,0-0.007,0.002C70.49,84.223,70.49,84.223,70.493,84.223z"/><path style="opacity:.1;fill:#231F20;" d="M70.459,84.233c-0.002,0-0.004,0.002-0.008,0.004C70.455,84.235,70.457,84.233,70.459,84.233z"/><path style="opacity:.1;fill:#231F20;" d="M70.842,82.363c0.012-0.01,0.024-0.018,0.034-0.025C70.866,82.346,70.854,82.354,70.842,82.363z"/><path style="opacity:.1;fill:#231F20;" d="M48.293,91.024c-0.007,0-0.016,0-0.023,0C48.277,91.024,48.286,91.024,48.293,91.024z"/><path style="opacity:.1;fill:#231F20;" d="M48.444,91.014c-0.004,0-0.011,0-0.017,0C48.434,91.014,48.44,91.014,48.444,91.014z"/><path style="opacity:.1;fill:#231F20;" d="M48.369,91.02c-0.009,0-0.017,0-0.027,0C48.352,91.02,48.359,91.02,48.369,91.02z"/><path style="opacity:.25;fill:#231F20;" d="M50.023,89.904c0,0,0.362,0.225,1.673,0.285c0,0,0.45,0,0.468,0.035c0.016,0.028,0.036,0.056-0.068,0.102l0,0c0.06-0.021,0.793-0.254,0.476-0.391c-0.04-0.019-0.063-0.024-0.074-0.028c-0.006,0-0.013,0-0.019-0.003l0,0c-0.008-0.002-0.016-0.002-0.021-0.004c-0.007,0-0.009-0.001-0.013-0.001c-0.006-0.003-0.014-0.003-0.021-0.005c-0.004,0-0.009,0-0.015-0.002c-0.005,0-0.011-0.002-0.017-0.002c-0.004,0-0.011-0.002-0.017-0.004c-0.005,0-0.012,0-0.015,0c-0.008-0.002-0.014-0.002-0.018-0.004c-0.004,0-0.012,0-0.016-0.002c-0.005,0-0.012,0-0.018,0c-0.002-0.004-0.008-0.004-0.01-0.004c-0.011-0.002-0.015-0.003-0.021-0.003c-0.004,0-0.006-0.001-0.008-0.001c-0.01-0.001-0.021-0.001-0.028-0.002c0,0-0.002,0-0.004-0.002c-0.007,0-0.015,0-0.021,0c-0.005-0.002-0.007-0.002-0.012-0.002s-0.011,0-0.02,0c-0.004,0-0.006,0-0.008,0c-0.008-0.002-0.013-0.002-0.019-0.002c-0.003,0-0.007,0-0.009,0c-0.008,0-0.014-0.002-0.018-0.002c-0.005,0-0.009-0.003-0.012-0.003c-0.006,0-0.014,0-0.021,0c-0.004,0-0.004,0-0.006,0c-0.039-0.004-0.08-0.004-0.128-0.009c-0.002,0-0.004,0-0.004,0c-0.009,0-0.015-0.002-0.022-0.002c-0.002,0-0.007,0-0.011,0c-0.007,0-0.013,0-0.021,0c-0.004-0.002-0.01-0.002-0.014-0.002c-0.006,0-0.013-0.002-0.02-0.002c-0.005,0-0.011,0-0.016-0.002c-0.005,0-0.011,0-0.019,0c-0.01,0-0.02-0.002-0.028-0.004c-0.006,0-0.012,0-0.019,0c-0.008,0-0.018-0.002-0.028-0.002c-0.005,0-0.011-0.002-0.016-0.002c-0.008,0-0.019,0-0.024-0.001c-0.006-0.001-0.013-0.001-0.021-0.001c-0.007-0.002-0.018-0.002-0.026-0.004c-0.005,0-0.013-0.001-0.02-0.001c-0.008-0.001-0.018-0.003-0.026-0.003c-0.007-0.001-0.016-0.001-0.023-0.003c-0.01,0-0.019-0.002-0.027-0.002c-0.007-0.002-0.014-0.002-0.021-0.002c-0.012,0-0.024-0.003-0.035-0.005c-0.007,0-0.014,0-0.02,0c-0.02-0.004-0.037-0.006-0.057-0.006c-0.142-0.019-0.271-0.033-0.378-0.055l-0.187-0.025c0,0-0.47-0.014-0.653-0.316c-0.118-0.197,0.457-0.318,0.457-0.318s0.956-0.193,1.917-0.321c0,0-2.542,0.294-2.777,0.626C49.613,89.737,50.023,89.904,50.023,89.904L50.023,89.904z"/><path style="opacity:.1;fill:#231F20;" d="M69.986,84.401L69.986,84.401L69.986,84.401z"/><path style="opacity:.1;fill:#231F20;" d="M69.989,84.399c0.001,0,0.001,0,0.004,0C69.991,84.399,69.99,84.399,69.989,84.399z"/><path style="opacity:.1;fill:#231F20;" d="M48.839,90.979c-0.007,0-0.015,0.002-0.021,0.002C48.824,90.98,48.831,90.979,48.839,90.979z"/><path style="opacity:.1;fill:#231F20;" d="M48.727,90.988c-0.009,0-0.017,0.002-0.026,0.002C48.71,90.99,48.718,90.988,48.727,90.988z"/><path style="opacity:.1;fill:#231F20;" d="M48.637,90.998c-0.009,0-0.019,0.001-0.029,0.003C48.619,90.999,48.628,90.998,48.637,90.998z"/><path style="opacity:.1;fill:#231F20;" d="M48.55,91.004c-0.009,0-0.018,0.002-0.025,0.004C48.532,91.006,48.54,91.004,48.55,91.004z"/><path style="opacity:.1;fill:#231F20;" d="M70.139,84.35c0.004,0,0.006-0.002,0.01-0.004C70.145,84.348,70.143,84.35,70.139,84.35z"/><path style="opacity:.1;fill:#231F20;" d="M70.116,84.359c0.002-0.002,0.004-0.002,0.007-0.002C70.12,84.357,70.118,84.357,70.116,84.359z"/><path style="opacity:.1;fill:#231F20;" d="M70.193,84.332c0.002,0,0.002-0.002,0.004-0.002C70.195,84.33,70.195,84.332,70.193,84.332z"/><path style="opacity:.1;fill:#231F20;" d="M70.068,84.374c0.003,0,0.004,0,0.007-0.002C70.072,84.374,70.07,84.374,70.068,84.374z"/><path style="opacity:.1;fill:#231F20;" d="M70.163,84.342c0.005,0,0.007-0.002,0.011-0.005C70.17,84.34,70.167,84.342,70.163,84.342z"/><path style="opacity:.1;fill:#231F20;" d="M69.996,84.395c0.002,0,0.002,0,0.004,0C69.998,84.395,69.998,84.395,69.996,84.395z"/><path style="opacity:.1;fill:#231F20;" d="M70.004,84.395c0.002,0,0.006-0.002,0.008-0.002C70.006,84.395,70.006,84.395,70.004,84.395z"/><path style="opacity:.1;fill:#231F20;" d="M72.23,81.559c-0.002,0-0.004,0-0.004,0S72.229,81.559,72.23,81.559z"/><path style="opacity:.1;fill:#231F20;" d="M70.053,84.379c0.002,0,0.002,0,0.004,0C70.053,84.379,70.053,84.379,70.053,84.379z"/><path style="opacity:.1;fill:#231F20;" d="M70.036,84.385c0.001,0,0.003,0,0.004-0.002C70.039,84.385,70.037,84.385,70.036,84.385z"/><linearGradient id="SVGID_31_" gradientUnits="userSpaceOnUse" x1="414.2451" y1="568.2656" x2="509.0055" y2="545.7273" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#EDEDEE"/><stop offset=".4176" stop-color="#FFF"/><stop offset=".6264" stop-color="#F8F9F9"/><stop offset=".9505" stop-color="#B2B4B6"/></linearGradient><path style="fill:url(#SVGID_31_);" d="M7.61,68.141c-0.065-0.062-0.112-0.105-0.139-0.131L7.45,68.021L7.61,68.141L7.61,68.141z"/><linearGradient id="SVGID_32_" gradientUnits="userSpaceOnUse" x1="416.6992" y1="578.5645" x2="511.8228" y2="555.9398" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#EDEDEE"/><stop offset=".4176" stop-color="#FFF"/><stop offset=".6264" stop-color="#F8F9F9"/><stop offset=".9505" stop-color="#B2B4B6"/></linearGradient><path style="opacity:.83;fill:url(#SVGID_32_);" d="M90.412,59.954l0.689,0.108c1.976-1.573,3.869-3.571,3.869-3.571s1.258-1.261,1.889-2.356c0.22-0.381,0.281-0.356,0.271-0.177c0.023-0.09,0.103-0.456-0.038-0.714c-0.094-0.176-0.381,0.288-0.83,0.861c0,0-2.013,2.926-5.798,5.816c-3.786,2.891-4.776,3.771-8.083,5.655c0,0-2.309,1.021-3.914,0.669c-1.246-0.271,0-1.547,0.271-2.699c0.271-1.146,0.063-1.58-0.225-1.807c-0.287-0.225-0.91-0.385-2.142-0.109c0,0-4.709,1.264-6.819,3.307c-1.918,1.854,0.478,2.619,1.021,2.875c0,0,0.78,0.338,0.719,0.672c-0.063,0.336-0.496,0.623-0.733,0.783c-0.239,0.16-3.338,1.977-8.324,2.764c-4.039,0.641-3.26,0.255-7.143,0.654c-3.881,0.399-4.952,0.72-8.068,1.453c-3.116,0.734-4.945,1.537-5.352,2.349c-0.336,0.671,0.479,1.103,0.991,1.407c0.511,0.304,1.423,0.781,1.119,1.293c-0.305,0.512-1.631,1.277-4.874,1.391c-3.243,0.114-4.569-0.336-5.16-1.04c-0.548-0.649-0.08-1.323,0.096-1.946c0,0,0.382-0.814,0.16-1.215c-0.224-0.398-0.737-0.494-1.278-0.559c-0.544-0.064-3.245-0.158-5.337-0.271c-2.372-0.127-5.208-0.211-8.611-0.928c0,0-2.237-0.441-3.69-1.262c-0.096-0.055-0.18-0.107-0.25-0.156c-0.11-0.059-0.194-0.122-0.25-0.209c-0.41-0.432-0.047-0.748-0.186-1.168c-0.121-0.359-0.352-0.878-0.896-1.501c-0.176-0.183-0.428-0.437-0.72-0.713c-0.08-0.069-0.165-0.144-0.254-0.214c-1.276-1.037-1.422-1.149-1.964-1.166c-0.542-0.019-0.235,0.895-0.129,1.246c0.041,0.136,0.139,0.328,0.242,0.508c-0.2-0.364-0.336-0.729-0.257-0.915c0.144-0.337,0.309-0.308,0.309-0.308s0.133-0.053,0.595,0.297c0.463,0.35,1.499,1.078,2.012,1.705c0.512,0.625,0.481,1.18,0.481,1.18s-0.103,0.563,0.451,1.17c0.555,0.604,1.733,1.714,5.859,2.349c0.021,0.005,0.041,0.005,0.06,0.009l0.193-0.549l0.568,0.663c0.006,0,0.01,0.001,0.016,0.002c3.592,0.519,5.544,0.563,5.544,0.563s4.709,0.164,5.982,0.164c1.271,0,1.035,0.664,1.035,0.664s-0.072,0.361-0.225,0.647c-0.153,0.288-0.524,1.365-0.144,1.94c0,0,0.585,1.426,4.382,1.527c0,0,3.324,0.267,5.643-0.688c2.317-0.954,0.224-2.277,0.224-2.277s-0.794-0.483-1.129-0.737c-0.308-0.233-0.184-0.48-0.122-0.646c0.061-0.163,0.297-0.355,0.564-0.492c0.265-0.134,1.241-0.652,5.365-1.722c4.124-1.067,6.587-1.183,6.587-1.183s0.021-0.004,0.062-0.006l0.334-0.656l0.845,0.559c0.732-0.061,1.686-0.129,2.537-0.17c1.691-0.083,4.341-0.475,5.879-0.811c1.539-0.342,3.869-1.059,5.591-1.951c1.724-0.891,1.808-1.519,1.808-1.519s0.328-0.472-0.391-0.995c-0.719-0.521-1.037-0.38-1.672-1.024c-0.638-0.646,0.553-1.619,0.553-1.619s0.615-0.865,4.021-2.177c3.408-1.313,3.98-0.873,4.156-0.728c0.175,0.142,0.195,0.613,0.123,0.933c-0.072,0.316-0.494,1.455-0.721,2.055c-0.227,0.592-0.316,1.402,0.604,1.6c0.924,0.193,2.215-0.009,3.427-0.443c2.893-1.033,3.757-2.295,8.535-5.764c0.011-0.01,0.021-0.016,0.029-0.023L90.412,59.954L90.412,59.954z"/><linearGradient id="SVGID_33_" gradientUnits="userSpaceOnUse" x1="415.4736" y1="573.4199" x2="510.5869" y2="550.7977" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#EDEDEE"/><stop offset=".4176" stop-color="#FFF"/><stop offset=".6264" stop-color="#F8F9F9"/><stop offset=".9505" stop-color="#B2B4B6"/></linearGradient><path style="fill:url(#SVGID_33_);" d="M100.895,47.596c-0.635,1.186-1.164,2.608-1.443,3.5c-0.045,0.213-0.061,0.33-0.061,0.33s-0.119,0.654-0.054,1.036c0.028,0.161,0.069,0.279,0.106,0.375c0.021,0.052,0.039,0.095,0.055,0.134c0.02,0.045,0.031,0.082,0.033,0.111c0.007,0.082-0.044,0.614-0.27,1.23l0,0c0,0,0,0,0,0.002c-0.063,0.176-0.143,0.359-0.24,0.539c-0.024,0.05-0.053,0.095-0.074,0.139c-0.458,0.814-1.098,1.457-1.604,1.532c-0.324,0.049-0.484-0.117-0.557-0.386c0.014,0.369,0.086,0.738,0.289,0.963c0.406,0.441,1.563-0.795,1.563-0.795s0.688-0.789,0.965-2.062c0.406-1.875,0.187-2.248,0.187-2.248s-0.247-0.389-0.093-0.853c0.152-0.461,1.156-3.047,1.979-4.01l0.502-0.562c0-0.009,0.002-0.02,0.002-0.029l-0.211-0.521c-0.129,0.13-0.259,0.284-0.385,0.454C101.405,46.763,101.178,47.129,100.895,47.596L100.895,47.596z"/><linearGradient id="SVGID_34_" gradientUnits="userSpaceOnUse" x1="414.7754" y1="570.4785" x2="509.8697" y2="547.861" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#EDEDEE"/><stop offset=".4176" stop-color="#FFF"/><stop offset=".6264" stop-color="#F8F9F9"/><stop offset=".9505" stop-color="#B2B4B6"/></linearGradient><path style="fill:url(#SVGID_34_);" d="M10.564,70.807L10.564,70.807c-0.146-0.092-0.315-0.229-0.469-0.356c-0.133-0.112-0.641-0.585-1.18-1.086c-0.212-0.194-0.411-0.382-0.589-0.55c-0.277-0.262-0.524-0.493-0.688-0.646l0.107,0.358c0.017,0.028,0.034,0.06,0.052,0.089c0.183,0.29,0.854,1.264,2.153,2.277c1.549,1.213,1.559,0.729,1.559,0.729s0.062-0.4-0.296-0.84c-0.063-0.076-0.131-0.167-0.202-0.27v0.002C11.011,70.516,12.023,71.998,10.564,70.807z"/><linearGradient id="SVGID_35_" gradientUnits="userSpaceOnUse" x1="414.915" y1="571.0664" x2="510.04" y2="548.4415" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#EDEDEE"/><stop offset=".4176" stop-color="#FFF"/><stop offset=".6264" stop-color="#F8F9F9"/><stop offset=".9505" stop-color="#B2B4B6"/></linearGradient><path style="fill:url(#SVGID_35_);" d="M10.678,69.98c0.103,0.186,0.219,0.371,0.333,0.533C11,70.501,10.833,70.253,10.678,69.98z"/><linearGradient id="SVGID_36_" gradientUnits="userSpaceOnUse" x1="416.1035" y1="576.0654" x2="511.2286" y2="553.4405" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#EDEDEE"/><stop offset=".4176" stop-color="#FFF"/><stop offset=".6264" stop-color="#F8F9F9"/><stop offset=".9505" stop-color="#B2B4B6"/></linearGradient><path style="fill:url(#SVGID_36_);" d="M96.887,55.023c0,0,0.227-0.76,0.243-1.066c-0.003,0.014-0.005,0.021-0.005,0.021s-0.513,1.443-0.333,2.16C96.771,55.579,96.887,55.023,96.887,55.023z"/><path style="opacity:.1;fill:#232323;" d="M63.301,4.417l0.728,0.072c1.426-0.402,2.643-0.772,2.643-0.772s1.265-0.41,1.901-0.637c0.635-0.226,1.09-0.313,1.654-0.409c0.565-0.096,1.311-0.14,1.709-0.131c0.4,0.007,0.531,0.122,0.531,0.122s0.166,0.131,0.244,0.27c0.077,0.138,0.74,1.891,2.973,2.005c2.233,0.112,2.263-1.096,2.065-1.464c-0.226-0.427-0.896-0.863-0.896-0.863s-0.899-0.575-1.092-0.847c-0.191-0.27,0.034-0.357,0.104-0.375c0.065-0.017,2.435-0.497,2.729-0.609l0.021-0.021l-0.562-0.171c0,0-0.119,0.134-0.789,0.313c-0.67,0.179-1.235,0.246-1.742,0.313c-0.506,0.066-0.506,0.239-0.506,0.239l-0.086,0.136c-0.025,0.075-0.067,0.321,0.375,0.642c0.528,0.387,1.172,0.75,1.438,1.04s0.586,0.783,0.012,1.137C76.48,4.576,76.27,4.64,75.977,4.671c0.002,0.008,0,0.012,0,0.012c-0.248,0.021-0.457,0.03-0.638,0.03c-0.049,0.002-0.102,0.006-0.155,0.009l-0.017-0.013c-0.506-0.024-0.746-0.142-1.067-0.302c-0.442-0.223-0.758-0.73-0.92-1.087s-0.521-0.662-0.521-0.662c-0.588-0.336-1.695-0.343-2.813-0.15c-1.115,0.193-2.656,0.707-2.925,0.812c-0.268,0.104-1.616,0.551-2.307,0.73c-0.693,0.178-1.222,0.357-1.646,0.47c-0.427,0.111-3.432,1.005-4.556,1.339c-1.126,0.334-1.849,0.46-1.849,0.46c-1.688,0.172-2.193-0.134-2.193-0.134c-0.296-0.124-0.261-0.526-0.261-0.526l0.009-1.147c0,0-0.027-0.433-0.357-0.611c-0.328-0.179-0.779-0.252-1.593-0.29c-0.811-0.038-1.683,0.044-2.093,0.134c-0.408,0.09-1.189,0.313-1.764,0.952c-0.572,0.641-0.481,1.139-0.481,1.139s0.004,0.079,0.01,0.201c0.154,0.245,0.416,0.524,0.862,0.739c1.015,0.485-1.137,1.342-1.137,1.342l0,0c-0.479,0.208-1.191,0.478-2.208,0.777c-2.21,0.647-3.684,0.774-3.684,0.774l0.679,0.254c0,0,5.468-1.016,7.148-2.616c0,0,0.625-0.293,0.021-0.88c-0.606-0.585-0.898-0.761-0.898-0.761s-0.41-0.223,0.02-0.772c0.428-0.546,0.922-0.794,1.352-0.933c0.428-0.135,1.754-0.249,2.925-0.093c0,0,0.491,0.042,0.457,0.407c-0.032,0.365-0.087,0.873-0.077,1.028c0.01,0.157,0.025,0.515,0.399,0.845c0.379,0.332,1.098,0.453,1.098,0.453s1.257,0.228,2.845-0.218c1.586-0.444,3.65-1.141,5.438-1.629L63.301,4.417L63.301,4.417z"/><linearGradient id="SVGID_37_" gradientUnits="userSpaceOnUse" x1="412.6152" y1="535.3994" x2="501.5865" y2="514.8846" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#FFF"/><stop offset=".6538" stop-color="#FFF"/><stop offset="1" stop-color="#CBCCCE"/></linearGradient><path style="fill:url(#SVGID_37_);" d="M91.596,12.992l0.271,0.486c-0.021,0.01-0.034,0.014-0.034,0.014c-1.114,0.515-3.999,1.32-4.271,1.398c-0.271,0.08-0.166,0.234-0.166,0.234c0.029,0.078,0.988,1.106,0.988,1.106c1.178,1.249,0.494,2.296,0.494,2.296s-0.852,1.347-2.844,1.12c-1.993-0.227-2.618-1.767-2.729-2.049c-0.111-0.282-0.197-0.768-0.22-1.095c-0.022-0.33-0.272-0.32-0.272-0.32c-1.069-0.03-2.887,1.089-2.887,1.089c-0.824,0.47-1.682,1.147-3.479,1.958c-0.879,0.396-1.694,0.716-2.287,0.936l-0.967-0.173l0.091,0.482c-0.042,0.013-0.063,0.021-0.063,0.021s-2.268,0.822-4.529,1.553c-2.268,0.732-3.65,0.8-3.65,0.8s-1.336,0.12-2.266-0.266c-0.93-0.386-0.959-0.94-0.939-1.415c0.021-0.476,0.483-1.404,0.623-1.958c0.139-0.555-0.683-0.644-0.683-0.644s-1.958-0.236-3.65,0.296c-1.69,0.535-2.54,1.159-2.54,1.159c-0.91,0.512-0.863,0.957-0.863,0.957s-0.012,0.467,0.551,0.869s1.072,0.505,1.736,0.654c0.668,0.149,0.791,0.311,0.791,0.311c1.08,0.894,0.416,1.785,0.047,2.434c-0.631,1.113-3.674,1.653-3.674,1.653c-3.276,0.758-5.12,1.08-7.827,1.452l-0.876-0.46l-0.276,0.615c-7.089,0.936-10.065,1.877-11.065,2.135c-1,0.257-1.261,0.784-1.369,0.904c-0.108,0.12,0.079,0.171,0.079,0.171c0.427,0.137,0.647,0.442,0.647,0.442s1.399,1.697-0.012,3.108c-1.359,1.36-2.785,1.674-2.785,1.674s-2.177,0.737-4.077,0.341c-1.899-0.399-2.439-1.889-2.416-2.395c0.024-0.505,0.176-1.075,0.694-1.661c0.517-0.585,0.654-0.667,0.654-0.667s0.358-0.279,0.421-0.415c0.079-0.172-0.404-0.233-0.404-0.233c-1.034-0.13-3.496-0.097-5.822,0.131c-1.439,0.14-2.769,0.374-3.578,0.518l-0.223-0.48l-0.543,0.625l-3.12,0.504c-1.514,0.222-2.576-0.028-2.576-0.028s-1.331-0.397-1.479-1.252c-0.147-0.852,0.359-1.87,0.49-2.177c0.13-0.307,0.5-0.934,0.5-0.934s0.068-0.13,0.068-0.34c0-0.211-0.233-0.536-0.233-0.536s-0.205-0.396-0.886-0.38c-0.682,0.018-0.866,0.131-1.144,0.364c-0.044,0.038-0.079,0.081-0.108,0.127c0.021-0.064,0.045-0.117,0.073-0.158c0.21-0.309,0.65-0.668,1.401-0.7c0.748-0.034,1.041,0.228,1.041,0.228c0.719,0.82,0.115,1.845-0.351,2.76c-0.057,0.095-0.155,0.271-0.229,0.483c-0.032,0.076-0.062,0.153-0.087,0.227c-0.358,1.06,0.292,1.565,0.668,1.661c0.376,0.097,1.141,0.57,4.269-0.031c3.13-0.603,3.587-0.731,3.587-0.731s6.145-1.087,8.96-0.425l0.023,0.004c0,0,1.297,0.367,0.331,1.334c-0.966,0.966-1.729,1.617-1.504,2.377c0.223,0.762,1.267,1.903,3.646,1.603c0,0,0.842-0.113,1.105-0.165c1.733-0.336,2.899-1.268,2.899-1.268s0.972-0.721,0.782-1.631c-0.187-0.908-1.017-1.189-1.017-1.189s-0.659-0.424-0.141-1.237c0,0,0.141-0.69,2.553-1.317c2.412-0.626,6.813-1.518,10.555-1.989c3.49-0.408,9.652-1.575,10.89-2.08c1.235-0.508,1.497-1.4,1.521-1.708c0.024-0.31,0.072-0.83-1.14-1.09c-1.213-0.259-1.758-0.655-1.931-0.79c-0.172-0.138-0.545-0.483-0.545-1.275c0-0.791,1.607-1.745,3.392-2.35c1.78-0.606,3.927-0.34,3.927-0.34c1.948,0.167,0.936,1.963,0.936,1.963c-0.074,0.322-0.946,1.785,0.5,2.169c1.541,0.409,4.175-0.347,5.188-0.669c0.829-0.261,3.141-1.074,4.688-1.62c0.352-0.122,0.66-0.231,0.908-0.318c1.656-0.577,3.019-1.219,3.785-1.681c0.771-0.462,2.144-1.297,2.144-1.297s1.351-0.744,1.799-0.808c0.451-0.064,1.619-0.346,1.771,0.771c0.155,1.115,0.631,1.899,1.4,2.271c0.771,0.371,2.064,0.538,3.246-0.231c1.182-0.771,0.359-1.901,0.359-1.901c-0.021-0.028-0.039-0.057-0.062-0.085c-0.151-0.27-0.369-0.518-0.487-0.646c-0.388-0.47-0.736-0.822-0.736-0.822c-0.295-0.436,0.053-0.692,0.425-0.834c0.373-0.141,2.351-0.758,2.351-0.758c1.155-0.383,1.592-0.551,2.053-0.988c0.445-0.419-0.189-1.34-0.239-1.412l0.004-0.002l0.608,0.256c0.136,0.182,0.27,0.362,0.4,0.547l-0.007,0.005c0,0,0.226,0.527,0.054,0.799c-0.095,0.149-0.343,0.293-0.545,0.395L91.596,12.992L91.596,12.992z"/><linearGradient id="SVGID_38_" gradientUnits="userSpaceOnUse" x1="390.042" y1="485.6797" x2="390.042" y2="485.6797" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#FFF"/><stop offset=".6538" stop-color="#FFF"/><stop offset="1" stop-color="#CBCCCE"/></linearGradient><path style="fill:url(#SVGID_38_);" d="M-16.122-14.641"/><path style="opacity:.1;fill:#232323;" d="M57.455,92.28c-0.034-0.042-0.042-0.034-0.012-0.063c0.021-0.021,0.086-0.082,0.115-0.137c0,0-1.17-0.063-2.141,0.077c-0.962,0.137-1.933,0.335-1.933,0.335l0.301,0.146c0,0,0.127-0.055,1.047-0.183c0.921-0.128,1.267-0.128,1.267-0.128s0.808-0.063,0.969-0.063c0.162,0,0.061,0.104,0.061,0.104s-0.078,0.136,0.366,0.124c0,0,0.663-0.027,1.313-0.188C58.809,92.309,57.678,92.544,57.455,92.28z"/><path style="opacity:.1;fill:#232323;" d="M54.469,92.691c0,0,0.146,0.266-2.923,0.394c0,0,1.788,0.052,3.31-0.198C55.963,92.707,54.469,92.691,54.469,92.691L54.469,92.691z"/><path style="opacity:.1;fill:#232323;" d="M13.114,9.856c0,0-0.005,0.096,0.019,0.131c0.024,0.034,0.107,0.112,0.107,0.112s0.328-0.5,0.194-0.438c0,0-0.119,0.187-0.164,0.23c0,0-0.029,0.04-0.088,0.077C13.123,10.006,13.117,9.991,13.114,9.856L13.114,9.856z"/><path style="opacity:.1;fill:#232323;" d="M10.595,12.501c0,0-0.388,0.46,0,0.52l0.528-0.527c0,0,0.139-0.234,0.139-0.398C11.263,12.095,10.752,12.343,10.595,12.501L10.595,12.501z"/><path style="fill:#232323;" d="M-16.122-14.641"/><path style="fill:#6B6B6B;" d="M21.093,23.707c1.227,0.146,1.499-0.132,1.527-0.172c0.294-0.003,1.475-0.034,2.865-0.207c1.685-0.21,3.564-0.891,3.564-0.891s1.554-0.568,2.096-1.18l0.016-0.002c0,0-0.693-0.6-1.057-1.122c0,0-0.286-0.557,0.027-1.035c0.316-0.479,0.836-1.008,2.344-1.643c1.506-0.636,2.356-0.514,2.356-0.514s0.594-0.006,1.007,0.45c0.415,0.458,0.649,1.006,0.649,1.006s0.029,0.38-0.115,0.63c-0.141,0.251-0.155,0.277-0.155,0.277s0.049,0.017,0.378-0.007c0.329-0.021,1.165-0.142,2.67-0.506c1.508-0.363,3.407-0.972,3.407-0.972s4.9-1.578,5.407-1.714c0.507-0.135,1.357-0.436,1.357-0.436l0.027,0.059c0,0,0.405,0.663,0.392,1.269V16.94c0,0-0.021,0.301-0.698,0.818c-0.674,0.517-1.226,0.479-1.678,0.442c-0.452-0.039-0.665-0.071-0.794-0.045l-0.72,0.04c-0.787,0.111-1.224,0.407-1.224,0.407c-1.804,1.065,0.731,9.287,0.731,9.287c-3.742,0.47-8.143,1.363-10.555,1.989c-2.412,0.627-2.553,1.317-2.553,1.317c-0.519,0.813,0.141,1.236,0.141,1.236s0.829,0.283,1.017,1.19c0.19,0.91-0.783,1.629-0.783,1.629s-1.159,0.97-2.898,1.268c-1.738,0.298-2.396,0.35-3.429-0.47c-0.91-0.721-0.297-1.864,0.312-2.301c0.612-0.438,0.909-0.91,0.988-1.113c0.079-0.203,0.032-0.376,0.032-0.376l-0.58-0.534c-2.005-1.33-9.884,0.063-9.884,0.063c-0.213-1.169-0.362-1.171-0.282-3.117c0.051-1.244,0.291-1.752,0.291-1.752l0.058-0.164c0,0,0.448-1.443,1.141-2.44c0,0,0.602-0.172,1.364-0.349C20.616,23.793,21.093,23.707,21.093,23.707L21.093,23.707z"/><linearGradient id="SVGID_39_" gradientUnits="userSpaceOnUse" x1="231.2324" y1="-407.8711" x2="263.6191" y2="-407.8711" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#696969"/><stop offset=".3702" stop-color="#2E2E2E"/><stop offset=".4554" stop-color="#424242"/><stop offset=".6014" stop-color="#303030"/><stop offset=".6947" stop-color="#4A4A4A"/><stop offset="1" stop-color="#666666"/></linearGradient><path style="opacity:.45;fill:url(#SVGID_39_);" d="M49.855,16.94c0,0-4.085,1.326-3.891,1.254c0,0-0.39,0.075-0.686,0.161c-0.294,0.086-0.539,0.247-0.539,0.247s-3.288,1.222-6.438,1.848c-3.148,0.627-2.977-0.361-2.708-0.83c0.232-0.409,0.829-1.112-0.188-1.254c-1.019-0.14-1.788,0.251-2.21,0.439c-0.422,0.189-3.162,1.362-1.251,2.254c0,0,1.423,0.642-0.377,1.755c0,0-1.816,1.16-5.355,1.77c0,0-0.565,0.063-1.88,0.111c-1.316,0.046-2.558,0.213-4.12,0.658c-1.378,0.391-1.992,0.579-2.744,1.065l0.194-0.501l0.2-0.462c1.069-0.533,3.719-1.288,5.717-1.378c1.997-0.089,2.908-0.16,4.721-0.624c2.134-0.546,2.702-1.019,2.93-1.163c0.194-0.123,0.771-0.479,0.493-0.633c-0.359-0.199-0.895-0.729-0.895-0.729c-0.217-0.256-0.39-0.373-0.158-1.046c0.356-1.029,2.196-1.644,2.196-1.644s1.028-0.534,2.334-0.514c1.305,0.021,1.287,0.752,1.287,0.752s0.062,0.34-0.268,0.827c0,0-0.503,0.579-0.049,0.656c0.454,0.081,1.622,0.179,5.48-1.028c3.859-1.207,8.085-2.611,8.085-2.611S49.855,16.66,49.855,16.94L49.855,16.94z"/><linearGradient id="SVGID_40_" gradientUnits="userSpaceOnUse" x1="231.623" y1="-407.063" x2="263.4941" y2="-407.063" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#525252"/><stop offset=".1856" stop-color="#333333"/><stop offset=".354" stop-color="#AEAEAE"/><stop offset=".4199" stop-color="#ADADAD"/><stop offset=".4276" stop-color="#9D9D9D"/><stop offset=".4433" stop-color="#818181"/><stop offset=".4611" stop-color="#6A6A6A"/><stop offset=".4814" stop-color="#585858"/><stop offset=".506" stop-color="#4C4C4C"/><stop offset=".539" stop-color="#444444"/><stop offset=".6166" stop-color="#424242"/><stop offset=".6684" stop-color="#454545"/><stop offset="1" stop-color="#BDBDBD"/></linearGradient><path style="fill:url(#SVGID_40_);" d="M31.145,21.257c-0.541,0.612-2.096,1.18-2.096,1.18s-1.88,0.68-3.564,0.891c-1.608,0.201-2.777,0.209-2.777,0.209l-0.082-0.002c-0.175,0.145-0.483,0.188-0.728,0.21c-0.244,0.023-0.806-0.039-0.806-0.039s-2.156,0.432-2.603,0.616c0,0-0.253,0.392-0.331,0.539c-0.08,0.146-0.299,0.594-0.299,0.594c1.069-0.534,3.718-1.289,5.717-1.379c1.997-0.089,2.908-0.159,4.721-0.624c2.134-0.546,2.702-1.019,2.929-1.163c0.195-0.123,0.771-0.479,0.493-0.633c-0.358-0.199-0.894-0.729-0.894-0.729c-0.217-0.256-0.391-0.373-0.158-1.046c0.356-1.029,2.196-1.644,2.196-1.644s1.028-0.533,2.333-0.514c1.306,0.021,1.287,0.753,1.287,0.753s0.062,0.34-0.269,0.826c0,0-0.503,0.579-0.049,0.657c0.455,0.08,1.622,0.178,5.48-1.028c3.858-1.208,8.085-2.612,8.085-2.612c-0.098-0.29-0.296-0.652-0.296-0.652s-0.85,0.301-1.358,0.436c-0.506,0.136-5.407,1.714-5.407,1.714s-1.9,0.608-3.407,0.972c-1.506,0.364-2.342,0.485-2.671,0.508c-0.329,0.021-0.378,0.006-0.378,0.006s0.013-0.027,0.156-0.279c0.144-0.248,0.115-0.629,0.115-0.629s-0.235-0.548-0.649-1.006c-0.414-0.457-1.007-0.45-1.007-0.45s-0.849-0.121-2.355,0.514c-1.508,0.636-2.029,1.164-2.346,1.643c-0.312,0.478-0.026,1.035-0.026,1.035c0.365,0.521,1.057,1.122,1.057,1.122"/><linearGradient id="SVGID_41_" gradientUnits="userSpaceOnUse" x1="236.917" y1="-417.333" x2="235.8882" y2="-410.5272" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#969696"/><stop offset="1" stop-color="#000"/></linearGradient><path style="opacity:.2;fill:url(#SVGID_41_);" d="M21.606,31.241c0,0-0.064-0.328,0.172-0.939c0.234-0.611,0.908-0.595,1.362-0.503c0.455,0.095,0.846,0.298,1.472-0.124c0.627-0.423,0.47-1.583,0.046-2.852c-0.423-1.267-0.328-2.128-0.328-2.128l-0.608-0.649l-0.237,0.696c0.047,1.316,0.657,3.226,0.829,3.759c0.173,0.533,0.297,0.8-0.735,0.517c-1.034-0.282-1.519,0.125-1.519,0.125c-1.332,0.862-1.082,2.161-1.082,2.161L21.606,31.241z"/><path style="opacity:.5;fill:#141414;" d="M27.498,36.633c-0.264-1.763-0.917-2.749-0.917-2.749c-0.25,0.188-0.513,0.693-0.513,0.693s0.179,0.208,0.471,1.568c0,0,0.141,0.106,0.438,0.279C27.273,36.597,27.498,36.633,27.498,36.633z"/><path style="opacity:.5;fill:#141414;" d="M33.152,32.881c0,0-0.78,0.907-0.378,2.336c0,0,0.454-0.379,0.585-0.68c0,0-0.145-0.458,0.138-1.017C33.5,33.52,33.37,33.1,33.152,32.881L33.152,32.881z"/><linearGradient id="SVGID_42_" gradientUnits="userSpaceOnUse" x1="428.7803" y1="532.0527" x2="429.5303" y2="524.4692" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#333333"/><stop offset=".431" stop-color="#000"/><stop offset="1" stop-color="#2E2E2E"/></linearGradient><path style="opacity:.18;fill:url(#SVGID_42_);" d="M21.2,31.253c0.017-1.299,0.471-1.492,0.905-1.818c0.436-0.328,1.326-0.024,1.326-0.024s0.678,0.218,1.046-0.1c0.369-0.319-0.017-1.467-0.217-2.123c-0.202-0.653-0.41-1.599-0.445-2.262c-0.025-0.489-0.091-0.707-0.125-0.789l-0.205,0.604c0.047,1.316,0.657,3.226,0.829,3.759c0.173,0.533,0.297,0.8-0.735,0.517c-1.035-0.282-1.519,0.125-1.519,0.125c-1.332,0.862-1.082,2.162-1.082,2.162l0.259-0.027L21.2,31.253L21.2,31.253z"/><path style="opacity:.3;fill:#505050;" d="M26.239,34.29c0.045,0.06,0.421,0.597,0.736,2.113l0.005,0.025c0.294,0.17,0.519,0.205,0.519,0.205c-0.264-1.763-0.917-2.749-0.917-2.749C26.46,33.977,26.336,34.143,26.239,34.29L26.239,34.29z"/><path style="opacity:.3;fill:#505050;" d="M33.152,32.881c0,0-0.78,0.907-0.378,2.336c0,0,0.125-0.104,0.262-0.248l0.021-0.051c-0.304-1.033,0.283-1.763,0.283-1.763l0.004-0.003C33.291,33.053,33.225,32.957,33.152,32.881z"/><path style="opacity:.88;fill:#231F20;" d="M17.159,8.189h0.117c-0.16,0.481-0.789,1.141-1.068,1.583c-0.156,0.248-0.252,0.572-0.474,0.751c0.038,0.043-0.003,0.003,0.04,0.04c0.088,0.052,0.813-0.139,0.95-0.236c0.082,0.015,0.076,0.011,0.12,0.039c0.042,0.07-0.481,0.991-0.595,1.109v0.04c0.196-0.023,0.502-0.056,0.634-0.16c0.383-0.299,0.47-0.937,0.75-1.346c-0.013-0.066-0.026-0.132-0.04-0.196c-0.222-0.04-0.681,0.02-0.87,0.157h-0.039c0.091-0.473,0.868-1.346,1.146-1.741c0.454-0.647,0.881-1.269,1.345-1.9c0.243-0.331,0.585-0.622,0.831-0.949c0.276-0.367,0.569-0.85,0.949-1.107V4.194h-0.158c-0.186,0.135-0.675,0.218-0.908,0.354c0.032,0.135,0.019,0.101,0.118,0.158c-0.139,0.386-0.598,0.673-0.832,0.991c-0.371,0.5-0.784,0.968-1.147,1.464c-0.123,0.164-0.205,0.421-0.356,0.553c-0.237,0.208-0.913,0.185-1.185,0.396h-0.08c0.056-0.332,0.907-1.392,1.147-1.622v-0.04c-0.408,0.057-0.724,0.273-0.989,0.473c0.044,0.091,0.037,0.073,0.12,0.12c-0.145,0.238-0.361,0.415-0.515,0.633c-0.197,0.275-0.305,0.602-0.514,0.871c0.014,0.04,0.028,0.077,0.04,0.118C15.948,8.641,17.001,8.307,17.159,8.189L17.159,8.189z M51.936,13.534c0.199,0.066,0.396,0.131,0.596,0.197c0.159,0.002,0.327-0.002,0.432-0.04c-0.009-0.654-0.364-0.913-0.593-1.345c-0.113-0.22-0.175-0.523-0.355-0.673c0.069-0.242,0.727-0.308,0.988-0.396c0.643-0.211,1.371-0.422,2.02-0.633c0.305-0.099,0.664-0.077,0.91-0.236c0.146,0.015,0.22,0.029,0.277,0.118c0.143,0.212,0.26,1.667,0.156,2.097c-0.398,1.663-0.896,2.963-1.938,3.958v0.039c0.385-0.062,0.568-0.436,0.83-0.632c1.051-0.794,1.762-1.972,2.137-3.444c0.221-0.865-0.14-1.713,0.199-2.452h-0.039c-0.074-0.188-1.082-0.553-1.388-0.555c-0.164,0.177-0.399,0.416-0.634,0.515c-0.357,0.152-0.838,0.109-1.146,0.315c-0.287-0.024-0.506-0.57-0.315-0.791c-0.011-0.09-0.009-0.112-0.04-0.158c-0.239-0.191-0.85-0.171-1.268-0.158c-0.133,0.125-0.252,0.15-0.314,0.358h-0.039c-0.021,0.076,0.02,0.05,0.039,0.078c0.025,0.016,0.163-0.007,0.236,0.04c0.449,0.047,0.438,0.566,0.675,0.831c-0.027,0.069-0.011,0.04-0.042,0.08c-0.155,0.123-1.301,0.453-1.543,0.515c-0.185,0.046-0.414-0.068-0.553-0.081c-0.336-0.028-0.633,0.16-0.831,0.277c0.107,0.157,0.434,0.118,0.554,0.276C51.368,12.193,51.556,12.913,51.936,13.534L51.936,13.534z M59.807,12.977c0.187,0.093,0.187,0.332,0.278,0.514c0.185,0.371,0.437,0.82,0.554,1.228v0.316c0.092,0.252,0.396,0.284,0.596,0.435c0.156-0.021,0.214-0.061,0.314-0.118c-0.066-0.753-0.525-1.378-0.791-1.979c-0.08-0.188-0.207-0.452-0.236-0.633c-0.021-0.109,0.063-0.169,0-0.276c-0.051-0.123-0.072-0.085-0.156-0.159c-0.059-0.04-0.031-0.016,0-0.078c0.068-0.144,0.213-0.287,0.275-0.436c0.133-0.313,0.127-0.576,0.396-0.751c-0.04-0.41-0.639-0.457-1.107-0.435c-0.057,0.042-0.156,0.064-0.24,0.077c0.05,0.103,0.082,0.124,0.199,0.157c0.113,1.161-0.699,2.225-1.229,2.928c-0.208,0.279-0.556,0.456-0.75,0.754h-0.04v0.038C58.395,14.473,59.54,13.383,59.807,12.977L59.807,12.977z M12.407,22.83c-0.081,0.017-0.076,0.009-0.117,0.039c-0.288,0.148-0.773,1.426-1.346,1.069c-0.292,0.002-0.319-0.055-0.476-0.16c0.02-0.376,0.659-1.063,0.913-1.226c0.031-0.604,0.187-1.252,0.118-1.819c-0.041-0.014-0.08-0.028-0.118-0.039c-0.14-0.046-0.25,0.168-0.357,0.276c-0.29,0.291-0.648,0.597-0.871,0.949c-0.337-0.003-1.414-0.013-1.623,0.119H8.411c0.099-0.256,0.86-1.096,0.633-1.464c-0.013-0.041-0.025-0.08-0.04-0.12c-0.722,0.002-1.592,1.287-1.82,1.82c-0.115,0.266-0.115,0.573-0.276,0.791v0.04c0.54-0.066,1.082-0.133,1.622-0.199c0.205-0.044,0.487,0.052,0.633-0.039h0.554c0.092-0.118,0.184-0.238,0.277-0.356c0.33-0.349,0.768-0.702,1.028-1.106h0.119v0.551c-0.303,0.273-0.773,0.695-0.91,1.108v0.316c-0.203,0.88,0.223,1.329,0.99,1.267c0.5-0.466,1.324-0.848,1.226-1.779C12.405,22.833,12.444,22.873,12.407,22.83L12.407,22.83z M7.819,22.118H7.58c0.109-0.436,0.537-0.935,1.069-0.95v0.197c-0.185,0.239-0.369,0.475-0.554,0.713C7.982,22.076,7.88,22.076,7.819,22.118z M93.044,22.315c-0.164-0.405-0.294-0.722-0.475-1.068c-0.3-0.574-0.613-1.414-1.464-1.425c-0.211,0.179-0.435,0.322-0.555,0.593c-0.777,1.762,0.819,3.747,1.543,4.71c0.256,0.339,0.557,0.712,0.948,0.908c-0.091,1.376-1.269,1.813-2.53,1.267c-0.899-0.386-1.617-1.237-2.179-1.979c-0.188-0.249-0.481-0.457-0.672-0.713c-0.177-0.239-0.304-0.507-0.515-0.713v-0.039h-0.078c0.107,0.426,0.354,0.815,0.514,1.188c0.669,1.538,1.52,2.614,2.811,3.521c0.608,0.428,1.621,1.104,2.494,0.475C94.412,27.942,93.669,23.851,93.044,22.315L93.044,22.315z M92.928,24.216c-0.104,0.1-0.539-0.419-0.635-0.515c-0.441-0.443-1.329-1.221-0.83-1.979h0.197c0.388,0.403,0.746,0.788,0.99,1.344c0.129,0.299,0.152,0.805,0.313,1.069C92.941,24.205,92.958,24.175,92.928,24.216L92.928,24.216z M66.693,32.128v-0.395c0.179-0.801,0.137-1.765,0.314-2.572c0.241-1.088-0.101-2.148,0.99-2.414c0.021-0.106,0.057-0.148,0-0.238c-0.025-0.067-0.009-0.039-0.04-0.079c-0.043-0.031-0.038-0.024-0.116-0.039c-0.305,0.222-1.131,0.373-1.543,0.474c-0.313,0.076-0.639,0.01-0.871,0.158c-0.039,0.013-0.078,0.027-0.119,0.04c0.014,0.079,0.025,0.159,0.041,0.237c0.451,0.147,0.867-0.031,1.067,0.356c0.13,0.252,0.112,1.157,0.039,1.504c-0.251,1.163-0.146,2.491-0.396,3.64c-0.086,0.397,0.022,1.171-0.157,1.463v0.08c-0.241-0.115-0.397-0.426-0.554-0.633c-0.354-0.467-0.875-0.84-1.229-1.305c-0.213-0.281-0.437-0.617-0.712-0.833c0.037-0.761,0.259-1.56,0.438-2.254c0.131-0.522,0.135-1.005,0.395-1.386c0.148-0.217,0.505-0.355,0.751-0.475c-0.002-0.1-0.004-0.146-0.04-0.198c-0.014-0.04-0.023-0.079-0.037-0.119c-0.543,0.081-1.003,0.341-1.505,0.475c-0.454,0.123-0.911,0.092-1.269,0.276c0.012,0.091,0.01,0.112,0.041,0.158c0.014,0.039,0.024,0.08,0.039,0.118c1.391-0.078,1.18,0.678,0.912,1.742c-0.084,0.326-0.029,0.775-0.199,1.028v0.079h-0.039c-0.285-0.433-0.713-0.852-1.067-1.227c-0.146-0.132-0.291-0.264-0.435-0.395c-0.104-0.137-0.16-0.312-0.278-0.436c0.024-0.437,0.38-0.549,0.713-0.672c-0.015-0.183-0.052-0.206-0.118-0.317c-1.031,0.151-1.927,0.73-3.086,0.791v0.041h-0.04c0.004,0.1,0.004,0.146,0.04,0.197v0.079c0.227,0.039,0.564-0.054,0.831,0.04c0.427,0.15,0.81,0.648,1.067,0.99c0.388,0.513,0.996,0.949,1.384,1.463c0.204,0.274,0.434,0.634,0.713,0.832c-0.038,0.696-0.229,1.428-0.396,2.058c-0.086,0.323-0.035,0.735-0.197,0.988c-0.025,0.069-0.01,0.039-0.041,0.08c-0.377-0.718-1.104-1.265-1.582-1.9c-0.918-1.22-1.938-2.319-2.889-3.521c0-0.167,0.01-0.268,0.08-0.356c0.073-0.229,0.359-0.443,0.633-0.476c0.015-0.12,0.033-0.135-0.039-0.238c-0.016-0.038-0.026-0.077-0.041-0.118c-0.803,0.123-1.521,0.497-2.293,0.714c-0.401,0.112-0.928,0.057-1.229,0.276c-0.04,0.013-0.08,0.026-0.117,0.04c0.021,0.152,0.061,0.176,0.117,0.277c0.314-0.005,0.646-0.092,0.949,0c0.793,0.241,1.361,1.137,1.818,1.742c0.201,0.266,0.513,0.483,0.713,0.751c0.849,1.129,1.808,2.146,2.65,3.285c0.328,0.442,0.771,0.825,1.066,1.304c0.179-0.004,0.216-0.025,0.316-0.079c0.213-0.929,0.332-1.866,0.596-2.81c0.119-0.432,0.269-0.942,0.314-1.424c0.327,0.117,0.592,0.607,0.793,0.871c0.618,0.821,1.491,1.502,2.057,2.373c0.164-0.007,0.182-0.026,0.277-0.078C66.352,34.819,66.521,33.473,66.693,32.128L66.693,32.128z M4.297,38.894c-0.013,2.467-0.142,6.269,1.781,6.806c0.7,0.193,1.087-0.271,1.306-0.595c0.786-1.17,0.565-3.446-0.199-4.43c-0.339,0.034-0.825,0.84-0.988,1.106c-0.082-0.016-0.075-0.011-0.119-0.04c-0.091-0.041-0.085-0.066-0.159-0.118c-0.06-0.933,0.127-1.802,0.159-2.691c1.044,0.102,1.941,0.696,3.007,0.751c-0.001-0.185,0-0.434,0.077-0.552c-0.009-0.092-0.007-0.112-0.04-0.16c-0.145-0.115-0.949-0.306-1.186-0.315v-0.04h-0.04c0.146-1.174-0.186-2.082-0.99-2.414c-0.449-0.08-0.897-0.16-1.346-0.239c-0.229-0.083-0.341-0.266-0.514-0.395c-0.058-0.38-0.133-0.806,0.159-1.029c-0.021-0.142-0.032-0.168-0.119-0.238v-0.039h-0.04c-0.133,0.228-0.245,0.493-0.315,0.792c-0.234,0.983,0.309,1.818,0.909,2.018c0.397,0.065,0.792,0.132,1.188,0.197c0.314,0.122,0.453,0.379,0.671,0.595c-0.009,0.512-0.5,0.568-0.91,0.435c-0.64-0.208-1.321-0.353-1.977-0.592c-0.172-0.064-0.333-0.17-0.555-0.199c-0.027,0.25-0.054,0.501-0.08,0.751c0.554,0.171,1.109,0.343,1.662,0.515c-0.023,1.398-0.574,3.074,0.119,4.153c0.084,0.021,0.143,0.037,0.198,0.08c0.78-0.054,0.943-0.68,1.345-1.108c0.342,0.82,0.086,2.253-0.671,2.453c-0.326,0.224-0.803-0.066-0.989-0.237c-0.648-0.599-0.785-1.511-1.027-2.532c-0.083-0.344,0.033-1.042-0.118-1.307c0.006-0.404,0.092-1.134-0.12-1.344v-0.039L4.297,38.894L4.297,38.894z M99.336,45.543c-0.143-0.666,0.055-1.478-0.08-2.097v-0.633c-0.097-0.453-0.059-1.056-0.156-1.502c-0.189-0.882-0.022-1.926-0.355-2.652c-0.197-0.047-0.393-0.084-0.671-0.08c-0.103,0.104-0.179,0.158-0.159,0.278c0.083,0.359,0.547,0.432,0.673,0.792c0.015,0.172,0.026,0.343,0.04,0.514c0.133,0.561,0.111,1.286,0.236,1.86v0.475c0.063,0.289,0.16,1.036,0.078,1.267c-0.139,0.41-0.584,0.78-0.868,1.068c-0.754,0.755-1.64,1.715-2.97,1.859c-0.025,0.068-0.01,0.039-0.041,0.08c0.022,0.494,0.476,0.396,0.793,0.594c0.08-0.014,0.158-0.028,0.236-0.042c0.122-0.074,0.191-0.242,0.276-0.356c0.2-0.261,0.563-0.399,0.751-0.671h0.04c0.002,1.205,0.028,2.561,0.04,3.718h0.117c0.272-1.172,0.252-2.61,0.238-4.039c0.521-0.486,0.853-1.19,1.385-1.66v-0.078h0.041c0.007,1.251,0.037,2.529,0.037,3.797c0,0.407-0.102,1.378,0,1.544v0.237h0.08c0.106-0.425,0.133-1.023,0.236-1.501v-0.674C99.451,47.107,99.45,46.078,99.336,45.543L99.336,45.543z M28.313,48.073c-0.347-0.144-0.776-0.461-0.989-0.751c-0.637-0.875-1.337-2.948-0.87-4.51c0.379-1.266,1.202-2.127,2.532-2.454c0.673-0.163,1.397,0.062,1.821,0.278c1.208,0.622,1.725,1.506,2.096,2.967c0.48,1.887-0.132,3.619-1.385,4.194c0.078,0.764,0.158,1.529,0.237,2.295c0.444-0.013,0.852-0.105,1.227-0.199c0.629-0.155,1.271-0.176,1.86-0.315c0.431-0.104,1.052-0.015,1.384-0.237c0.079-0.17-0.247-1.35-0.315-1.623c-0.057-0.229-0.009-0.461-0.119-0.633v-0.079c-0.091,0.012-0.185,0.025-0.277,0.039c0.018,1.195-0.834,1.032-1.781,1.267c-0.473,0.119-1.049,0.27-1.581,0.276c0-0.17,0-0.343-0.001-0.514c0.045-0.083,0.739-0.386,0.868-0.476c0.461-0.318,0.931-0.826,1.229-1.304c0.202-0.327,0.366-0.764,0.473-1.149c0.138-0.489,0.154-1.17,0.041-1.662c-0.079-0.338-0.048-0.603-0.158-0.91c-0.427-1.187-1.322-2.054-2.453-2.532c-0.513-0.216-1.093-0.224-1.7-0.356c-0.539-0.116-1.509,0.124-1.901,0.238c-1.905,0.562-3.198,1.48-3.799,3.323c-0.236,0.728-0.163,1.736,0.04,2.414c0.467,1.561,1.773,3.02,3.72,3.047v0.039c0.062,0.088,0.06,0.264,0.118,0.355c-0.024,0.067-0.009,0.039-0.04,0.08c-0.164,0.111-0.404,0.061-0.633,0.117c-0.47,0.118-1.986,0.486-2.334,0.158c-0.222-0.072-0.37-0.363-0.396-0.632c-0.099,0.004-0.146,0.004-0.197,0.039h-0.082c0.146,0.767,0.291,1.53,0.435,2.296h0.041v0.04c1.385-0.239,2.77-0.478,4.154-0.713c-0.198-0.728-0.395-1.451-0.593-2.179C28.873,48.139,28.517,48.159,28.313,48.073L28.313,48.073z M96.014,43.682c0.086,0.218,0.254,0.58,0.435,0.712c0.086,0.063,0.132,0.04,0.198,0.119c1.31,0.113,1.842-2.143,1.308-3.442c-0.095-0.225-0.517-0.885-0.911-0.633h-0.08c0.026-0.069,0.01-0.038,0.04-0.08c-0.001-0.188-0.021-0.25-0.077-0.356c-0.08-0.013-0.156-0.026-0.238-0.038c-0.039,0.031-0.01,0.014-0.078,0.038c0.027,0.24,0.111,0.247,0.119,0.514C96.09,41.099,95.545,42.497,96.014,43.682z M96.446,41.585c0.088-0.213,0.265-0.35,0.396-0.515c0.082-0.015,0.075-0.01,0.117-0.04c0.301-0.001,0.385,0.057,0.555,0.159c0.301,0.711,0.346,1.954-0.156,2.494c-0.077,0.085-0.229,0.116-0.315,0.197C96.214,43.817,96.146,42.305,96.446,41.585L96.446,41.585z M78.092,57.168c-0.445-0.273-0.507-1.675-0.673-2.294c-0.327-1.215-0.483-2.489-0.831-3.72c-0.223-0.788-0.523-1.605-0.435-2.572c0.139-0.138,0.231-0.32,0.396-0.436c0.223-0.154,0.58-0.229,0.752-0.436c0.027-0.051-0.019-0.128-0.041-0.238c-0.459,0.074-0.879,0.35-1.267,0.515c-0.792,0.337-1.567,0.536-2.373,0.87c-0.252,0.104-0.515,0.282-0.833,0.315v0.238c0.027,0.014,0.055,0.025,0.08,0.04c0.042,0.045,1.033-0.392,1.346-0.118c0.356,0.125,0.311,0.59,0.514,0.872c-0.061,0.614-0.672,1.558-0.912,2.097c-0.58,1.326-1.17,2.592-1.816,3.836c-0.248,0.477-0.543,1.334-0.871,1.701v0.039c-0.216-0.296-0.199-1.051-0.314-1.462c-0.353-1.235-0.578-2.591-0.951-3.798c-0.068-0.23-0.305-1.279-0.156-1.503c0.051-0.546,0.822-0.785,1.266-0.95c-0.012-0.092-0.024-0.186-0.039-0.277c-0.701,0.105-1.429,0.479-2.058,0.713c-0.595,0.223-1.14,0.313-1.741,0.516c-0.298,0.102-0.636,0.275-0.986,0.314v0.041h-0.041c0.015,0.112,0.025,0.172,0.078,0.237c0.162,0.107,1.03-0.352,1.386-0.077c0.557,0.19,0.573,1.075,0.752,1.66c0.481,1.579,0.728,3.327,1.187,4.947c0.115,0.404,0.391,1.686,0.119,2.018c-0.148,0.439-0.885,0.615-1.306,0.791c0.014,0.08,0.024,0.159,0.036,0.237c0.609-0.09,1.162-0.373,1.707-0.56c1.063-0.354,2.066-0.65,3.089-1.029c-0.017-0.092-0.027-0.186-0.041-0.275c-0.437,0.116-0.773,0.248-1.386,0.236c-0.08-0.068-0.157-0.133-0.235-0.199c-0.067-0.21-0.134-0.422-0.199-0.632c0.043-0.499,0.683-1.421,0.91-1.86c0.673-1.293,1.262-2.6,1.856-3.955c0.229-0.519,0.754-1.275,0.832-1.857c0.184,0.111,0.133,0.438,0.197,0.672c0.135,0.475,0.211,0.98,0.355,1.503c0.281,1,0.391,2.075,0.673,3.126c0.104,0.387,0.261,1.048,0.08,1.464c-0.179,0.404-0.841,0.673-1.267,0.83c0.017,0.084,0.037,0.183,0.08,0.238c0.004,0.007,0.906-0.288,1.064-0.354c1.104-0.471,2.236-0.959,3.361-1.386c-0.015-0.093-0.024-0.187-0.039-0.274C79.117,57.043,78.477,57.407,78.092,57.168L78.092,57.168z M96.803,60.498c-0.143,0.13-0.354,0.163-0.514,0.277c-0.501,0.359-1.025,0.962-1.385,1.463c-0.288,0.402-0.534,0.843-0.791,1.268c-0.112,0.188-0.137,0.402-0.277,0.553v0.08c0.346-0.059,0.549-0.283,0.792-0.436c0.659-0.408,1.249-0.781,1.858-1.225c0.295-0.217,0.515-0.551,0.83-0.754c0.029-0.473,0.125-0.844-0.077-1.188C97.115,60.512,96.975,60.496,96.803,60.498z M96.329,61.921c-0.239,0.177-0.47,0.423-0.712,0.595c-0.208,0.146-0.458,0.224-0.633,0.396h-0.04c0.13-0.408,0.817-1.107,1.146-1.344c0.17-0.124,0.383-0.157,0.557-0.279h0.156c0.036,0.046,0.034,0.044,0.08,0.08C96.846,61.667,96.523,61.774,96.329,61.921L96.329,61.921z M10.825,63.465c-0.166-0.502-0.278-0.99-0.435-1.465c-0.079-0.246-0.062-0.525-0.199-0.713v-0.118c0.269,0.097,0.679,0.087,0.911,0.238h0.201c-0.045-0.206-0.086-0.552-0.201-0.713c-0.12-0.195-0.886-0.197-1.106-0.354c-0.312-0.244-0.607-0.947-0.832-1.307c-0.56-0.887-1.302-1.832-2.137-2.453c-0.443-0.329-0.751-0.671-1.544-0.673c-0.092,0.065-0.185,0.132-0.276,0.198c-0.178,0.789,0.139,2.248,0.592,2.611v0.078c-0.189-0.051-0.393-0.152-0.514-0.275h-0.04c0.007,0.227,0.051,0.522,0.158,0.672c0.046,0.195,0.362,0.354,0.554,0.396c0.248,1.037,0.592,2.101,0.95,3.05c0.289,0.758,0.436,1.48,0.75,2.213c0.155,0.356,0.522,0.617,0.634,0.99h0.117c-0.089-0.334-0.271-0.646-0.394-0.949c-0.364-0.875-0.653-1.804-0.952-2.688C6.868,61.62,6.734,61.057,6.548,60.5c-0.069-0.21-0.049-0.427-0.158-0.595v-0.039c0.269,0.049,0.43,0.188,0.634,0.276c0.461,0.201,0.903,0.277,1.385,0.476c0.353,0.146,0.796,0.347,1.228,0.396c0.048,0.359,0.253,1.301,0.435,1.545v0.117c-0.602-0.412-0.589-1-1.663-0.91c-0.054,0.063-0.128,0.117-0.197,0.158c-0.098,0.244-0.104,0.646,0,0.909c0.257,0.646,1.072,1.991,1.741,2.179c0.257,0.184,0.634-0.043,0.75-0.24c0.242,0.127,0.293,0.682,0.395,0.951c0.212,0.558,0.522,1.289,1.031,1.543v0.041h0.083c-0.066-0.447-0.318-0.851-0.475-1.229C11.387,65.223,11.113,64.324,10.825,63.465L10.825,63.465z M9.678,60.26C9.26,60.23,8.905,60.067,8.57,59.945c-0.894-0.332-1.703-0.615-2.492-0.991c-0.095-0.358-0.76-1.644-0.396-2.095c0.026-0.04,0.053-0.081,0.079-0.12c0.081-0.019,0.077-0.011,0.119-0.039c1.219,0.146,2.442,1.629,3.046,2.452c0.236,0.32,0.43,0.799,0.752,1.029V60.26L9.678,60.26z M10.311,63.701c-0.12,0.146-0.237,0.291-0.356,0.436c-0.105,0.078-0.223,0.109-0.316,0.198c-0.68-0.021-0.704-0.686-0.989-1.108c0.005-0.389,0.152-0.39,0.315-0.594c0.092-0.007,0.112-0.007,0.158-0.037c0.614,0.004,0.753,0.278,1.109,0.515C10.29,63.344,10.327,63.445,10.311,63.701L10.311,63.701z M33.578,69.794c-0.165-0.271-0.49-0.342-0.713-0.554c-0.069-0.023-0.04-0.007-0.079-0.039c0.51-0.264,1.053-0.555,1.583-0.79c0.142,0.158,0.801,0.792,1.029,0.671c0.04-0.012,0.079-0.023,0.118-0.038c-0.013-0.224-0.025-0.448-0.04-0.673c-0.499-0.498-1.234-0.91-2.059-1.066v0.039h-0.039c0.093,0.273,0.398,0.534,0.636,0.672v0.119c-0.469,0.068-0.885,0.295-1.307,0.437c-0.289,0.093-0.638,0.08-0.873,0.235h-0.117c0.171-0.479,0.737-0.871,1.028-1.267c0.576-0.776,1.033-1.728,1.94-2.176c-0.024-0.365-1.076-1.12-1.464-0.871c-0.097,0.051-0.029-0.021-0.079,0.078c-0.059,0.144,0.137,0.321,0.079,0.554c-0.076,0.305-0.831,1.74-1.029,1.9v0.041c-0.408-0.139-0.718-0.523-1.107-0.713c0.069-0.364,0.375-0.644,0.554-0.91c0.453-0.684,0.816-1.335,1.503-1.782c-0.006-0.526-0.855-1.075-1.425-1.065c0.002,0.242,0.125,0.379,0.08,0.592c-0.14,0.646-0.435,1.297-0.672,1.861c-0.156,0.364-0.226,0.799-0.476,1.065c-0.054,0.03-0.492-0.006-0.594-0.077c-0.149-0.002-0.298,0.005-0.394,0.038v0.079c0.666,0.645,1.387,0.865,2.295,1.268c-0.126,0.655-0.786,1.092-1.108,1.584c-0.166,0-0.3-0.011-0.395-0.08c-0.091,0.017-0.098,0.021-0.158,0.041c0.016,0.582,0.5,1.077,0.987,1.188c0.327-0.366,0.737-0.543,1.228-0.751c0.449,0.468,0.578,1.137,0.751,1.897c0.075,0.332-0.047,0.697,0.04,0.988c0.152,0.514,0.426,0.667,0.672,1.027h0.277c0.174-0.93-0.253-1.832-0.475-2.571C33.71,70.43,33.644,70.111,33.578,69.794L33.578,69.794z M96.09,63.108c-0.238,0.202-0.57,0.296-0.83,0.475c-0.4,0.282-0.758,0.659-1.146,0.95c-0.177,0.134-0.435,0.253-0.556,0.436c-0.199,0.299-0.16,0.806-0.396,1.067v0.157c0.314-0.114,0.464-0.483,0.713-0.672c0.307-0.23,0.563-0.536,0.87-0.754c0.192-0.133,0.411-0.207,0.594-0.355c0.125,0.023,0.115,0.037,0.199,0.081c-0.021,1.005-0.549,1.714-0.871,2.454c-0.093,0.215-0.121,0.551-0.276,0.71c-0.074,0.076-0.229,0.094-0.314,0.157c-0.264,0.291-0.528,0.58-0.794,0.873c-0.25,0.344-0.365,0.803-0.632,1.146c-0.002,0.114-0.002,0.216,0.037,0.276c0.041,0.031,0.11,0.059,0.16,0.08c0.51-0.483,1.004-0.887,1.424-1.465c0.658-0.904,0.986-2.047,1.465-3.125c0.3-0.683,0.734-1.354,0.711-2.334c-0.047-0.045-0.084-0.102-0.117-0.158L96.09,63.108L96.09,63.108z M93.32,69.361V69.4h-0.04c0.069-0.475,0.43-0.606,0.596-0.952h0.079C93.904,68.842,93.605,69.194,93.32,69.361L93.32,69.361z M34.171,69.993c-0.08,0.342,0.76,1.106,1.027,1.308c0.133,0.1,0.312,0.328,0.515,0.235c0.104-0.008,0.136-0.019,0.199-0.04c0.046-0.105,0.115-0.24,0.039-0.354C35.93,70.645,34.64,70.088,34.171,69.993z M37.97,73.037c0.067,0.034,0.122,0.021,0.198-0.039c0.139-0.113,0.063-0.313,0.159-0.475c0.222-0.159,0.615-0.118,0.911-0.199c0.809-0.213,1.753-0.198,2.65-0.396c0.425-0.093,1.128,0.16,1.464-0.037c0.04-0.016,0.081-0.026,0.118-0.043c-0.019-0.517-1.009-0.737-1.545-0.588c-0.237,0.066-0.513,0.213-0.751,0.275c-0.185,0.014-0.37,0.027-0.555,0.038c-0.062-0.644-0.38-1.144-0.395-1.817c0.595-0.013,1.341-0.091,1.739-0.316c-0.008-0.2-0.045-0.2-0.118-0.314c-0.453-0.107-1.23-0.126-1.583,0.116c-0.1-0.004-0.147-0.004-0.197-0.039c-0.221-0.28-0.116-0.851-0.316-1.146v-0.158c0.426-0.092,1.122-0.168,1.345-0.475c0.031-0.041,0.014-0.011,0.039-0.078c-0.036-0.035-0.051-0.068-0.079-0.119c-0.619-0.156-0.887-0.049-1.423,0.158c-0.167-0.535,0.034-0.959-0.514-1.108c0.117-0.203,0.506-0.194,0.751-0.276c0.382-0.126,0.817-0.296,1.148-0.474c0.026-0.068,0.007-0.04,0.04-0.08c-0.022-0.2-0.078-0.193-0.159-0.316c-0.571-0.044-1.027,0.011-1.346,0.316h-0.076c0.047-0.295,0.231-0.718,0.394-0.949c0.112-0.162,0.318-0.14,0.396-0.356h0.04V64.1c-0.081-0.104-0.159-0.211-0.238-0.314c-0.186-0.13-0.454-0.143-0.632-0.279c-0.263-0.004-0.515-0.003-0.672,0.079c0.021,0.152,0.089,0.248,0.119,0.356c0.109,0.408-0.284,1.669-0.436,1.859c-0.123,0.154-1.551,0.672-1.939,0.555c-0.092-0.029-0.36-0.164-0.435-0.239c-0.032-0.039-0.015-0.008-0.04-0.077c0.561-0.527,0.965-1.702,1.741-1.939c0.014-0.064,0.027-0.131,0.041-0.196c-0.194-0.2-1.135-1.188-1.622-0.871c-0.04,0.014-0.079,0.022-0.117,0.038c0,0.338,0.168,0.593,0.078,0.949c-0.182,0.711-0.587,1.556-0.95,2.139c-0.218,0.35-0.693,0.729-0.712,1.229c0.646-0.064,0.802-0.731,1.304-0.912c0.146,0.135,0.29,0.267,0.436,0.396c0.207,0.311,0.168,0.778,0.276,1.186c0.185,0.856,0.371,1.715,0.554,2.571c0.025,0.425,0.052,0.845,0.08,1.269C37.246,72.28,37.561,72.945,37.97,73.037L37.97,73.037z M39.233,70.032c0.031,0.368,0.258,1.407,0.436,1.662c0.001,0.024,0.001,0.054,0.001,0.08c-0.477,0.102-0.973,0.239-1.504,0.237c-0.082-0.564-0.352-1.061-0.355-1.662C38.418,70.338,38.731,70.094,39.233,70.032z M36.939,66.75c0.063-0.107,1.113-0.273,1.228-0.199c0.42,0.195,0.27,0.813,0.514,1.188c-0.083,0.194-1.047,0.487-1.345,0.514C37.283,67.834,37.213,66.977,36.939,66.75L36.939,66.75z M38.76,68.253h0.04c0.076,0.36,0.119,0.978,0.317,1.267c-0.142,0.348-1.016,0.317-1.346,0.516c-0.138-0.083-0.32-1.076-0.316-1.346C37.757,68.662,38.541,68.402,38.76,68.253L38.76,68.253z M31.914,70.506c-0.06,0.135-0.053,0.354-0.117,0.514c-0.342,0.84-0.454,1.015,0.079,1.82c0.237,0,0.269-0.037,0.396-0.119C32.429,72.064,32.454,70.814,31.914,70.506L31.914,70.506z M77.023,70.744c-1.154-0.285-2.125,0.285-3.325,0.199c-0.114-0.121-0.2-0.19-0.275-0.356c-0.835,0.024-1.757,1.886-0.909,2.453c0.453,0.308,1.744,0.129,2.295,0c0.306-0.071,0.783-0.139,1.027,0.038c0.332,0.247,0.273,1.182,0.157,1.703c-0.132,0.975-0.265,1.951-0.396,2.929c-0.117,0.593-0.236,1.185-0.356,1.779c0.606-0.003,1.178-0.623,1.349-1.069c0.1-0.258,0.047-0.502,0.119-0.791c0.209-0.83,0.237-1.82,0.436-2.689c0.127-0.563,0.041-1.1,0.156-1.621c0.086-0.393,0.143-1.696,0.041-2.059C77.281,71.059,77.126,70.901,77.023,70.744z M22.857,82.695c-0.135-0.102-0.229-0.283-0.356-0.395c-0.473-0.42-1.029-0.826-1.543-1.188c-0.426-0.298-1.008-0.476-1.387-0.829c-0.01-0.086,0.123-0.296,0.041-0.516c-0.335-0.896-1.589-1.933-2.374-2.412c-0.363-0.225-0.972-0.328-1.305-0.555c-0.246-0.017-0.374-0.025-0.435,0.155c-0.097,0.218,0.209,0.521,0.315,0.675c0.271,0.381,0.581,0.826,0.95,1.104c0.276,0.209,0.591,0.392,0.83,0.635h0.119c-0.154-0.426-0.609-0.657-0.949-0.909c-0.311-0.229-0.449-0.632-0.712-0.909c0.021-0.125,0.035-0.115,0.08-0.199c1.093,0.009,1.802,1.012,2.294,1.662c0.22,0.291,0.571,0.461,0.594,0.951c-0.116,0-0.216,0-0.276-0.041h-0.119c0.188,0.522,0.824,0.479,1.267,0.754c0.888,0.549,1.603,1.409,2.373,2.094c0.262,0.234,0.719,0.466,0.791,0.873c-0.537-0.028-0.917-0.327-1.261-0.555c-0.614-0.4-1.597-1.1-2.019-1.662c-0.08-0.104-0.106-0.263-0.199-0.355c-0.109-0.111-0.261-0.145-0.355-0.275h-0.158c-0.039,0.41,0.407,0.705,0.671,0.948c0.819,0.75,1.696,1.442,2.73,1.979c0.373,0.191,1.053,0.521,1.465,0.275C23.874,83.434,23.227,82.975,22.857,82.695L22.857,82.695z M47.226,85.307c-2.014-1.379-4.985-2.775-8.427-2.689c-0.167,0.104-0.503,0.021-0.711,0.078c-0.288,0.076-0.464,0.223-0.672,0.355c-0.008,0.971,1.446,1.496,2.255,1.698c0.483,0.123,0.909-0.104,1.188-0.198c0.215-0.82-0.776-0.94-1.227-1.347h-0.081v-0.038c3.036-0.119,5.308,0.729,7.043,2.02c0.433,0.322,0.93,0.783,1.148,1.306c0.081,0.194,0.116,0.515,0,0.674c-0.159,0.44-0.685,0.401-1.188,0.515c-1.162,0.267-2.755-0.391-3.285-0.91c-0.108,0.189,0.049,0.48-0.118,0.674c-0.176,0.478-0.788,0.354-1.346,0.474c-0.917,0.199-2.353-0.271-2.888-0.632c-0.149-0.104-0.257-0.286-0.396-0.396c-0.007-0.103-0.018-0.136-0.041-0.199c0.081-0.073,0.177-0.187,0.237-0.275c1.139-0.085,1.718-0.027,2.376,0.596c-0.017,0.078-0.01,0.073-0.041,0.114c-0.074,0.152-0.245,0.17-0.474,0.161v0.074c0.417,0.004,0.593-0.059,0.83-0.197c0.013-0.079,0.027-0.159,0.04-0.236c-0.136-0.141-0.231-0.328-0.396-0.438c-0.65-0.426-1.991-0.641-2.729-0.156c-0.116,0.561,0.232,0.864,0.554,1.105c0.646,0.488,1.191,0.771,2.098,1.029c0.291,0.082,0.55,0.008,0.871,0.076c0.28,0.064,0.765,0.079,1.068,0c0.504-0.128,1.205-0.658,0.632-1.268v-0.037c0.299,0.109,0.544,0.402,0.831,0.556c0.761,0.397,2.021,0.726,3.167,0.476c0.562-0.125,1.143-0.125,1.303-0.635c0.179-0.277-0.068-0.668-0.156-0.826C48.322,86.151,47.836,85.721,47.226,85.307L47.226,85.307z M39.906,83.485c0.14,0.094,0.22,0.291,0.356,0.396c-0.003,0.1-0.004,0.148-0.04,0.199c-0.257,0.697-1.706,0.182-2.058-0.081c-0.11-0.08-0.153-0.248-0.236-0.354c0.015-0.082,0.01-0.076,0.041-0.116c0.108-0.306,0.417-0.203,0.671-0.354C39.142,83.174,39.596,83.274,39.906,83.485z M76.625,83.881h-0.396c-0.262,0.209-0.692,0.236-0.991,0.396c-0.263,0.141-0.581,0.332-0.829,0.515c-0.207,0.148-0.326,0.418-0.516,0.592c0.004,0.197,0.008,0.229,0.16,0.277c0.039,0.029,0.01,0.018,0.075,0.04c0.042-0.047,0.08-0.063,0.12-0.12c0.033-0.023-0.027-0.104-0.04-0.232c0.384-0.386,0.667-0.598,1.228-0.832c0.144-0.059,0.447-0.233,0.634-0.119h0.079c-0.026,0.391-0.916,1.591-1.188,1.781v0.115c0.729-0.188,1.215-1.643,1.702-2.174c-0.013-0.09-0.01-0.111-0.04-0.157L76.625,83.881L76.625,83.881z M73.459,86.809c-0.234,0.209-0.807,0.229-1.066,0.435h-0.041c0.104-0.149,0.291-0.213,0.396-0.354c0.076-0.104,0.107-0.226,0.197-0.315c-0.018-0.081-0.01-0.075-0.039-0.117v-0.08c-1.155-0.212-3.084,0.784-3.68,1.308c-0.155,0.135-0.248,0.336-0.396,0.477c0.003,0.111,0.016,0.168,0.039,0.236c0.701,0.047,2.016-0.383,2.174-0.949c0.031-0.025,0.012-0.002,0-0.04v-0.079c-0.479-0.027-1.124,0.075-1.422,0.355h-0.039c0.26-0.396,1.223-0.746,1.739-0.91c0.172-0.053,0.55-0.149,0.714-0.039c0.037,0.015,0.077,0.025,0.117,0.039c-0.094,0.396-0.657,0.838-1.029,0.949v0.08c0.607-0.141,1.163-0.416,1.7-0.634c0.368-0.149,0.786-0.188,1.108-0.396c0.229-0.149,1.008-1.207,1.068-1.504C74.086,85.409,74.012,86.313,73.459,86.809L73.459,86.809z M70.333,87.6v0.119c-0.075,0.049-0.129,0.156-0.198,0.196c-0.205,0.12-0.479,0.106-0.674,0.238c-0.09-0.011-0.109-0.009-0.156-0.041h-0.039C69.373,87.775,70.025,87.621,70.333,87.6L70.333,87.6z M53.835,91.317c0.015-0.037,0.025-0.078,0.039-0.117c-0.976-0.04-1.953-0.079-2.927-0.119c-0.123,0.082-0.312,0.035-0.475,0.079c-0.202,0.059-0.426,0.15-0.593,0.239c0.026,0.067,0.008,0.038,0.04,0.077c0.238,0.188,1.624,0.199,1.9,0h0.078v-0.077c-0.419-0.134-1.183,0.2-1.503,0h-0.041v-0.041c1.052-0.073,2.23-0.044,3.325-0.04c-0.105,0.072-0.328,0.051-0.436,0.119c-0.039,0.014-0.078,0.027-0.117,0.039v0.08c0.238,0.037,0.475,0.078,0.711,0.117c0.037,0.041-0.004,0.004,0.039,0.037c-0.35,0.233-1.254,0.139-1.581-0.037v-0.08c-0.178-0.082-0.991,0.084-1.148,0.117c-0.133,0.03-0.27-0.014-0.357,0.039c-0.165,0.01-0.181,0.029-0.276,0.079c0.022,0.128,0.035,0.115,0.08,0.198c0.255,0.06,0.696,0.064,0.987,0.156v-0.039h0.04v-0.039c-0.148-0.057-0.559-0.025-0.713-0.115h-0.079c0.132-0.104,1.425-0.278,1.663-0.119c0.067,0.023,0.039,0.007,0.079,0.039c-0.211,0.038-0.424,0.08-0.634,0.117c0.025,0.066,0.009,0.039,0.04,0.078c0.065,0.045,0.193,0.045,0.316,0.039c-0.04,0.074-0.054,0.109-0.119,0.158c0.013,0.023,0.027,0.051,0.04,0.078c0.561,0,1.031-0.057,1.502-0.156c0.28-0.062,0.624,0.052,0.831-0.08h0.317v-0.078c-0.539-0.002-1.885-0.055-2.215,0.158h-0.117c0.033-0.043-0.004-0.004,0.038-0.041c0.155-0.18,0.471-0.09,0.75-0.156c0.44-0.104,1.168-0.284,1.544,0c0.105,0.064,0.04-0.008,0.039,0.117c0.107-0.002,0.181-0.002,0.236-0.036h0.277v-0.081c-0.359-0.088-0.889-0.251-1.188-0.434C54.057,91.488,54.135,91.344,53.835,91.317L53.835,91.317z M13.635,18.359c-0.088,0.32-0.274,0.593-0.395,0.87c-0.268,0.613-0.507,1.225-0.751,1.822c-0.207,0.496-0.335,1.295-0.633,1.699v0.079c0.416-0.074,0.698-0.493,0.949-0.751c0.617-0.634,1.92-2.22,1.9-3.402c-0.062-0.061-0.119-0.162-0.159-0.237C14.3,18.38,13.982,18.353,13.635,18.359z M13.794,20.022c-0.181,0.298-0.281,0.592-0.476,0.871c-0.178,0.255-0.46,0.452-0.633,0.713h-0.041c0.051-0.302,0.214-0.546,0.319-0.792c0.235-0.561,0.396-1.118,0.671-1.621c0.152,0.003,0.268,0.015,0.356,0.078c0.095,0.052,0.028-0.018,0.079,0.08C14.15,19.548,13.89,19.862,13.794,20.022L13.794,20.022z M84.023,7.875c-0.414-0.416-0.729-0.938-1.147-1.346V6.49c-0.205,0.073-0.899,0.688-1.028,0.871c-0.25-0.095-0.391-0.365-0.594-0.514c-0.676-0.508-1.313-1.167-2.49-1.147c-0.148,0.115-0.367,0.118-0.556,0.197c-0.53,0.23-1.083,0.688-1.305,1.227c-0.249,0.602,0.004,1.491,0.196,1.939c0.392,0.904,1.03,1.667,1.582,2.414c0.457,0.615,0.973,1.252,1.819,1.464c0.956,0.238,1.422-0.884,1.781-1.308c0.37-0.435,1.182-0.539,1.464-1.107c0.104-0.207,0.034-0.615-0.039-0.791c-0.18-0.426-1.066-1.622-1.425-1.859c0.024-0.239,0.135-0.247,0.235-0.396c0.248,0.121,0.338,0.471,0.516,0.673c0.227,0.258,0.546,0.396,0.791,0.632c0.378,0.003,0.604-0.094,0.79-0.277h0.041C84.561,8.243,84.212,8.06,84.023,7.875L84.023,7.875z M81.77,12.148c-0.699,0.165-1.047-0.293-1.424-0.673c-0.938-0.935-1.57-2.093-2.298-3.244c-0.247-0.396-0.885-1.134-0.554-1.702h0.156c0.199,0.299,0.539,0.507,0.754,0.792c0.591,0.784,1.313,1.469,1.898,2.255c0.359,0.485,0.758,0.94,1.106,1.424c0.178,0.249,0.315,0.565,0.556,0.751C81.924,11.931,81.848,12.015,81.77,12.148L81.77,12.148z M82.361,9.339c0.32,0.439,0.755,0.688,0.751,1.463c-0.122,0.116-0.157,0.224-0.356,0.276c-0.039,0.032-0.011,0.015-0.078,0.041c-0.56-0.932-1.367-1.711-2.017-2.573c-0.212-0.282-0.541-0.511-0.752-0.791c-0.362-0.48-0.793-0.864-1.188-1.305c-0.113-0.131-0.168-0.257-0.313-0.357c0.033-0.086,0.031-0.057,0.076-0.118c0.672,0.006,0.994,0.458,1.386,0.753C80.837,7.453,81.648,8.354,82.361,9.339L82.361,9.339z"/><radialGradient id="SVGID_43_" cx="251.8086" cy="-408.3613" r="72.7509" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#000" stop-opacity="0"/><stop offset=".8022" stop-color="#000" stop-opacity=".08"/><stop offset="1" stop-color="#000" stop-opacity=".3882"/></radialGradient><path style="opacity:.38;fill:url(#SVGID_43_);" d="M49.885,17.037c0.014-0.606-0.392-1.27-0.392-1.27l-0.025-0.058c0,0-0.487-0.949-1.302-1.228c-0.815-0.278-1.478,0.342-1.478,0.342s-0.114,0.131-0.429,0.494c-0.313,0.364-0.507,0.666-1.198,0.938c-0.692,0.271-1.379,0.204-1.743,0.033c-0.364-0.172-0.457-0.537-0.457-0.537s-0.229-0.722-0.313-1.049c-0.086-0.331-0.309-1.694-0.309-1.694s-0.491-2.747-0.534-3.304c0,0,1.475-0.126,3.687-0.775c2.299-0.673,3.043-1.206,3.043-1.206s-0.432-0.156-0.484-0.662c-0.051-0.507-0.089-1.19-0.089-1.19s-0.089-0.5,0.483-1.139c0.571-0.64,1.354-0.863,1.762-0.953c0.41-0.089,1.281-0.17,2.093-0.134c0.812,0.038,1.267,0.112,1.593,0.291c0.328,0.178,0.357,0.61,0.357,0.61l-0.008,1.146c0,0-0.037,0.402,0.261,0.529c0,0,0.505,0.305,2.196,0.133c0,0,0.72-0.126,1.846-0.46c1.125-0.335,4.129-1.229,4.554-1.341c0.425-0.111,0.953-0.291,1.646-0.469c0.691-0.179,2.039-0.626,2.308-0.73c0.271-0.104,1.812-0.618,2.927-0.81c1.115-0.195,2.227-0.186,2.813,0.149c0,0,0.357,0.304,0.521,0.662c0.163,0.358,0.478,0.863,0.923,1.088c0.454,0.227,0.752,0.371,1.875,0.273c0,0,0.022-0.096-0.395-0.37c-0.417-0.277-0.991-0.701-0.991-0.701S74.29,3.4,74.215,3.198c-0.072-0.202-0.043-0.306-0.043-0.306l0.877-1.406c0,0,0-0.172,0.508-0.238c0.506-0.067,1.071-0.134,1.74-0.313c0.67-0.178,0.788-0.312,0.788-0.312l0.58,0.178c0,0,3.546,2.853,4.655,3.583l0.199-0.239c0,0,0.436,0.018,0.826,0.172c0.394,0.154,0.979,0.562,0.979,0.562s1.612,1.31,2.071,2.2l0.223,0.679l-0.102,0.161c0,0,0.918,1.307,2.096,2.602c0,0,1.227,1.664,1.689,2.09c0,0-0.108-0.399-0.201-0.849l0.336-0.226l0.203-0.144l0.617,0.259c3.573,4.811,6.432,10.424,8.141,16.328l-0.12,0.484l0.395,0.501c1.128,4.212,1.728,8.643,1.728,13.211c0,1.122-0.036,2.236-0.107,3.339l-0.304,0.511l0.225,0.555c-2.231,26.1-24.124,46.584-50.801,46.584c-18.502,0-34.702-9.854-43.637-24.6L7.674,68.2l-0.205-0.153c-3.387-5.742-5.682-12.205-6.595-19.103l0.212-0.525L0.75,47.936c-0.213-1.892-0.322-3.812-0.322-5.756c0-2.985,0.255-5.909,0.748-8.755l0.25-0.562l-0.087-0.328c1.157-6.048,3.383-11.716,6.474-16.799l0.684-0.384l0.081,0.032c0,0,0.233-0.169,0.354-0.217l0.076-0.023c0,0,1.179-1.971,1.625-2.601c0,0,0.542-0.348,0.745-0.407c0,0,0.124-0.016,0.189,0.076c0,0,0.496-0.432,1.699-2.054c0.004-0.005,0.007-0.011,0.012-0.017c0,0-0.114-0.076-0.131-0.174c-0.018-0.097,0.108-0.591,0.173-0.717c0.065-0.126,0.108-0.156,0.108-0.156s1.722-2.032,3.151-3.238c0,0,0.26-0.202,0.678-0.25c0,0,1.472-0.613,3.264-2.184c0,0,0.051-0.289,0.478-0.858c0.428-0.57,1.456-1.163,2.222-1.337c0.764-0.174,0.896-0.038,0.896-0.038l0.064,0.065l0.515,0.766c0,0,0.565-0.316,1.413-0.604c0.847-0.289,0.979-0.262,0.979-0.262l0.825,1.336l-0.987,2c0,0-0.644,1.421-1.655,2.185c0,0-0.472,0.284-1.12,0.127c-0.648-0.157-1.072,0.333-1.072,0.333l-0.17,0.14c0,0,0.14-0.024,0.346-0.103c0,0,0.158,0.065,0.274,0.223c0.114,0.158,0.913,1.175,0.913,1.175s0.005,0.837-0.415,1.938c-0.419,1.1-1.467,2.891-1.467,2.891s-0.733,1.424-1.075,2.253c-0.342,0.829-0.515,1.765-0.488,2.262c0,0,0.187,0.062,0.707-0.202c0.655-0.332,1.083,0.027,1.083,0.027s0.719,0.53,1.041,0.881c0.262,0.289,0.802,1.765,0.209,3.224c0,0-0.402,1.008-1.377,1.724c0,0-0.216,0.332-1.529,0.174c-0.368-0.043-0.585-0.276-1.372-0.2c-0.785,0.077-1.231,0.815-1.231,0.815l0.013-0.024c-0.692,0.999-1.154,2.458-1.154,2.458l-0.057,0.165c0,0-0.241,0.509-0.292,1.752c-0.053,1.284,0.284,3.109,0.284,3.109s7.876-1.387,9.88-0.055l0.58,0.532c0,0,0.046,0.174-0.031,0.376c-0.08,0.204-0.375,0.673-0.987,1.113c-0.611,0.438-1.222,1.583-0.313,2.304c1.034,0.818,1.691,0.766,3.43,0.468c1.74-0.297,2.898-1.269,2.898-1.269s0.972-0.72,0.783-1.628c-0.188-0.908-1.017-1.189-1.017-1.189s-0.658-0.423-0.141-1.238c0,0,0.141-0.689,2.553-1.316c2.414-0.626,6.812-1.52,10.556-1.989c0,0-2.539-8.223-0.737-9.289c0,0,0.438-0.296,1.224-0.408l0.721-0.037c0.131-0.027,0.344,0.005,0.796,0.045c0.452,0.038,1.001,0.076,1.678-0.441c0.676-0.519,0.697-0.819,0.697-0.819"/></svg> \ No newline at end of file diff --git a/src/assets/javascripts/general.js b/src/assets/javascripts/general.js index 7b8f9dac..592f604d 100644 --- a/src/assets/javascripts/general.js +++ b/src/assets/javascripts/general.js @@ -1,47 +1,28 @@ "use strict" + +import utils from "./utils.js" + window.browser = window.browser || window.chrome let exceptions function isException(url) { - for (const item of exceptions.url) if (item == `${url.protocol}//${url.host}`) return true + for (const item of exceptions.url) if (item == url.href) return true for (const item of exceptions.regex) if (new RegExp(item).test(url.href)) return true return false } function init() { - return new Promise(resolve => { - browser.storage.local.get("options", r => { - if (r.options) exceptions = r.options.exceptions - resolve() - }) + return new Promise(async resolve => { + const options = await utils.getOptions() + if (options) exceptions = options.exceptions + resolve() }) } init() browser.storage.onChanged.addListener(init) -async function initDefaults() { - return new Promise(resolve => - browser.storage.local.set( - { - options: { - exceptions: { - url: [], - regex: [], - }, - theme: "detect", - popupServices: ["youtube", "twitter", "instagram", "tiktok", "imgur", "reddit", "quora", "translate", "maps"], - network: "clearnet", - networkFallback: true, - }, - }, - () => resolve() - ) - ) -} - export default { isException, - initDefaults, } diff --git a/src/assets/javascripts/get-localstorage.js b/src/assets/javascripts/get-localstorage.js deleted file mode 100644 index 66740408..00000000 --- a/src/assets/javascripts/get-localstorage.js +++ /dev/null @@ -1,15 +0,0 @@ -window.browser = window.browser || window.chrome - -browser.storage.local.get(["localstorage", "tmp"], r => { - let localstorageJson = r.localstorage - const frontend = r.tmp[0] - const items = r.tmp[1] - localstorageJson[frontend] = {} - - for (const item of items) { - let tmp = localStorage.getItem(item) - if (tmp) localstorageJson[frontend][item] = tmp - } - - browser.storage.local.set({ localstorage: localstorageJson }) -}) diff --git a/src/assets/javascripts/services.js b/src/assets/javascripts/services.js index 01523d52..971fb615 100644 --- a/src/assets/javascripts/services.js +++ b/src/assets/javascripts/services.js @@ -1,65 +1,44 @@ -window.browser = window.browser || window.chrome - import utils from "./utils.js" -let config, options, redirects, targets +window.browser = window.browser || window.chrome + +let config, options function init() { return new Promise(async resolve => { - browser.storage.local.get(["options", "redirects", "targets"], r => { - options = r.options - redirects = r.redirects - targets = r.targets - fetch("/config/config.json") - .then(response => response.text()) - .then(configData => { - config = JSON.parse(configData) - resolve() - }) - }) + options = await utils.getOptions() + config = await utils.getConfig() + resolve() }) } init() browser.storage.onChanged.addListener(init) -function fetchFrontendInstanceList(service, frontend, redirects, options, config) { - let tmp = [] - if (config.services[service].frontends[frontend].instanceList) { - for (const network in config.networks) { - tmp.push(...redirects[network], ...options[frontend][network].custom) - } - } else if (config.services[service].frontends[frontend].singleInstance) tmp = config.services[service].frontends[frontend].singleInstance - return tmp -} - -function all(service, frontend, options, config, redirects) { +function all(service, frontend, options, config) { let instances = [] if (!frontend) { for (const frontend in config.services[service].frontends) { - instances.push(...fetchFrontendInstanceList(service, frontend, redirects[frontend], options, config)) + if (options[frontend]) { + instances.push(...options[frontend]) + } } - } else { - instances.push(...fetchFrontendInstanceList(service, frontend, redirects[frontend], options, config)) + } else if (options[frontend]) { + instances = options[frontend] } return instances } function regexArray(service, url, config, frontend) { - if (config.services[service].targets == "datajson") { - for (const instance of targets[service]) { - if (instance.startsWith(utils.protocolHost(url))) return true - } - } else { - const targetList = config.services[service].targets - if (frontend && config.services[service].frontends[frontend].excludeTargets) - for (const i in config.services[service].frontends[frontend].excludeTargets) { - targetList = targetList.splice(i, 1) - } - for (const targetString in targetList) { - const target = new RegExp(targetList[targetString]) - if (target.test(url.href)) return true - } + let targetList = config.services[service].targets + if (frontend && config.services[service].frontends[frontend].excludeTargets) { + targetList = targetList.filter(val => + !config.services[service].frontends[frontend].excludeTargets.includes(targetList.indexOf(val)) + ) + } + for (const targetString in targetList) { + const target = new RegExp(targetList[targetString]) + if (target.test(url.href)) return true } return false } @@ -69,39 +48,30 @@ function redirect(url, type, initiator, forceRedirection) { let randomInstance let frontend for (const service in config.services) { - if (!forceRedirection && !options[service].enabled) continue - if (config.services[service].embeddable && type != options[service].redirectType && options[service].redirectType != "both") continue if (!config.services[service].embeddable && type != "main_frame") continue - if (Object.keys(config.services[service].frontends).length > 1) { - if ( - type == "sub_frame" && config.services[service].embeddable - && - !config.services[service].frontends[options[service].frontend].embeddable - ) frontend = options[service].embedFrontend - else frontend = options[service].frontend - } else frontend = Object.keys(config.services[service].frontends)[0] + frontend = options[service].frontend ?? Object.keys(config.services[service].frontends)[0] if (!regexArray(service, url, config, frontend)) continue - if (initiator && all(service, null, options, config, redirects).includes(initiator.origin)) return "BYPASSTAB" + if ( + initiator + && + options[frontend].includes(initiator.origin) + ) return "BYPASSTAB" + + let instanceList = options[frontend] + if (instanceList === undefined) break + if (instanceList.length === 0) return + + randomInstance = utils.getRandomInstance(instanceList) - if (config.services[service].frontends[frontend].instanceList) { - let instanceList = [...options[frontend][options.network].enabled, ...options[frontend][options.network].custom] - if (instanceList.length === 0 && options.networkFallback) instanceList = [...options[frontend].clearnet.enabled, ...options[frontend].clearnet.custom] - if (instanceList.length === 0) return - randomInstance = utils.getRandomInstance(instanceList) - } else if (config.services[service].frontends[frontend].singleInstance) randomInstance = config.services[service].frontends[frontend].singleInstance break } - if (!frontend || !randomInstance) return // Here is a (temperory) space for defining constants required in 2 or more switch cases. - // When possible, try have the two switch cases share all their code as done with searx and searxng. - // Do not do that when they do not share 100% of their code. - const mapCentreRegex = /@(-?\d[0-9.]*),(-?\d[0-9.]*),(\d{1,2})[.z]/ const dataLatLngRegex = /!3d(-?[0-9]{1,}.[0-9]{1,})!4d(-?[0-9]{1,}.[0-9]{1,})/ const placeRegex = /\/place\/(.*)\// @@ -116,7 +86,6 @@ function redirect(url, type, initiator, forceRedirection) { } return [zoom, lon, lat] } - console.log(frontend) switch (frontend) { // This is where all instance-specific code must be ran to convert the service url to one that can be understood by the frontend. case "beatbump": @@ -127,18 +96,8 @@ function redirect(url, type, initiator, forceRedirection) { .replace(/\/search\?q=.*/, searchQuery => searchQuery.replace("?q=", "/") + "?filter=all") case "hyperpipe": return `${randomInstance}${url.pathname}${url.search}`.replace(/\/search\?q=.*/, searchQuery => searchQuery.replace("?q=", "/")) - case "bibliogram": - const reservedPaths = ["u", "p", "privacy"] - if (url.pathname === "/" || reservedPaths.includes(url.pathname.split("/")[1])) return `${randomInstance}${url.pathname}${url.search}` - if (url.pathname.startsWith("/reel")) return `${randomInstance}${url.pathname}` - if (url.pathname.startsWith("/tv")) return `${randomInstance}/p${url.pathname.replace(/\/tv/i, "")}${url.search}` - else return `${randomInstance}/u${url.pathname}${url.search}` // Likely a user profile, redirect to '/u/...' case "lbryDesktop": return url.href.replace(/^https?:\/{2}odysee\.com\//, "lbry://").replace(/:(?=[a-zA-Z0-9])/g, "#") - case "neuters": - if (url.pathname.startsWith("/article/") || url.pathname.startsWith("/pf/") || url.pathname.startsWith("/arc/") || url.pathname.startsWith("/resizer/")) return null - else if (url.pathname.endsWith("/")) return `${randomInstance}${url.pathname}` - else return `${randomInstance}${url.pathname}/` case "searx": case "searxng": return `${randomInstance}/${url.search}` @@ -169,7 +128,7 @@ function redirect(url, type, initiator, forceRedirection) { if (url.pathname.split("/").includes("tweets")) return `${randomInstance}${url.pathname.replace("/tweets", "")}${search}` if (url.host == "t.co") return `${randomInstance}/t.co${url.pathname}` - return `${randomInstance}${url.pathname}${search}` + return `${randomInstance}${url.pathname}${search}#m` case "yattee": return url.href.replace(/^https?:\/{2}/, "yattee://") case "freetube": @@ -204,7 +163,6 @@ function redirect(url, type, initiator, forceRedirection) { if (xmlhttp.status === 200) { const json = JSON.parse(xmlhttp.responseText)[0] if (json) { - console.log("json", json) return [`${json.lat},${json.lon}`, `${json.boundingbox[2]},${json.boundingbox[1]},${json.boundingbox[3]},${json.boundingbox[0]}`] } } @@ -295,9 +253,9 @@ function redirect(url, type, initiator, forceRedirection) { } let prefsEncoded = new URLSearchParams(prefs).toString() - console.log("mapCentre", mapCentre) - console.log("prefs", prefs) - console.log("prefsEncoded", prefsEncoded) + // console.log("mapCentre", mapCentre) + // console.log("prefs", prefs) + // console.log("prefsEncoded", prefsEncoded) return `${randomInstance}/${mapCentre}&${prefsEncoded}` } case "facil": { @@ -374,28 +332,6 @@ function redirect(url, type, initiator, forceRedirection) { if (query) return `${randomInstance}/${mapCentre}/Mpnk/${query}` } } - case "wikiless": - let GETArguments = [] - if (url.search.length > 0) { - let search = url.search.substring(1) //get rid of '?' - let argstrings = search.split("&") - for (let i = 0; i < argstrings.length; i++) { - let args = argstrings[i].split("=") - GETArguments.push([args[0], args[1]]) - } - } - - let link = `${randomInstance}${url.pathname}` - let urlSplit = url.host.split(".") - if (urlSplit[0] != "wikipedia" && urlSplit[0] != "www") { - if (urlSplit[0] == "m") GETArguments.push(["mobileaction", "toggle_view_mobile"]) - else GETArguments.push(["lang", urlSplit[0]]) - if (urlSplit[1] == "m") GETArguments.push(["mobileaction", "toggle_view_mobile"]) - // wikiless doesn't have mobile view support yet - } - for (let i = 0; i < GETArguments.length; i++) link += (i == 0 ? "?" : "&") + GETArguments[i][0] + "=" + GETArguments[i][1] - return link - case "lingva": let params_arr = url.search.split("&") params_arr[0] = params_arr[0].substring(1) @@ -446,92 +382,80 @@ function redirect(url, type, initiator, forceRedirection) { else return `${randomInstance}${url.pathname}${url.search}&teddit_proxy=${url.hostname}` } return `${randomInstance}${url.pathname}${url.search}` - case "simpleertube": - return `${randomInstance}/${url.hostname}${url.pathname}${url.search}` default: - return `${randomInstance}${url.pathname}${url.search} ` + return `${randomInstance}${url.pathname}${url.search}` + case "neuters": { + const p = url.pathname + if (p.startsWith('/article/') || p.startsWith('/pf/') || p.startsWith('/arc/') || p.startsWith('/resizer/')) { + return null; + } + return `${randomInstance}${p}`; + } + case "dumb": { + if (url.pathname.endsWith('-lyrics')) return `${randomInstance}${url.pathname}` + } + } } function computeService(url, returnFrontend) { - return new Promise(resolve => { - fetch("/config/config.json") - .then(response => response.text()) - .then(configData => { - const config = JSON.parse(configData) - browser.storage.local.get(["redirects", "options"], r => { - const redirects = r.redirects - const options = r.options - for (const service in config.services) { - if (regexArray(service, url, config)) { + return new Promise(async resolve => { + const config = await utils.getConfig() + const options = await utils.getOptions() + for (const service in config.services) { + if (regexArray(service, url, config)) { + resolve(service) + return + } else { + for (const frontend in config.services[service].frontends) { + if (all(service, frontend, options, config).includes(utils.protocolHost(url))) { + if (returnFrontend) + resolve([service, frontend, utils.protocolHost(url)]) + else resolve(service) - return - } else { - for (const frontend in config.services[service].frontends) { - if (all(service, frontend, options, config, redirects).includes(utils.protocolHost(url))) { - if (returnFrontend) resolve([service, frontend, utils.protocolHost(url)]) - else resolve(service) - return - } - } - } + return } - resolve() - }) - }) + } + } + } + resolve() }) } -function switchInstance(url) { +function _switchInstance(url) { return new Promise(async resolve => { await init() const protocolHost = utils.protocolHost(url) for (const service in config.services) { - if (!all(service, null, options, config, redirects).includes(protocolHost)) continue + let frontend = options[service].frontend ?? Object.keys(config.services[service].frontends)[0] + let instancesList = [...options[frontend]] + if (!instancesList.includes(protocolHost)) continue - let instancesList - if (Object.keys(config.services[service].frontends).length == 1) { - const frontend = Object.keys(config.services[service].frontends)[0] - instancesList = [...options[frontend][options.network].enabled, ...options[frontend][options.network].custom] - if (instancesList.length === 0 && options.networkFallback) instancesList = [...options[frontend].clearnet.enabled, ...options[frontend].clearnet.custom] - } else { - const frontend = options[service].frontend - instancesList = [...options[frontend][options.network].enabled, ...options[frontend][options.network].custom] - if (instancesList.length === 0 && options.networkFallback) instancesList = [...options[frontend].clearnet.enabled, ...options[frontend].clearnet.custom] - } - - let oldInstance - const i = instancesList.indexOf(protocolHost) - if (i > -1) { - oldInstance = instancesList[i] - instancesList.splice(i, 1) - } + instancesList.splice(instancesList.indexOf(protocolHost), 1) if (instancesList.length === 0) { resolve() return } + const randomInstance = utils.getRandomInstance(instancesList) - const oldUrl = `${oldInstance}${url.pathname}${url.search} ` - // This is to make instance switching work when the instance depends on the pathname, eg https://darmarit.org/searx - // Doesn't work because of .includes array method, not a top priotiry atm - resolve(oldUrl.replace(oldInstance, randomInstance)) + const newUrl = `${randomInstance}${url.pathname}${url.search}` + resolve(newUrl) return } resolve() }) } -function reverse(url, urlString) { +function reverse(url) { return new Promise(async resolve => { await init() - let protocolHost - if (!urlString) protocolHost = utils.protocolHost(url) - else protocolHost = url.match(/https?:\/{2}(?:[^\s\/]+\.)+[a-zA-Z0-9]+/)[0] + url = new URL(url) + let protocolHost = utils.protocolHost(url) for (const service in config.services) { - if (!all(service, null, options, config, redirects).includes(protocolHost)) continue + let frontend = options[service].frontend ?? Object.keys(config.services[service].frontends)[0] + if (!options[frontend].includes(protocolHost)) continue switch (service) { - case "instagram": case "youtube": case "imdb": case "imgur": @@ -539,12 +463,9 @@ function reverse(url, urlString) { case "twitter": case "reddit": case "imdb": - case "reuters": case "quora": case "medium": - case "wikipedia": - if (!urlString) resolve(config.services[service].url + url.pathname + url.search) - else resolve(url.replace(/https?:\/{2}(?:[^\s\/]+\.)+[a-zA-Z0-9]+/, config.services[service].url)) + resolve(config.services[service].url + url.pathname + url.search) return case "fandom": let regex = url.pathname.match(/^\/([a-zA-Z0-9-]+)\/wiki\/([a-zA-Z0-9-]+)/) @@ -560,235 +481,140 @@ function reverse(url, urlString) { } } resolve() - }) -} - -function setRedirects(passedRedirects) { - return new Promise(resolve => { - fetch("/config/config.json") - .then(response => response.text()) - .then(configData => { - browser.storage.local.get(/* [ */ "options" /* , "blacklists"] */, async r => { - let redirects = passedRedirects - let options = r.options - const config = JSON.parse(configData) - let targets = {} - for (const service in config.services) { - if (config.services[service].targets == "datajson") { - targets[service] = redirects[service] - delete redirects[service] - } - for (const frontend in config.services[service].frontends) { - if (config.services[service].frontends[frontend].instanceList) { - for (const network in config.networks) { - for (const instance of options[frontend][network].enabled) { - let i = redirects[frontend][network].indexOf(instance) - if (i < 0) options[frontend][network].enabled.splice(i, 1) - } - } - } - } - /* - for (const frontend in config.services[service].frontends) { - if (config.services[service].frontends[frontend].instanceList) { - for (const network in config.networks) { - options[frontend][network].enabled = redirects[frontend][network] - } - for (const blacklist in r.blacklists) { - for (const instance of blacklist) { - let i = options[frontend].clearnet.enabled.indexOf(instance) - if (i > -1) options[frontend].clearnet.enabled.splice(i, 1) - } - } - } - } - */ - // The above will be implemented with https://github.com/libredirect/libredirect/issues/334 - } - for (const frontend in redirects) { - let exists = false - for (const service in config.services) if (config.services[service].frontends[frontend]) exists = true - if (!exists) delete redirects[frontend] - else for (const network in redirects[frontend]) if (!config.networks[network]) delete redirects[frontend][network] - } - browser.storage.local.set({ redirects, targets, options }, () => resolve()) - }) - }) + return }) } function initDefaults() { return new Promise(resolve => { - fetch("/instances/data.json") - .then(response => response.text()) - .then(data => { - fetch("/config/config.json") - .then(response => response.text()) - .then(configData => { - browser.storage.local.get(["options", "blacklists"], r => { - let redirects = JSON.parse(data) - let options = r.options - let targets = {} - let config = JSON.parse(configData) - const localstorage = {} - for (const service in config.services) { - options[service] = {} - if (config.services[service].targets == "datajson") { - targets[service] = redirects[service] - delete redirects[service] - } - for (const defaultOption in config.services[service].options) options[service][defaultOption] = config.services[service].options[defaultOption] - for (const frontend in config.services[service].frontends) { - if (config.services[service].frontends[frontend].instanceList) { - options[frontend] = {} - for (const network in config.networks) { - options[frontend][network] = {} - options[frontend][network].enabled = JSON.parse(data)[frontend][network] - options[frontend][network].custom = [] - } - for (const blacklist in r.blacklists) { - for (const instance of r.blacklists[blacklist]) { - let i = options[frontend].clearnet.enabled.indexOf(instance) - if (i > -1) options[frontend].clearnet.enabled.splice(i, 1) - } - } - } - } - } - browser.storage.local.set({ redirects, options, targets, localstorage }) - resolve() - }) - }) - }) + browser.storage.local.clear(async () => { + let config = await utils.getConfig() + let options = {} + for (const service in config.services) { + options[service] = {} + for (const defaultOption in config.services[service].options) { + options[service][defaultOption] = config.services[service].options[defaultOption] + } + for (const frontend in config.services[service].frontends) { + if (config.services[service].frontends[frontend].instanceList) { + options[frontend] = [] + } + } + } + options['exceptions'] = { + url: [], + regex: [], + } + options['theme'] = "detect" + options['popupServices'] = ["youtube", "twitter", "tiktok", "imgur", "reddit", "quora", "translate", "maps"] + + options['invidious'] = ['https://inv.vern.cc'] + options['piped'] = ['https://piped.video'] + options['pipedMaterial'] = ['https://piped-material.xn--17b.net'] + options['cloudtube'] = ['https://tube.cadence.moe'] + options['proxiTok'] = ['https://proxitok.pabloferreiro.es'] + options['send'] = ['https://send.vis.ee'] + options['nitter'] = ['https://nitter.net'] + options['libreddit'] = ['https://libreddit.spike.codes'] + options['teddit'] = ['https://teddit.net'] + options['scribe'] = ['https://scribe.rip'] + options['quetre'] = ['https://quetre.iket.me'] + options['libremdb'] = ['https://libremdb.iket.me'] + options['simplyTranslate'] = ['https://simplytranslate.org'] + options['lingva'] = ['https://lingva.ml'] + options['searxng'] = ['https://sx.vern.cc'] + options['rimgo'] = ['https://rimgo.vern.cc'] + options['librarian'] = ['https://lbry.vern.cc'] + options['beatbump'] = ['https://beatbump.ml'] + options['hyperpipe'] = ['https://hyperpipe.surge.sh'] + options['facil'] = [' https://facilmap.org '] + options['osm'] = ['https://www.openstreetmap.org'] + options['breezeWiki'] = ['https://breezewiki.com'] + options['neuters'] = ['https://neuters.de'] + options['dumb'] = ['https://dm.vern.cc'] + + browser.storage.local.set({ options }, + () => resolve() + ) + }) }) } function upgradeOptions() { - return new Promise(resolve => { - fetch("/config/config.json") - .then(response => response.text()) - .then(configData => { - browser.storage.local.get(null, r => { - let options = r.options - const config = JSON.parse(configData) - options.exceptions = r.exceptions - if (r.theme != "DEFAULT") options.theme = r.theme - options.popupServices = r.popupFrontends - let tmp = options.popupServices.indexOf("tikTok") - if (tmp > -1) { - options.popupServices.splice(tmp, 1) - options.popupServices.push("tiktok") - } - tmp = options.popupServices.indexOf("sendTarget") - if (tmp > -1) { - options.popupServices.splice(tmp, 1) - options.popupServices.push("sendFiles") + return new Promise(async resolve => { + const oldOptions = await utils.getOptions() + const config = await utils.getConfig() + + let options = {} + + options.exceptions = oldOptions.exceptions + options.theme = oldOptions.theme + options.popupServices = oldOptions.popupServices + + for (const service in config.services) { + if (service in oldOptions) { + options[service] = oldOptions[service] + delete options[service].embedFrontend + } + else { + options[service] = {} + for (const defaultOption in config.services[service].options) { + options[service][defaultOption] = config.services[service].options[defaultOption] + } + for (const frontend in config.services[service].frontends) { + if (config.services[service].frontends[frontend].instanceList) { + options[frontend] = [] } - switch (r.onlyEmbeddedVideo) { - case "onlyNotEmbedded": - options.youtube.redirectType = "main_frame" - case "onlyEmbedded": - options.youtube.redirectType = "sub_frame" - case "both": - options.youtube.redirectType = "both" + } + } + + for (const frontend in config.services[service].frontends) { + if (config.services[service].frontends[frontend].instanceList) { + if (frontend in oldOptions) { + options[frontend] = [ + ...oldOptions[frontend].clearnet.enabled, + ...oldOptions[frontend].clearnet.custom + ] } - for (const service in config.services) { - let oldService - switch (service) { - case "tiktok": - oldService = "tikTok" - break - case "sendFiles": - oldService = "sendTarget" - break - default: - oldService = service - } - options[service].enabled = !r["disable" + utils.camelCase(oldService)] - if (r[oldService + "Frontend"]) { - if (r[oldService + "Frontend"] == "yatte") options[service].frontend = "yattee" - else options[service].frontend = r[oldService + "Frontend"] - } - if (r[oldService + "RedirectType"]) options[service].redirectType = r[oldService + "RedirectType"] - if (r[oldService + "EmbedFrontend"] && (service != "youtube" || r[oldService + "EmbedFrontend"] == "invidious" || r[oldService + "EmbedFrontend"] == "piped")) - options[service].embedFrontend = r[oldService + "EmbedFrontend"] - for (const frontend in config.services[service].frontends) { - for (const network in config.networks) { - let protocol - if (network == "clearnet") protocol = "normal" - else protocol = network - if (r[frontend + utils.camelCase(protocol) + "RedirectsChecks"]) { - options[frontend][network].enabled = r[frontend + utils.camelCase(protocol) + "RedirectsChecks"] - options[frontend][network].custom = r[frontend + utils.camelCase(protocol) + "CustomRedirects"] - for (const instance of options[frontend][network].enabled) { - let i = r.redirects[frontend][network].indexOf(instance) - if (i < 0) options[frontend][network].enabled.splice(i, 1) - } - } - } - } + else { + options[frontend] = [] } - browser.storage.local.set({ options }, () => resolve()) - }) + } + } + } + + browser.storage.local.clear(() => { + browser.storage.local.set({ options }, () => { + resolve() }) + }) }) } function processUpdate() { - return new Promise(resolve => { - fetch("/instances/data.json") - .then(response => response.text()) - .then(data => { - fetch("/config/config.json") - .then(response => response.text()) - .then(configData => { - browser.storage.local.get(["options", "blacklists", "targets"], r => { - let redirects = JSON.parse(data) - let options = r.options - let targets = r.targets - let config = JSON.parse(configData) - for (const service in config.services) { - if (!options[service]) options[service] = {} - if (config.services[service].targets == "datajson") { - targets[service] = redirects[service] - delete redirects[service] - } - for (const defaultOption in config.services[service].options) { - if (options[service][defaultOption] === undefined) { - options[service][defaultOption] = config.services[service].options[defaultOption] - } - } - for (const frontend in config.services[service].frontends) { - if (config.services[service].frontends[frontend].instanceList) { - if (!options[frontend]) options[frontend] = {} - for (const network in config.networks) { - if (!options[frontend][network]) { - options[frontend][network] = {} - options[frontend][network].enabled = JSON.parse(data)[frontend][network] - options[frontend][network].custom = [] - if (network == "clearnet") { - for (const blacklist in r.blacklists) { - for (const instance of r.blacklists[blacklist]) { - let i = options[frontend].clearnet.enabled.indexOf(instance) - if (i > -1) options[frontend].clearnet.enabled.splice(i, 1) - } - } - } - } else { - for (const instance of options[frontend][network].enabled) { - let i = redirects[frontend][network].indexOf(instance) - if (i < 0) options[frontend][network].enabled.splice(i, 1) - } - } - } - } - } - } - browser.storage.local.set({ redirects, options, targets }) - resolve() - }) - }) - }) + return new Promise(async resolve => { + let config = await utils.getConfig() + let options = await utils.getOptions() + for (const service in config.services) { + if (!options[service]) options[service] = {} + for (const defaultOption in config.services[service].options) { + if (options[service][defaultOption] === undefined) { + options[service][defaultOption] = config.services[service].options[defaultOption] + } + } + + for (const frontend in config.services[service].frontends) { + if (options[frontend] === undefined && config.services[service].frontends[frontend].instanceList) { + options[frontend] = [] + } + else if (frontend in options && frontend in !config.services[service].frontends) { + delete options[frontend] + } + } + } + browser.storage.local.set({ options }, () => { + resolve() + }) }) } @@ -804,7 +630,7 @@ function modifyContentSecurityPolicy(details) { for (const frontend in config.services[service].frontends) { if (config.services[service].frontends[frontend].embeddable) { for (const network in config.networks) { - instancesList.push(...options[frontend][network].enabled, ...options[frontend][network].custom) + instancesList.push(...options[frontend]) } } } @@ -830,14 +656,65 @@ function modifyContentSecurityPolicy(details) { } } +function copyRaw(test, copyRawElement) { + return new Promise(resolve => { + browser.tabs.query({ active: true, currentWindow: true }, async tabs => { + let currTab = tabs[0] + if (currTab) { + let url + try { + url = new URL(currTab.url) + } catch { + resolve() + return + } + + const newUrl = await reverse(url) + + if (newUrl) { + resolve(newUrl) + if (test) return + navigator.clipboard.writeText(newUrl) + if (copyRawElement) { + const textElement = copyRawElement.getElementsByTagName("h4")[0] + const oldHtml = textElement.innerHTML + textElement.innerHTML = browser.i18n.getMessage("copied") + setTimeout(() => (textElement.innerHTML = oldHtml), 1000) + } + } + } + resolve() + }) + }) +} + +function switchInstance() { + return new Promise(resolve => { + browser.tabs.query({ active: true, currentWindow: true }, async tabs => { + let currTab = tabs[0] + if (currTab) { + let url + try { + url = new URL(currTab.url) + } catch { + resolve() + return + } + const newUrl = await _switchInstance(url) + resolve(newUrl) + } + }) + }) +} + export default { redirect, computeService, - switchInstance, reverse, - setRedirects, initDefaults, upgradeOptions, processUpdate, modifyContentSecurityPolicy, + copyRaw, + switchInstance } diff --git a/src/assets/javascripts/set-localstorage.js b/src/assets/javascripts/set-localstorage.js deleted file mode 100644 index 8dbfcad7..00000000 --- a/src/assets/javascripts/set-localstorage.js +++ /dev/null @@ -1,13 +0,0 @@ -window.browser = window.browser || window.chrome - -browser.storage.local.get(["localstorage", "tmp"], r => { - const localstorageJson = r.localstorage - const frontend = r.tmp[0] - const items = localstorageJson[frontend] - - for (const item in items) { - localStorage.setItem(item, items[item]) - } - - window.close() -}) diff --git a/src/assets/javascripts/utils.js b/src/assets/javascripts/utils.js index b38277ad..c8a771d9 100644 --- a/src/assets/javascripts/utils.js +++ b/src/assets/javascripts/utils.js @@ -1,8 +1,5 @@ window.browser = window.browser || window.chrome -import localise from "./localise.js" -import servicesHelper from "./services.js" - function getRandomInstance(instances) { return instances[~~(instances.length * Math.random())] } @@ -11,258 +8,65 @@ function camelCase(str) { return str.charAt(0).toUpperCase() + str.slice(1) } -let cloudflareBlackList = [] -let authenticateBlackList = [] -async function initBlackList() { - return new Promise(resolve => { - fetch("/instances/blacklist.json") - .then(response => response.text()) - .then(data => { - cloudflareBlackList = JSON.parse(data).cloudflare - authenticateBlackList = JSON.parse(data).authenticate - resolve() - }) - }) -} - -function updateInstances() { - return new Promise(async resolve => { - let http = new XMLHttpRequest() - let fallback = new XMLHttpRequest() - http.open("GET", "https://codeberg.org/LibRedirect/libredirect/raw/branch/master/src/instances/data.json", false) - http.send(null) - if (http.status != 200) { - fallback.open("GET", "https://raw.githubusercontent.com/libredirect/libredirect/master/src/instances/data.json", false) - fallback.send(null) - if (fallback.status === 200) { - http = fallback - } else { - resolve() - return - } - } - await initBlackList() - const instances = JSON.parse(http.responseText) - - await servicesHelper.setRedirects(instances) - - console.info("Successfully updated Instances") - resolve(true) - return - }) -} - function protocolHost(url) { if (url.username && url.password) return `${url.protocol}//${url.username}:${url.password}@${url.host}` return `${url.protocol}//${url.host}` } -async function processDefaultCustomInstances(service, frontend, network, document) { - let frontendNetworkElement = document.getElementById(frontend).getElementsByClassName(network)[0] - - let frontendCustomInstances = [] - let frontendCheckListElement = frontendNetworkElement.getElementsByClassName("checklist")[0] - - await initBlackList() - - let frontendDefaultRedirects - - let redirects, options - - async function getFromStorage() { - return new Promise(async resolve => - browser.storage.local.get(["options", "redirects",], r => { - frontendDefaultRedirects = r.options[frontend][network].enabled - frontendCustomInstances = r.options[frontend][network].custom - options = r.options - redirects = r.redirects - resolve() +function getConfig() { + return new Promise(resolve => { + fetch("/config.json") + .then(response => response.text()) + .then(json => { + resolve(JSON.parse(json)) + return }) - ) - } - - await getFromStorage() - - function calcFrontendCheckBoxes() { - let isTrue = true - for (const item of redirects[frontend][network]) { - if (!frontendDefaultRedirects.includes(item)) { - isTrue = false - break - } - } - for (const element of frontendCheckListElement.getElementsByTagName("input")) { - element.checked = frontendDefaultRedirects.includes(element.className) - } - if (frontendDefaultRedirects.length == 0) isTrue = false - frontendNetworkElement.getElementsByClassName("toggle-all")[0].checked = isTrue - } - frontendCheckListElement.innerHTML = [ - `<div> - <x data-localise="__MSG_toggleAll__">Toggle All</x> - <input type="checkbox" class="toggle-all"/> - </div>`, - ...redirects[frontend][network] - .sort((a, b) => - (cloudflareBlackList.includes(a) && !cloudflareBlackList.includes(b)) - || - (authenticateBlackList.includes(a) && !authenticateBlackList.includes(b)) - ) - .map(x => { - const cloudflare = cloudflareBlackList.includes(x) ? ' <span style="color:red;">cloudflare</span>' : "" - const authenticate = authenticateBlackList.includes(x) ? ' <span style="color:orange;">authenticate</span>' : "" - - let warnings = [cloudflare, authenticate].join(" ") - return `<div> - <x><a href="${x}" target="_blank">${x}</a>${warnings}</x> - <input type="checkbox" class="${x}"/> - </div>` - }), - ].join("\n<hr>\n") - - localise.localisePage() - - calcFrontendCheckBoxes() - frontendNetworkElement.getElementsByClassName("toggle-all")[0].addEventListener("change", async event => { - browser.storage.local.get("options", r => { - let options = r.options - if (event.target.checked) frontendDefaultRedirects = [...redirects[frontend][network]] - else frontendDefaultRedirects = [] - - options[frontend][network].enabled = frontendDefaultRedirects - browser.storage.local.set({ options }) - calcFrontendCheckBoxes() - }) }) +} - for (let element of frontendCheckListElement.getElementsByTagName("input")) { - if (element.className != "toggle-all") - frontendNetworkElement.getElementsByClassName(element.className)[0].addEventListener("change", async event => { - browser.storage.local.get("options", r => { - let options = r.options - if (event.target.checked) frontendDefaultRedirects.push(element.className) - else { - let index = frontendDefaultRedirects.indexOf(element.className) - if (index > -1) frontendDefaultRedirects.splice(index, 1) - } - - options[frontend][network].enabled = frontendDefaultRedirects - browser.storage.local.set({ options }) - calcFrontendCheckBoxes() - }) - }) - } - - function calcFrontendCustomInstances() { - frontendNetworkElement.getElementsByClassName("custom-checklist")[0].innerHTML = frontendCustomInstances - .map( - x => `<div> - ${x} - <button class="add clear-${x}"> - <svg xmlns="https://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor"> - <path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z" /> - </svg> - </button> - </div> - <hr>` - ) - .join("\n") - - for (const item of frontendCustomInstances) { - frontendNetworkElement.getElementsByClassName(`clear-${item}`)[0].addEventListener("click", async () => { - browser.storage.local.get("options", r => { - let options = r.options - let index = frontendCustomInstances.indexOf(item) - if (index > -1) frontendCustomInstances.splice(index, 1) - options[frontend][network].custom = frontendCustomInstances - browser.storage.local.set({ options }) - calcFrontendCustomInstances() - }) - }) - } - } - calcFrontendCustomInstances() - frontendNetworkElement.getElementsByClassName("custom-instance-form")[0].addEventListener("submit", async event => { +function getOptions() { + return new Promise(resolve => browser.storage.local.get("options", r => { - let options = r.options - event.preventDefault() - let frontendCustomInstanceInput = frontendNetworkElement.getElementsByClassName("custom-instance")[0] - let url = new URL(frontendCustomInstanceInput.value) - let protocolHostVar = protocolHost(url) - if (frontendCustomInstanceInput.validity.valid && !redirects[frontend][network].includes(protocolHostVar)) { - if (!frontendCustomInstances.includes(protocolHostVar)) { - frontendCustomInstances.push(protocolHostVar) - options[frontend][network].custom = frontendCustomInstances - browser.storage.local.set({ options }) - frontendCustomInstanceInput.value = "" - } - calcFrontendCustomInstances() - } + resolve(r.options) }) - }) + ) } -function copyRaw(test, copyRawElement) { +function getBlacklist() { return new Promise(resolve => { - browser.tabs.query({ active: true, currentWindow: true }, async tabs => { - let currTab = tabs[0] - if (currTab) { - let url - try { - url = new URL(currTab.url) - } catch { - resolve() - return - } - - const newUrl = await servicesHelper.reverse(url) - - if (newUrl) { - resolve(newUrl) - if (test) return - navigator.clipboard.writeText(newUrl) - if (copyRawElement) { - const textElement = copyRawElement.getElementsByTagName("h4")[0] - const oldHtml = textElement.innerHTML - textElement.innerHTML = browser.i18n.getMessage("copied") - setTimeout(() => (textElement.innerHTML = oldHtml), 1000) - } - } + const http = new XMLHttpRequest() + http.open("GET", "https://raw.githubusercontent.com/libredirect/instances/main/blacklist.json", true) + http.onreadystatechange = () => { + if (http.status === 200 && http.readyState == XMLHttpRequest.DONE) { + resolve(JSON.parse(http.responseText)) + return } - resolve() - }) + } + http.send(null) }) } -function switchInstance(test) { +function getList() { return new Promise(resolve => { - browser.tabs.query({ active: true, currentWindow: true }, async tabs => { - let currTab = tabs[0] - if (currTab) { - let url - try { - url = new URL(currTab.url) - } catch { - resolve() - return - } - const newUrl = await servicesHelper.switchInstance(url) - - if (newUrl) { - if (!test) browser.tabs.update({ url: newUrl }) - resolve(true) - } else resolve() + const http = new XMLHttpRequest() + http.open("GET", "https://raw.githubusercontent.com/libredirect/instances/main/data.json", true) + http.onreadystatechange = () => { + if (http.status === 200 && http.readyState == XMLHttpRequest.DONE) { + resolve(JSON.parse(http.responseText)) + return } - }) + } + http.send(null) }) + } export default { getRandomInstance, - updateInstances, protocolHost, - processDefaultCustomInstances, - switchInstance, - copyRaw, + getList, + getBlacklist, camelCase, + getConfig, + getOptions } diff --git a/src/config/config.json b/src/config.json index cb0ed503..8e3d2711 100644 --- a/src/config/config.json +++ b/src/config.json @@ -23,51 +23,58 @@ "invidious": { "name": "Invidious", "embeddable": true, - "instanceList": true + "instanceList": true, + "url": "https://invidious.io/" }, "piped": { "excludeTargets": [ - 1, - 2 + 2, + 3 ], "name": "Piped", "embeddable": true, - "instanceList": true + "instanceList": true, + "url": "https://github.com/TeamPiped/Piped" }, "pipedMaterial": { "excludeTargets": [ - 1, - 2 + 2, + 3 ], "name": "Piped-Material", "embeddable": false, - "instanceList": true + "instanceList": true, + "url": "https://github.com/mmjee/Piped-Material" }, "cloudtube": { "name": "CloudTube", "embeddable": false, - "instanceList": true + "instanceList": true, + "url": "https://sr.ht/~cadence/tube/" }, "freetube": { "excludeTargets": [ - 1, - 2 + 2, + 3 ], "name": "FreeTube", "embeddable": false, - "instanceList": false + "instanceList": false, + "url": "https://github.com/FreeTubeApp/FreeTube" }, "yattee": { "excludeTargets": [ - 1, - 2 + 2, + 3 ], "name": "Yattee", "embeddable": false, - "instanceList": false + "instanceList": false, + "url": "https://github.com/yattee/yattee" } }, "targets": [ + "^https?:\\/{2}redirect\\.invidious\\.io\\/.*", "^https?:\\/{2}(?:www\\.|m\\.|)youtube.com(\\/|$)(?!iframe_api\\/|redirect\\/)", "^https?:\\/{2}img\\.youtube.com\\/vi\\/.*\\/..*", "^https?:\\/{2}(?:i|s)\\.ytimg.com\\/vi\\/.*\\/..*", @@ -77,10 +84,9 @@ ], "name": "Youtube", "options": { - "enabled": true, - "redirectType": "both", - "frontend": "invidious", - "embedFrontend": "invidious" + "enabled": false, + "redirectType": "main_frame", + "frontend": "invidious" }, "imageType": "png", "embeddable": true, @@ -90,11 +96,13 @@ "frontends": { "beatbump": { "name": "Beatbump", - "instanceList": true + "instanceList": true, + "url": "https://github.com/snuffyDev/Beatbump" }, "hyperpipe": { "name": "Hyperpipe", - "instanceList": true + "instanceList": true, + "url": "https://codeberg.org/Hyperpipe/Hyperpipe" } }, "targets": [ @@ -102,7 +110,7 @@ ], "name": "YT Music", "options": { - "enabled": true, + "enabled": false, "frontend": "beatbump" }, "imageType": "png", @@ -114,7 +122,8 @@ "nitter": { "name": "Nitter", "embeddable": true, - "instanceList": true + "instanceList": true, + "url": "https://github.com/zedeus/nitter" } }, "targets": [ @@ -125,36 +134,19 @@ ], "name": "Twitter", "options": { - "enabled": true, - "redirectType": "both" + "enabled": false, + "redirectType": "main_frame" }, "imageType": "png", "embeddable": true, "url": "https://twitter.com" }, - "instagram": { - "frontends": { - "bibliogram": { - "name": "Bibliogram", - "instanceList": true - } - }, - "targets": [ - "^https?:\\/{2}(www\\.)?instagram\\.com\\/?(p\\/|reel\\/|$)" - ], - "name": "Instagram", - "options": { - "enabled": true - }, - "imageType": "png", - "embeddable": false, - "url": "https://instagram.com" - }, "tiktok": { "frontends": { "proxiTok": { "name": "ProxiTok", - "instanceList": true + "instanceList": true, + "url": "https://github.com/pablouser1/ProxiTok" } }, "targets": [ @@ -162,7 +154,7 @@ ], "name": "TikTok", "options": { - "enabled": true + "enabled": false }, "imageType": "png", "embeddable": false, @@ -172,20 +164,22 @@ "frontends": { "libreddit": { "name": "Libreddit", - "instanceList": true + "instanceList": true, + "url": "https://github.com/spikecodes/libreddit" }, "teddit": { "name": "Teddit", - "instanceList": true + "instanceList": true, + "url": "https://codeberg.org/teddit/teddit" } }, "targets": [ - "^https?:\\/{2}(www\\.|old\\.|np\\.|new\\.|amp\\.|)reddit\\.com(?=\\/u(ser)?\\/|\\/r\\/|\\/search|\\/?$)", + "^https?:\\/{2}(www\\.|old\\.|np\\.|new\\.|amp\\.|)(reddit|reddittorjg6rue252oqsxryoxengawnmo46qy4kyii5wtqnwfj4ooad)\\.(com|onion)(?=\\/u(ser)?\\/|\\/r\\/|\\/search|\\/new|\\/?$)", "^https?:\\/{2}(i|(external-)?preview)\\.redd\\.it" ], "name": "Reddit", "options": { - "enabled": true, + "enabled": false, "frontend": "libreddit" }, "imageType": "png", @@ -196,7 +190,8 @@ "frontends": { "rimgo": { "name": "rimgo", - "instanceList": true + "instanceList": true, + "url": "https://codeberg.org/video-prize-ranch/rimgo" } }, "targets": [ @@ -204,36 +199,19 @@ ], "name": "Imgur", "options": { - "enabled": true, - "redirectType": "both" + "enabled": false, + "redirectType": "main_frame" }, "imageType": "png", "embeddable": true, "url": "https://imgur.com" }, - "wikipedia": { - "frontends": { - "wikiless": { - "name": "Wikiless", - "instanceList": true - } - }, - "targets": [ - "^https?:\\/{2}(?:[a-z]+\\.)*wikipedia\\.org(\\/|$)" - ], - "name": "Wikipedia", - "options": { - "enabled": false - }, - "imageType": "svg", - "embeddable": false, - "url": "https://wikipedia.org" - }, "medium": { "frontends": { "scribe": { "name": "Scribe", - "instanceList": true + "instanceList": true, + "url": "https://sr.ht/~edwardloveall/Scribe/" } }, "targets": [ @@ -258,9 +236,9 @@ ], "name": "Medium", "options": { - "enabled": true + "enabled": false }, - "imageType": "svgMono", + "imageType": "svg", "embeddable": false, "url": "https://medium.com" }, @@ -268,7 +246,8 @@ "frontends": { "quetre": { "name": "Quetre", - "instanceList": true + "instanceList": true, + "url": "https://github.com/zyachel/quetre" } }, "targets": [ @@ -276,7 +255,7 @@ ], "name": "Quora", "options": { - "enabled": true + "enabled": false }, "imageType": "png", "embeddable": false, @@ -286,7 +265,8 @@ "frontends": { "libremdb": { "name": "libremdb", - "instanceList": true + "instanceList": true, + "url": "https://github.com/zyachel/libremdb" } }, "targets": [ @@ -294,35 +274,18 @@ ], "name": "IMDb", "options": { - "enabled": true - }, - "imageType": "svg", - "embeddable": false, - "url": "https://imdb.com" - }, - "reuters": { - "frontends": { - "neuters": { - "name": "Neuters", - "instanceList": true - } - }, - "targets": [ - "^https?:\\/{2}(www\\.|)reuters\\.com(\\/|$)" - ], - "name": "Reuters", - "options": { "enabled": false }, "imageType": "svg", "embeddable": false, - "url": "https://reuters.com" + "url": "https://imdb.com" }, "fandom": { "frontends": { "breezeWiki": { "name": "BreezeWiki", - "instanceList": true + "instanceList": true, + "url": "https://breezewiki.com" } }, "targets": [ @@ -330,39 +293,25 @@ ], "name": "Fandom", "options": { - "enabled": true - }, - "imageType": "svg", - "embeddable": false, - "url": "https://fandom.com" - }, - "peertube": { - "frontends": { - "simpleertube": { - "name": "SimpleerTube", - "instanceList": true - } - }, - "targets": "datajson", - "name": "PeerTube", - "options": { "enabled": false }, "imageType": "svg", "embeddable": false, - "url": "https://joinpeertube.org" + "url": "https://fandom.com" }, "lbry": { "frontends": { "librarian": { "name": "Librarian", "embeddable": true, - "instanceList": true + "instanceList": true, + "url": "https://codeberg.org/librarian/librarian" }, "lbryDesktop": { "name": "LBRY Desktop", "embeddable": false, - "instanceList": false + "instanceList": false, + "url": "https://lbry.com/get" } }, "targets": [ @@ -371,10 +320,9 @@ ], "name": "LBRY", "options": { - "enabled": true, + "enabled": false, "frontend": "librarian", - "redirectType": "both", - "embedFrontend": "librarian" + "redirectType": "main_frame" }, "imageType": "png", "embeddable": true, @@ -382,21 +330,25 @@ }, "search": { "frontends": { - "searx": { - "name": "SearX", - "instanceList": true - }, "searxng": { "name": "SearXNG", - "instanceList": true + "instanceList": true, + "url": "https://github.com/searxng/searxng" + }, + "searx": { + "name": "SearX", + "instanceList": true, + "url": "https://searx.github.io/searx/" }, "whoogle": { "name": "Whoogle", - "instanceList": true + "instanceList": true, + "url": "https://benbusby.com/projects/whoogle-search/" }, "librex": { "name": "LibreX", - "instanceList": true + "instanceList": true, + "url": "https://github.com/hnhx/librex" } }, "targets": [ @@ -404,7 +356,7 @@ ], "name": "Search", "options": { - "enabled": true, + "enabled": false, "frontend": "searxng" }, "imageType": "svgMono", @@ -415,15 +367,18 @@ "frontends": { "simplyTranslate": { "name": "SimplyTranslate", - "instanceList": true + "instanceList": true, + "url": "https://git.sr.ht/~metalune/simplytranslate_web" }, "lingva": { "name": "Lingva Translate", - "instanceList": true + "instanceList": true, + "url": "https://github.com/TheDavidDelta/lingva-translate" }, "libreTranslate": { "name": "LibreTranslate", - "instanceList": true + "instanceList": true, + "url": "https://github.com/LibreTranslate/LibreTranslate" } }, "targets": [ @@ -432,7 +387,7 @@ ], "name": "Translate", "options": { - "enabled": true, + "enabled": false, "frontend": "simplyTranslate" }, "imageType": "svgMono", @@ -443,12 +398,13 @@ "frontends": { "facil": { "name": "FacilMap", - "instanceList": true + "instanceList": true, + "url": "https://github.com/FacilMap/facilmap" }, "osm": { "name": "OpenStreetMap", - "instanceList": false, - "singleInstance": "https://www.openstreetmap.org" + "instanceList": true, + "url": "https://www.openstreetmap.org/" } }, "targets": [ @@ -468,7 +424,8 @@ "frontends": { "send": { "name": "Send", - "instanceList": true + "instanceList": true, + "url": "https://gitlab.com/timvisee/send" } }, "targets": [ @@ -478,7 +435,7 @@ ], "name": "Send Files", "options": { - "enabled": true + "enabled": false }, "imageType": "svgMono", "embeddable": false, @@ -488,7 +445,8 @@ "frontends": { "privateBin": { "name": "PrivateBin", - "instanceList": true + "instanceList": true, + "url": "https://privatebin.info" } }, "targets": [ @@ -496,19 +454,68 @@ ], "name": "Paste Text", "options": { - "enabled": true + "enabled": false }, "imageType": "svgMono", "embeddable": false, "url": "https://paste.libredirect.invalid" - } - }, - "blacklist": { - "cloudflare": { - "color": "red" }, - "authenticate": { - "color": "orange" + "reuters": { + "frontends": { + "neuters": { + "name": "Neuters", + "instanceList": true, + "url": "https://github.com/HookedBehemoth/neuters" + } + }, + "targets": [ + "^https?:\\/{2}(www\\.)?reuters.com\\/" + ], + "name": "Paste Text", + "options": { + "enabled": false + }, + "imageType": "svg", + "embeddable": false, + "url": "https://reuters.com" + }, + "genius": { + "frontends": { + "dumb": { + "name": "dumb", + "instanceList": true, + "url": "https://github.com/rramiachraf/dumb" + } + }, + "targets": [ + "^https?:\\/{2}(www\\.)?genius.com\\/" + ], + "name": "Genius", + "options": { + "enabled": false + }, + "imageType": "svg", + "embeddable": false, + "url": "https://genius.com" + }, + "urbanDictionary": { + "frontends": { + "ruralDictionary": { + "name": "Rural Dictionary", + "instanceList": true, + "url": "https://codeberg.org/zortazert/rural-dictionary" + } + }, + "targets": [ + "^https?:\\/{2}(www\\.)?urbandictionary.com\\/" + ], + "name": "Urban Dictionary", + "options": { + "enabled": false + }, + "imageType": "svg", + "embeddable": false, + "url": "https://genius.com" } } } \ No newline at end of file diff --git a/src/instances/beatbump.json b/src/instances/beatbump.json deleted file mode 100644 index c5c78123..00000000 --- a/src/instances/beatbump.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "clearnet": ["https://beatbump.ml", "https://beatbump.esmailelbob.xyz"], - "tor": ["http://beatbump.lqs5fjmajyp7rvp4qvyubwofzi6d4imua7vs237rkc4m5qogitqwrgyd.onion"], - "i2p": [], - "loki": [] -} diff --git a/src/instances/bibliogram.json b/src/instances/bibliogram.json deleted file mode 100644 index b08aa7a0..00000000 --- a/src/instances/bibliogram.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "clearnet": ["https://bibliogram.1d4.us", "https://bibliogram.froth.zone", "https://ig.tokhmi.xyz", "https://ig.beparanoid.de", "https://bibliogram.priv.pw"], - "tor": [], - "i2p": [], - "loki": [] -} diff --git a/src/instances/blacklist.json b/src/instances/blacklist.json deleted file mode 100644 index 0894bda2..00000000 --- a/src/instances/blacklist.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "cloudflare": [ - "https://invidious.kavin.rocks", - "https://invidious.epicsite.xyz", - "https://yt.oelrichsgarcia.de", - "https://piped.video", - "https://piped.tokhmi.xyz", - "https://piped.moomoo.me", - "https://piped.mha.fi", - "https://piped.garudalinux.org", - "https://efy.piped.pages.dev", - "https://watch.leptons.xyz", - "https://piped.lunar.icu", - "https://proxitok.marcopisco.com", - "https://proxitok.lunar.icu", - "https://send.q1q.wtf", - "https://nitter.domain.glass", - "https://birdsite.xanny.family", - "https://notabird.site", - "https://nitter.winscloud.net", - "https://twitter.dr460nf1r3.org", - "https://nitter.garudalinux.org", - "https://nitter.catalyst.sx", - "https://nitter.rawbit.ninja", - "https://nitter.privacytools.io", - "https://nitter.sneed.network", - "https://n.sneed.network", - "https://nitter.twei.space", - "https://nitter.d420.de", - "https://nitter.marcopisco.com", - "https://nitter.lunar.icu", - "https://twitter.moe.ngo", - "https://nitter.freedit.eu", - "https://libreddit.eu.org", - "https://libreddit.domain.glass", - "https://r.nf", - "https://reddi.tk", - "https://r.walkx.fyi", - "https://reddit.dr460nf1r3.org", - "https://libreddit.cachyos.org", - "https://libreddit.freedit.eu", - "https://libreddit.garudalinux.org", - "https://lr.aeong.one", - "https://libreddit.lunar.icu", - "https://teddit.domain.glass", - "https://teddit.httpjames.space", - "https://teddit.garudalinux.org", - "https://tedd.it", - "https://teddit.privacytools.io", - "https://teddit.rawbit.ninja", - "https://wiki.604kph.xyz", - "https://wiki.privacytools.io", - "https://wikiless.rawbit.ninja", - "https://scribe.rawbit.ninja", - "https://quetre.marcopisco.com", - "https://quetre.lunar.icu", - "https://libremdb.lunar.icu", - "https://lingva.lunar.icu", - "https://lingva.garudalinux.org", - "https://translate.dr460nf1r3.org", - "https://libretranslate.com", - "https://search.albony.xyz", - "https://search.garudalinux.org", - "https://search.dr460nf1r3.org", - "https://whoogle.lunar.icu", - "https://i.actionsack.com", - "https://rimgo.marcopisco.com", - "https://beatbump.ml", - "https://bonus01.hwb0307.com", - "https://andoc.yateam.cc", - "https://0a0bin.klowdee.host", - "https://privatebin.io", - "https://0.klowdee.host", - "https://privload.com", - "https://bin.klowdee.host", - "https://0.0g.gg", - "https://luckvintage.com" - ], - "authenticate": [ - "https://nitter:nitter@nitter.nixnet.services" - ] -} \ No newline at end of file diff --git a/src/instances/cloudtube.json b/src/instances/cloudtube.json deleted file mode 100644 index 63721583..00000000 --- a/src/instances/cloudtube.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "clearnet": ["https://tube.cadence.moe", "https://tube.boritsch.de"], - "tor": [], - "i2p": [], - "loki": [] -} diff --git a/src/instances/data.json b/src/instances/data.json deleted file mode 100644 index 715ff0f6..00000000 --- a/src/instances/data.json +++ /dev/null @@ -1,1912 +0,0 @@ -{ - "invidious": { - "clearnet": [ - "https://yewtu.be", - "https://vid.puffyan.us", - "https://inv.riverside.rocks", - "https://invidious.kavin.rocks", - "https://watch.thekitty.zone", - "https://y.com.sb", - "https://invidious.nerdvpn.de", - "https://invidious.tiekoetter.com", - "https://yt.artemislena.eu", - "https://invidious.flokinet.to", - "https://inv.bp.projectsegfau.lt", - "https://inv.vern.cc", - "https://inv.odyssey346.dev", - "https://invidious.snopyta.org", - "https://invidious.baczek.me", - "https://invidious.sethforprivacy.com", - "https://yt.funami.tech", - "https://invidious.drivet.xyz", - "https://invidious.silur.me", - "https://iv.ggtyler.dev", - "https://vid.priv.au", - "https://invidious.epicsite.xyz", - "https://yt.oelrichsgarcia.de", - "https://invidious.slipfox.xyz", - "https://invidious.dhusch.de", - "https://invidious.weblibre.org", - "https://invidious.esmailelbob.xyz", - "https://iv.melmac.space", - "https://invidious.privacydev.net", - "https://invidious.lidarshield.cloud", - "https://invidious.namazso.eu" - ], - "tor": [ - "http://w6ijuptxiku4xpnnaetxvnkc5vqcdu7mgns2u77qefoixi63vbvnpnqd.onion", - "http://kbjggqkzv65ivcqj6bumvp337z6264huv5kpkwuv6gu5yjiskvan7fad.onion", - "http://grwp24hodrefzvjjuccrkw3mjq4tzhaaq32amf33dzpmuxe7ilepcmad.onion", - "http://osbivz6guyeahrwp2lnwyjk2xos342h4ocsxyqrlaopqjuhwn2djiiyd.onion", - "http://u2cvlit75owumwpy4dj2hsmvkq7nvrclkpht7xgyye2pyoxhpmclkrad.onion", - "http://euxxcnhsynwmfidvhjf6uzptsmh4dipkmgdmcmxxuo7tunp3ad2jrwyd.onion", - "http://invidious.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd.onion", - "http://inv.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion", - "http://am74vkcrjp2d5v36lcdqgsj2m6x36tbrkhsruoegwfcizzabnfgf5zyd.onion", - "http://ng27owmagn5amdm7l5s3rsqxwscl5ynppnis5dqcasogkyxcfqn7psid.onion", - "http://iv.odysfvr23q5wgt7i456o5t3trw2cw5dgn56vbjfbq2m7xsc5vqbqpcyd.onion", - "http://invidious.g4c3eya4clenolymqbpgwz3q3tawoxw56yhzk4vugqrl6dtu3ejvhjid.onion", - "http://c7hqkpkpemu6e7emz5b4vyz7idjgdvgaaa3dyimmeojqbgpea3xqjoid.onion" - ], - "i2p": [ - "http://verni6dr4qxjgjumnvesxerh5rvhv6oy5ddeibaqy5d7tgbiiyfa.b32.i2p" - ], - "loki": [] - }, - "piped": { - "clearnet": [ - "https://piped.video", - "https://piped.tokhmi.xyz", - "https://piped.moomoo.me", - "https://piped.mha.fi", - "https://watch.whatever.social", - "https://piped.garudalinux.org", - "https://efy.piped.pages.dev", - "https://watch.leptons.xyz", - "https://piped.lunar.icu", - "https://yt.jae.fi", - "https://il.ax", - "https://piped.esmailelbob.xyz", - "https://piped.projectsegfau.lt", - "https://piped.privacydev.net", - "https://piped.palveluntarjoaja.eu", - "https://piped.smnz.de", - "https://piped.adminforge.de", - "https://piped.qdi.fi", - "https://piped.hostux.net", - "https://pd.vern.cc", - "https://piped.chauvet.pro" - ], - "tor": [], - "i2p": [], - "loki": [] - }, - "pipedMaterial": { - "clearnet": [ - "https://piped-material.xn--17b.net", - "https://piped-material.ftp.sh" - ], - "tor": [], - "i2p": [], - "loki": [] - }, - "cloudtube": { - "clearnet": [ - "https://tube.cadence.moe", - "https://tube.boritsch.de" - ], - "tor": [], - "i2p": [], - "loki": [] - }, - "proxiTok": { - "clearnet": [ - "https://proxitok.pabloferreiro.es", - "https://proxitok.pussthecat.org", - "https://tok.habedieeh.re", - "https://proxitok.esmailelbob.xyz", - "https://proxitok.privacydev.net", - "https://tok.artemislena.eu", - "https://tok.adminforge.de", - "https://proxitok.manasiwibi.com", - "https://tik.hostux.net", - "https://tt.vern.cc", - "https://proxitok.mha.fi", - "https://proxitok.pufe.org", - "https://proxitok.marcopisco.com", - "https://cringe.whatever.social", - "https://proxitok.lunar.icu" - ], - "tor": [], - "i2p": [], - "loki": [] - }, - "send": { - "clearnet": [ - "https://send.vis.ee", - "https://send.zcyph.cc", - "https://send.q1q.wtf", - "https://send.ephemeral.land", - "https://send.mni.li", - "https://send.monks.tools", - "https://send.boblorange.net", - "https://send.aurorabilisim.com", - "https://send.datahoarder.dev", - "https://fileupload.ggc-project.de", - "https://drop.chapril.org", - "https://send.jeugdhulp.be", - "https://files.psu.ru", - "https://send.portailpro.net", - "https://transfer.acted.org", - "https://send.epsilonrecords.nl", - "https://transfer.fm", - "https://send.datenpost.app", - "https://transferer.seinetransfert.fr" - ], - "tor": [], - "i2p": [], - "loki": [] - }, - "nitter": { - "clearnet": [ - "https://nitter.net", - "https://nitter.lacontrevoie.fr", - "https://nitter.pussthecat.org", - "https://nitter:nitter@nitter.nixnet.services", - "https://nitter.fdn.fr", - "https://nitter.1d4.us", - "https://nitter.kavin.rocks", - "https://nitter.unixfox.eu", - "https://nitter.domain.glass", - "https://nitter.namazso.eu", - "https://birdsite.xanny.family", - "https://nitter.hu", - "https://nitter.moomoo.me", - "https://bird.trom.tf", - "https://nitter.it", - "https://twitter.censors.us", - "https://nitter.grimneko.de", - "https://twitter.076.ne.jp", - "https://nitter.fly.dev", - "https://notabird.site", - "https://nitter.weiler.rocks", - "https://nitter.sethforprivacy.com", - "https://nitter.cutelab.space", - "https://nitter.nl", - "https://nitter.mint.lgbt", - "https://nitter.bus-hit.me", - "https://fuckthesacklers.network", - "https://nitter.esmailelbob.xyz", - "https://tw.artemislena.eu", - "https://nitter.winscloud.net", - "https://nitter.tiekoetter.com", - "https://nitter.spaceint.fr", - "https://nitter.privacy.com.de", - "https://nitter.poast.org", - "https://nitter.bird.froth.zone", - "https://nitter.dcs0.hu", - "https://twitter.dr460nf1r3.org", - "https://nitter.garudalinux.org", - "https://twitter.beparanoid.de", - "https://nitter.cz", - "https://nitter.privacydev.net", - "https://nitter.evil.site", - "https://tweet.lambda.dance", - "https://nitter.kylrth.com", - "https://nitter.foss.wtf", - "https://nitter.priv.pw", - "https://nitter.tokhmi.xyz", - "https://nitter.catalyst.sx", - "https://unofficialbird.com", - "https://nitter.projectsegfau.lt", - "https://nitter.eu.projectsegfau.lt", - "https://singapore.unofficialbird.com", - "https://nitter.fprivacy.com", - "https://canada.unofficialbird.com", - "https://india.unofficialbird.com", - "https://nederland.unofficialbird.com", - "https://uk.unofficialbird.com", - "https://n.l5.ca", - "https://nitter.slipfox.xyz", - "https://nitter.soopy.moe", - "https://nitter.qwik.space", - "https://read.whatever.social", - "https://nitter.rawbit.ninja", - "https://nt.vern.cc", - "https://ntr.odyssey346.dev", - "https://nitter.ir", - "https://nitter.privacytools.io", - "https://nitter.sneed.network", - "https://n.sneed.network", - "https://nitter.manasiwibi.com", - "https://nitter.smnz.de", - "https://nitter.twei.space", - "https://nitter.inpt.fr", - "https://nitter.d420.de", - "https://nitter.caioalonso.com", - "https://nitter.at", - "https://nitter.drivet.xyz", - "https://nitter.pw", - "https://nitter.nicfab.eu", - "https://bird.habedieeh.re", - "https://nitter.hostux.net", - "https://nitter.adminforge.de", - "https://nitter.platypush.tech", - "https://nitter.mask.sh", - "https://nitter.pufe.org", - "https://nitter.us.projectsegfau.lt", - "https://nitter.marcopisco.com", - "https://nitter.arcticfoxes.net", - "https://t.com.sb", - "https://nitter.selfhostable.net", - "https://nitter.kling.gg", - "https://twt.funami.tech", - "http://nitter.ktachibana.party", - "https://nitter.riverside.rocks", - "https://bird.wilbvr.me", - "https://nitter.girlboss.ceo", - "https://nitter.lunar.icu", - "https://twitter.moe.ngo", - "https://nitter.freedit.eu", - "https://ntr.frail.duckdns.org", - "https://nitter.us.projectsegfau.lt" - ], - "tor": [ - "http://nitter7bryz3jv7e3uekphigvmoyoem4al3fynerxkj22dmoxoq553qd.onion", - "http://npf37k3mtzwxreiw52ccs5ay4e6qt2fkcs2ndieurdyn2cuzzsfyfvid.onion", - "http://26oq3gioiwcmfojub37nz5gzbkdiqp7fue5kvye7d4txv4ny6fb4wwid.onion", - "http://vfaomgh4jxphpbdfizkm5gbtjahmei234giqj4facbwhrfjtcldauqad.onion", - "http://iwgu3cv7ywf3gssed5iqtavmrlszgsxazkmwwnt4h2kdait75thdyrqd.onion", - "http://erpnncl5nhyji3c32dcfmztujtl3xaddqb457jsbkulq24zqq7ifdgad.onion", - "http://ckzuw5misyahmg7j5t5xwwuj3bwy62jfolxyux4brfflramzsvvd3syd.onion", - "http://jebqj47jgxleaiosfcxfibx2xdahjettuydlxbg64azd4khsxv6kawid.onion", - "http://nttr2iupbb6fazdpr2rgbooon2tzbbsvvkagkgkwohhodjzj43stxhad.onion", - "http://nitraeju2mipeziu2wtcrqsxg7h62v5y4eqgwi75uprynkj74gevvuqd.onion", - "http://nitter.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd.onion", - "http://ibsboeui2im5o7dxnik3s5yghufumgy5abevtij5nbizequfpu4qi4ad.onion", - "http://ec5nvbycpfa5k6ro77blxgkyrzbkv7uy6r5cngcbkadtjj2733nm3uyd.onion", - "http://twitter.ap3jtgssd7qn4vfoa62gi2ijddoblslbeuw5dan3xt7myvqpura5i4qd.onion", - "http://twitter.prnoid54e44a4bduq5due64jkk7wcnkxcp5kv3juncm7veptjcqudgyd.onion", - "http://nitter.micohauwkjbyw5meacrb4ipicwvwg4xtzl7y7viv53kig2mdcsvwkyyd.onion", - "http://fbdi323aj3t6hdx4jtkuwxrnafzskquciowu2yu3jizfssaq35aow6ad.onion", - "http://nitterqdyumlovt7tjqpdjrluitgmtpa53qq3idlpgoe4kxo7gs3xvad.onion", - "http://nitter.privpw3tndpkw6pnp3g727zfgfdzbu3k6a7chv226s3xymv2p4eiuqyd.onion", - "http://aaaaaxx74hbzeibageieowryhsqvimbdiitfkfe47tvgawkwkjh3coqd.onion", - "http://wiio4sgs4247brk7hj6qck2jxnvldwfdbguigc5ivpxrsegnliyfvuqd.onion", - "http://qwikxx2erhx6qrymued6ox2qkf2yeogjwypqvzoif4fqkljixasr6oid.onion", - "http://4g47cxugkohbweao2x66nnxxfoe3k7gdfzxej537nhdbwr522sbjxeqd.onion", - "http://nt.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion", - "http://tw.lpoaj7z2zkajuhgnlltpeqh3zyq7wk2iyeggqaduhgxhyajtdt2j7wad.onion", - "http://r2eqimhkvxboaltbdsectoo3hkf476pyemsdykclexzajbfx5v6ojlyd.onion", - "http://li7snkj6oituazbkr5clmilccwwumhd2dntbhttxomy4dfakeeoar4qd.onion", - "http://a5xyidyppowvblric6k6nixgf2eqwnb7zzeaarj7slqbv7tb6ip5t3ad.onion", - "http://bird.habeehrhadazsw3izbrbilqajalfyqqln54mrja3iwpqxgcuxnus7eid.onion", - "http://codeine3hsqnnkb3dsu6ft4tunlomr3lmuml5hcoqmfkgiqfv2brdqqd.onion", - "http://nitter.g4c3eya4clenolymqbpgwz3q3tawoxw56yhzk4vugqrl6dtu3ejvhjid.onion", - "http://jdadsqkjereqronxzovgvd453snh5jsvo7mukfwt2feth353nobqotad.onion", - "http://oawb4ub2x2jehgg7k7ll4uoay34re5nbbnwnztpphdec6wkcxgarwbad.onion", - "http://nitter.pjsfkvpxlinjamtawaksbnnaqs2fc2mtvmozrzckxh7f3kis6yea25ad.onion" - ], - "i2p": [ - "http://axd6uavsstsrvstva4mzlzh4ct76rc6zdug3nxdgeitrzczhzf4q.b32.i2p", - "http://u6ikd6zndl3c4dsdq4mmujpntgeevdk5qzkfb57r4tnfeccrn2qa.b32.i2p", - "http://gseczlzmiv23p5vhsktyd7whquq2uy3c5fgkmdohh453qp3daoua.b32.i2p", - "http://tm4rwkeysv3zz3q5yacyr4rlmca2c4etkdobfvuqzt6vsfsu4weq.b32.i2p", - "http://vernzdedoxuflrrxc4vbatbkpjh4k22ecgiqgimdiif62onhagva.b32.i2p", - "http://pxrhfmieeeqdu5pi4duscycsxqefqphaxgvvrvdtc3ckqn2mcora.b32.i2p", - "http://4kzgzonccxuv4ctforjqx565jgd4bocgnzsy3dg4fmdf3ye2iciq.b32.i2p" - ], - "loki": [ - "http://nitter.priv.loki" - ] - }, - "bibliogram": { - "clearnet": [ - "https://bibliogram.1d4.us", - "https://bibliogram.froth.zone", - "https://ig.tokhmi.xyz", - "https://ig.beparanoid.de", - "https://bibliogram.priv.pw" - ], - "tor": [], - "i2p": [], - "loki": [] - }, - "libreddit": { - "clearnet": [ - "https://libreddit.spike.codes", - "https://safereddit.com", - "https://libreddit.kavin.rocks", - "https://reddit.invak.id", - "https://libreddit.eu.org", - "https://reddit.simo.sh", - "https://lr.riverside.rocks", - "https://libreddit.strongthany.cc", - "https://libreddit.domain.glass", - "https://r.nf", - "https://reddit.stuehieyr.com", - "https://lr.mint.lgbt", - "https://libreddit.drivet.xyz", - "https://libreddit.de", - "https://libreddit.pussthecat.org", - "https://libreddit.northboot.xyz", - "https://libreddit.totaldarkness.net", - "https://libreddit.esmailelbob.xyz", - "https://lr.vern.cc", - "https://libreddit.nl", - "https://reddi.tk", - "https://r.walkx.fyi", - "https://libreddit.kylrth.com", - "https://libreddit.tiekoetter.com", - "https://reddit.rtrace.io", - "https://libreddit.privacydev.net", - "https://bob.fr.to", - "https://libreddit.dcs0.hu", - "https://reddit.dr460nf1r3.org", - "https://rd.jae.su", - "https://libreddit.foss.wtf", - "https://l.opnxng.com", - "https://libreddit.cachyos.org", - "https://rd.funami.tech", - "https://libreddit.projectsegfau.lt", - "https://lr.slipfox.xyz", - "https://libreddit.oxymagnesium.com", - "https://reddit.utsav2.dev", - "https://libreddit.freedit.eu", - "https://libreddit.mha.fi", - "https://libreddit.garudalinux.org", - "https://libreddit.mask.sh", - "https://lr.4201337.xyz", - "https://lr.odyssey346.dev", - "https://reddit.selfhostable.net", - "https://lr.artemislena.eu", - "https://discuss.whatever.social", - "https://libreddit.pufe.org", - "https://lr.aeong.one", - "https://reddit.smnz.de", - "https://libreddit.bus-hit.me", - "https://reddit.leptons.xyz", - "https://libreddit.lunar.icu", - "https://lbr.frail.duckdns.org" - ], - "tor": [ - "http://ojwp2gtj7dq7scd7gnbac6wp53tklgsicteabrnx2pr7zai64wriiaad.onion", - "http://ecue64ybzvn6vjzl37kcsnwt4ycmbsyf74nbttyg7rkc3t3qwnj7mcyd.onion", - "http://libreddit.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd.onion", - "http://ojwp2gtj7dq7scd7gnbac6wp53tklgsicteabrnx2pr7zai64wriiaad.onion", - "http://lr.lpoaj7z2zkajuhgnlltpeqh3zyq7wk2iyeggqaduhgxhyajtdt2j7wad.onion", - "http://libreddit.g4c3eya4clenolymqbpgwz3q3tawoxw56yhzk4vugqrl6dtu3ejvhjid.onion" - ], - "i2p": [], - "loki": [] - }, - "teddit": { - "clearnet": [ - "https://teddit.net", - "https://teddit.ggc-project.de", - "https://teddit.zaggy.nl", - "https://teddit.namazso.eu", - "https://teddit.tinfoil-hat.net", - "https://teddit.domain.glass", - "https://snoo.ioens.is", - "https://teddit.httpjames.space", - "https://incogsnoo.com", - "https://teddit.pussthecat.org", - "https://reddit.lol", - "https://teddit.sethforprivacy.com", - "https://teddit.totaldarkness.net", - "https://teddit.adminforge.de", - "https://teddit.bus-hit.me", - "https://teddit.froth.zone", - "https://rdt.trom.tf", - "https://teddit.encrypted-data.xyz", - "https://i.opnxng.com", - "https://teddit.tokhmi.xyz", - "https://teddit.garudalinux.org", - "https://tedd.it", - "https://teddit.privacytools.io", - "https://td.vern.cc", - "https://teddit.rawbit.ninja", - "https://teddit.artemislena.eu", - "https://teddit.manasiwibi.com", - "https://teddit.hostux.net" - ], - "tor": [ - "http://snoo.ioensistjs7wd746zluwixvojbbkxhr37lepdvwtdfeav673o64iflqd.onion", - "http://ibarajztopxnuhabfu7fg6gbudynxofbnmvis3ltj6lfx47b6fhrd5qd.onion", - "http://tedditfyn6idalzso5wam5qd3kdtxoljjhbrbbx34q2xkcisvshuytad.onion", - "http://dawtyi5e2cfyfmoht4izmczi42aa2zwh6wi34zwvc6rzf2acpxhrcrad.onion", - "http://qtpvyiaqhmwccxwzsqubd23xhmmrt75tdyw35kp43w4hvamsgl3x27ad.onion", - "http://jnuonmf2n36sfdmyksqqqyab3w63cq4kx24olyjleh5z6zzfvyt7uqqd.onion", - "http://td.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion", - "http://yqu4yj5lju7bmlwpzpmltb5gsu6cw7nnbcxxx4iqemwa56nxjiggf4qd.onion", - "http://teddit.lpoaj7z2zkajuhgnlltpeqh3zyq7wk2iyeggqaduhgxhyajtdt2j7wad.onion", - "http://24fympskbrdgbf4afuvhqwwl2tv3y2vwxg5t2ktozd4j5b3fob5ntzyd.onion" - ], - "i2p": [ - "http://xugoqcf2pftm76vbznx4xuhrzyb5b6zwpizpnw2hysexjdn5l2tq.b32.i2p", - "http://teddit.i2p", - "http://vzeiwzi7ogwl3ijrfek4fbtwhvamxcpyqoc3s4vcgnhlp54s5clq.b32.i2p", - "http://verncco2oaxjikammz4pi7umzp673cme6zuemx7yeeewspwrw3va.b32.i2p" - ], - "loki": [] - }, - "wikiless": { - "clearnet": [ - "https://wikiless.org", - "https://wikiless.sethforprivacy.com", - "https://wiki.604kph.xyz", - "https://wikiless.lunar.icu", - "https://wiki.froth.zone", - "https://wikiless.northboot.xyz", - "https://wikiless.tiekoetter.com", - "https://wikiless.esmailelbob.xyz", - "https://wiki.slipfox.xyz", - "https://wikiless.funami.tech", - "https://wl.vern.cc", - "https://wiki.privacytools.io", - "https://wikiless.rawbit.ninja", - "https://wiki.adminforge.de" - ], - "tor": [ - "http://dj2tbh2nqfxyfmvq33cjmhuw7nb6am7thzd3zsjvizeqf374fixbrxyd.onion", - "http://ybgg2evrcdz37y2qes23ff3wjqjdn33tthgoagi76vhxytu4mpxiz5qd.onion", - "http://wikiless.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd.onion", - "http://c2pesewpalbi6lbfc5hf53q4g3ovnxe4s7tfa6k2aqkf7jd7a7dlz5ad.onion", - "http://wl.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion", - "http://tdx37ew3oke5rxn3yi5r5665ka7ozvehnd4xmnjxxdvqorias2nyl4qd.onion" - ], - "i2p": [ - "http://wikiless.i2p", - "http://hflqp2ejxygpj6cdwo3ogfieqmxw3b56w7dblt7bor2ltwk6kcfa.b32.i2p", - "http://x33lx4h6d7h6xs4eiqwhvaxn3ea5gn2ifmu3jobnvuvn4k4aej7a.b32.i2p", - "http://vernesciy2defjsputrjrv6pa5ll6qzrckfffi5lgkumstdojyga.b32.i2p" - ], - "loki": [] - }, - "scribe": { - "clearnet": [ - "https://scribe.rip", - "https://scribe.nixnet.services", - "https://scribe.citizen4.eu", - "https://scribe.bus-hit.me", - "https://scribe.froth.zone", - "https://scribe.esmailelbob.xyz", - "https://scribe.privacydev.net", - "https://scribe.rawbit.ninja", - "https://sc.vern.cc" - ], - "tor": [], - "i2p": [], - "loki": [] - }, - "quetre": { - "clearnet": [ - "https://quetre.iket.me", - "https://qr.vern.cc", - "https://quetre.pussthecat.org", - "https://quetre.tokhmi.xyz", - "https://quetre.projectsegfau.lt", - "https://quetre.esmailelbob.xyz", - "https://quetre.odyssey346.dev", - "https://quetre.privacydev.net", - "https://ask.habedieeh.re", - "https://quetre.marcopisco.com", - "https://quetre.blackdrgn.nl", - "https://quetre.pufe.org", - "https://quetre.lunar.icu", - "https://que.wilbvr.me" - ], - "tor": [ - "http://quetre.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd.onion", - "http://qr.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion", - "http://ask.habeehrhadazsw3izbrbilqajalfyqqln54mrja3iwpqxgcuxnus7eid.onion", - "http://quetre.g4c3eya4clenolymqbpgwz3q3tawoxw56yhzk4vugqrl6dtu3ejvhjid.onion" - ], - "i2p": [ - "http://vernnflenvsqccuanaun7yydnmturi4jkyxlyzhn6ultpje66c3q.b32.i2p" - ], - "loki": [] - }, - "libremdb": { - "clearnet": [ - "https://libremdb.iket.me", - "https://libremdb.pussthecat.org", - "https://libremdbeu.herokuapp.com", - "https://lmdb.tokhmi.xyz", - "https://libremdb.esmailelbob.xyz", - "https://ld.vern.cc", - "https://binge.whatever.social", - "https://libremdb.lunar.icu" - ], - "tor": [ - "http://libremdb.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd.onion", - "http://ld.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion" - ], - "i2p": [ - "http://vernz3ubrntql4wrgyrssd6u3qzi36zrhz2agbo6vibzbs5olk2q.b32.i2p" - ], - "loki": [] - }, - "simplyTranslate": { - "clearnet": [ - "https://simplytranslate.org", - "https://st.tokhmi.xyz", - "https://translate.josias.dev", - "https://translate.namazso.eu", - "https://translate.riverside.rocks", - "https://simplytranslate.manerakai.com", - "https://translate.bus-hit.me", - "https://simplytranslate.pussthecat.org", - "https://translate.northboot.xyz", - "https://translate.tiekoetter.com", - "https://simplytranslate.esmailelbob.xyz", - "https://tl.vern.cc", - "https://translate.slipfox.xyz", - "https://st.privacydev.net", - "https://translate.priv.pw", - "https://st.odyssey346.dev" - ], - "tor": [ - "http://fyng2tsmzmvxmojzbbwmfnsn2lrcyftf4cw6rk5j2v2huliazud3fjid.onion", - "http://xxtbwyb5z5bdvy2f6l2yquu5qilgkjeewno4qfknvb3lkg3nmoklitid.onion", - "http://translate.prnoid54e44a4bduq5due64jkk7wcnkxcp5kv3juncm7veptjcqudgyd.onion", - "http://simplytranslate.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd.onion", - "http://tl.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion", - "http://st.g4c3eya4clenolymqbpgwz3q3tawoxw56yhzk4vugqrl6dtu3ejvhjid.onion" - ], - "i2p": [ - "http://kmnkkp4v4ublygtnyq46oacy3qw75nrxxniriuaersumw7bfsm2a.b32.i2p", - "http://verna7avzgd4qqal7k2onjzwxcceqby2gwvya2a2frdswb7z2k4q.b32.i2p" - ], - "loki": [ - "http://translate.priv.loki" - ] - }, - "lingva": { - "clearnet": [ - "https://lingva.ml", - "https://translate.igna.wtf", - "https://translate.plausibility.cloud", - "https://lingva.lunar.icu", - "https://translate.projectsegfau.lt", - "https://lingva.garudalinux.org", - "https://translate.dr460nf1r3.org", - "https://translate.jae.fi" - ], - "tor": [], - "i2p": [], - "loki": [] - }, - "libreTranslate": { - "clearnet": [ - "https://libretranslate.com", - "https://translate.argosopentech.com", - "https://translate.terraprint.co", - "https://lt.vern.cc" - ], - "tor": [ - "http://lt.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion" - ], - "i2p": [ - "http://vernf45n7mxwqnp5riaax7p67pwcl7wcefdcnqqvim7ckdx4264a.b32.i2p" - ], - "loki": [] - }, - "searx": { - "clearnet": [ - "https://jsearch.pw", - "https://search.privacyguides.net", - "https://search.stinpriza.org", - "https://search.trom.tf", - "https://searx.bissisoft.com", - "https://searx.divided-by-zero.eu", - "https://searx.dresden.network", - "https://searx.fossencdi.org", - "https://searx.gnu.style", - "https://searx.mastodontech.de", - "https://searx.mxchange.org", - "https://searx.namejeff.xyz", - "https://searx.nixnet.services", - "https://searx.roflcopter.fr", - "https://searx.ru", - "https://searx.semipvt.com", - "https://searx.sp-codes.de", - "https://searx.tyil.nl", - "https://searx.webheberg.info", - "https://searx.win", - "https://searx.xyz", - "https://searx.zapashcanon.fr", - "https://suche.tromdienste.de", - "https://sx.catgirl.cloud" - ], - "tor": [ - "http://3afisqjw2rxm6z7mmstyt5rx75qfqrgxnkzftknbp2vhipr2nrmrjdyd.onion", - "http://z5vawdol25vrmorm4yydmohsd4u6rdoj2sylvoi3e3nqvxkvpqul7bqd.onion", - "http://searxdr3pqz4nydgnqocsia2xbywptxbkympa2emn7zlgggrir4bkfad.onion", - "http://zbuc3bbzbfdqqo2x46repx2ddajbha6fpsjeeptjhhhhzji3zopxdqyd.onion", - "http://f4qfqajszpx5b7itzxt6mb7kj4ktpgbdq7lq6xaiqyqx6a7de3epptad.onion", - "http://searx.micohauwkjbyw5meacrb4ipicwvwg4xtzl7y7viv53kig2mdcsvwkyyd.onion" - ], - "i2p": [ - "http://ransack.i2p", - "http://mqamk4cfykdvhw5kjez2gnvse56gmnqxn7vkvvbuor4k4j2lbbnq.b32.i2p" - ], - "loki": [] - }, - "searxng": { - "clearnet": [ - "https://baresearch.org", - "https://coppedge.info", - "https://darmarit.org/searx", - "https://dynabyte.ca", - "https://etsi.me", - "https://gsch.eu", - "https://intelwinds.com", - "https://northboot.xyz", - "https://notsearch.uk", - "https://ooglester.com", - "https://opnxng.com", - "https://paulgo.io", - "https://priv.au", - "https://privatesearch.dev", - "https://privatus.live", - "https://s.frlt.one", - "https://s.trung.fun", - "https://s.zhaocloud.net", - "https://search.0relay.com", - "https://search.0xgingi.com", - "https://search.affusio.com", - "https://search.bus-hit.me", - "https://search.charleseroop.com", - "https://search.chemicals-in-the-water.eu", - "https://search.cosyinternet.cafe", - "https://search.cronobox.one", - "https://search.disroot.org", - "https://search.gcomm.ch", - "https://search.kiwitalk.de", - "https://search.kvj.ovh", - "https://search.leptons.xyz", - "https://search.mdosch.de", - "https://search.mpx.wtf", - "https://search.neet.works", - "https://search.ononoki.org", - "https://search.rabbit-company.com", - "https://search.rhscz.eu", - "https://search.rowie.at", - "https://search.sapti.me", - "https://search.serginho.dev", - "https://search.smnz.de", - "https://search.suenram.us", - "https://search.unlocked.link", - "https://search.us.projectsegfau.lt", - "https://search.zzls.xyz", - "https://searx.baczek.me", - "https://searx.be", - "https://searx.becomesovran.com", - "https://searx.catfluori.de", - "https://searx.chocoflan.net", - "https://searx.cthd.icu", - "https://searx.delicta.pp.ua", - "https://searx.ericaftereric.top", - "https://searx.esmailelbob.xyz", - "https://searx.fi", - "https://searx.fmac.xyz", - "https://searx.gnous.eu", - "https://searx.juancord.xyz", - "https://searx.mha.fi", - "https://searx.netzspielplatz.de", - "https://searx.oakleycord.dev", - "https://searx.orion-hub.fr", - "https://searx.priv.pw", - "https://searx.prvcy.eu", - "https://searx.rasp.fr", - "https://searx.sev.monster", - "https://searx.si", - "https://searx.slipfox.xyz/searx", - "https://searx.tiekoetter.com", - "https://searx.tuxcloud.net", - "https://searx.work", - "https://searxng.au", - "https://searxng.bandarawela.net", - "https://searxng.diadz.de", - "https://searxng.fingerbib.xyz", - "https://searxng.nicfab.eu", - "https://spot.murena.io", - "https://srx.cosmohub.io", - "https://swag.pw", - "https://www.gruble.de", - "https://www.jabber-germany.de/searx", - "https://xo.wtf" - ], - "tor": [ - "http://w5rl6wsd7mzj4bdkbuqvzidet5osdsm5jhg2f7nvfidakfq5exda5wid.onion", - "http://4n53nafyi77iplnbrpmxnp3x4exbswwxigujaxy3b37fvr7bvlopxeyd.onion", - "http://privateoz3u5utrimal2edr56j3r5caakektxxgixigdkycuxigvquid.onion", - "http://searxyqdegtqksicnwpxa24ipnb2ylmp6iutnnwtazbhup4dit4eeyqd.onion", - "http://searchvrzxoqa4k76duqh4wtzpr553hfl53qpytclxf7zci53lwklfyd.onion", - "http://gbat2pbpg7ys3fi3pbp64667tt5x66mg45xok35bxdw7v55brm7a27yd.onion", - "http://qyyb5xsar7gp4q3agxnrxgajx4nnnihptqhmyee5nolidtkhxjks6ayd.onion", - "http://searx.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd.onion", - "http://searxfilowxokbogygrigir4wqxfxqzuxofxgdon7dg6rsii4yxzytyd.onion", - "http://searx.privpw3tndpkw6pnp3g727zfgfdzbu3k6a7chv226s3xymv2p4eiuqyd.onion", - "http://rq2w52kyrif3xpfihkgjnhqm3a5aqhoikpv72z3drpjglfzc2wr5z4yd.onion", - "http://fub6vgedgeadlu3ctskrpkcqjruh76tckwtj5swfhyblgml2tzgzckqd.onion/searx", - "http://searx3aolosaf3urwnhpynlhuokqsgz47si4pzz5hvb7uuzyjncl2tid.onion", - "https://lgmekfnpealdqhnctyg3p5fuelpdwnbqbwnl2ickpdoodzatzgz27ryd.onion" - ], - "i2p": [], - "loki": [] - }, - "whoogle": { - "clearnet": [ - "https://search.albony.xyz", - "https://search.garudalinux.org", - "https://search.dr460nf1r3.org", - "https://s.tokhmi.xyz", - "https://search.sethforprivacy.com", - "https://whoogle.dcs0.hu", - "https://whoogle.esmailelbob.xyz", - "https://gowogle.voring.me", - "https://whoogle.privacydev.net", - "https://wg.vern.cc", - "https://www.indexia.gq", - "https://whoogle.lunar.icu" - ], - "tor": [ - "http://whoglqjdkgt2an4tdepberwqz3hk7tjo4kqgdnuj77rt7nshw2xqhqad.onion", - "http://nuifgsnbb2mcyza74o7illtqmuaqbwu4flam3cdmsrnudwcmkqur37qd.onion", - "http://whoogle.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion", - "http://whoogle.g4c3eya4clenolymqbpgwz3q3tawoxw56yhzk4vugqrl6dtu3ejvhjid.onion" - ], - "i2p": [ - "http://verneks7rfjptpz5fpii7n7nrxilsidi2qxepeuuf66c3tsf4nhq.b32.i2p" - ], - "loki": [] - }, - "librex": { - "clearnet": [ - "https://search.femboy.hu", - "https://lx.vern.cc", - "https://lx.sesu.cc", - "https://librex.mikata.ru", - "https://librex.terryiscool160.xyz", - "https://librex.nekus.gay", - "https://search.davidovski.xyz", - "https://search.funami.tech", - "https://search.madreyk.xyz", - "https://search.pabloferreiro.es", - "https://buscar.weblibre.org", - "https://search.ahwx.org", - "https://librex.pufe.org", - "https://search.milivojevic.in.rs", - "https://librex.ratakor.com", - "https://search.tildevarsh.in", - "https://librex.myroware.eu", - "https://search.mascotboi.xyz" - ], - "tor": [ - "http://search.cepyxplublbyw2f4axy4pyztfbxmf63lrt2c7uwv6wl4iixz53czload.onion", - "http://lx.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion", - "http://lx.swxoebbpeqiiixyhbuh3vbw53pdrmtbiaj2sqveol6kkn5rpapfi4aad.onion", - "http://f7ssz7l3biu4fugwctfpcx4txg5yq4gqhrt473ledsuc3ivtd3omniid.onion", - "http://librex.n53wt4ivvfdfaqkwldgdzfsubszukie2an6auja6x2wp3e3oa7v2gqyd.onion", - "http://5yblccekvswxl4n43bn5eg4pr7c4xygvu5lhhdb6ulzmislvahmhitad.onion" - ], - "i2p": [ - "http://vernziqfqvweijfaacmwazohgpdo2bt2ib2jlupt2pwwu27bhgxq.b32.i2p", - "http://lqbchqljxiwl3bbjt4vqe76luovk5ly6khqhg7mt5qcqfn6e4sbq.b32.i2p" - ], - "loki": [] - }, - "rimgo": { - "clearnet": [ - "https://rimgo.pussthecat.org", - "https://rimgo.totaldarkness.net", - "https://rimgo.bus-hit.me", - "https://rimgo.esmailelbob.xyz", - "https://i.actionsack.com", - "https://rimgo.privacydev.net", - "https://imgur.artemislena.eu", - "https://rimgo.vern.cc", - "https://rimgo.hostux.net", - "https://ri.zzls.xyz", - "https://rimgo.marcopisco.com" - ], - "tor": [ - "http://rimgo.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd.onion", - "http://rimgo.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion" - ], - "i2p": [], - "loki": [] - }, - "librarian": { - "clearnet": [ - "https://odysee.076.ne.jp", - "https://librarian.pussthecat.org", - "https://lbry.projectsegfau.lt", - "https://librarian.esmailelbob.xyz", - "https://lbry.vern.cc", - "https://lbry.slipfox.xyz", - "https://lbry.mywire.org", - "https://lbry.ooguy.com", - "https://lbn.frail.duckdns.org" - ], - "tor": [ - "http://librarian.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd.onion", - "http://lbry.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion", - "http://5znbzx2xcymhddzekfjib3isgqq4ilcyxa2bsq6vqmnvbtgu4f776lqd.onion", - "http://zjmls4urccc5wxc64ilbv4oqarjab6pbanvmhd2qqt6p7fgqrjjnryqd.onion", - "http://bxewpsswttslepw27w2hhxhlizwm7l7y54x3jw5cfrb64hb6lgc557ad.onion" - ], - "i2p": [], - "loki": [] - }, - "neuters": { - "clearnet": [ - "https://neuters.de" - ], - "tor": [], - "i2p": [], - "loki": [] - }, - "beatbump": { - "clearnet": [ - "https://beatbump.ml", - "https://beatbump.esmailelbob.xyz" - ], - "tor": [ - "http://beatbump.lqs5fjmajyp7rvp4qvyubwofzi6d4imua7vs237rkc4m5qogitqwrgyd.onion" - ], - "i2p": [], - "loki": [] - }, - "hyperpipe": { - "clearnet": [ - "https://hyperpipe.surge.sh", - "https://hyperpipe.esmailelbob.xyz", - "https://listen.whatever.social", - "https://music.adminforge.de" - ], - "tor": [ - "http://hyperpipe.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd.onion" - ], - "i2p": [], - "loki": [] - }, - "facil": { - "clearnet": [ - "https://facilmap.org" - ], - "tor": [], - "i2p": [], - "loki": [] - }, - "simpleertube": { - "clearnet": [ - "https://tube.simple-web.org", - "https://simpleertube.esmailelbob.xyz", - "https://stube.tokhmi.xyz", - "https://st.vern.cc" - ], - "tor": [ - "http://simpleertube.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd.onion", - "http://st.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion" - ], - "i2p": [ - "http://verntblehhel4dx6ntyxkj4mryvic3s3yptzxewzwnldq3esi4qq.b32.i2p" - ], - "loki": [] - }, - "breezeWiki": { - "clearnet": [ - "https://breezewiki.com", - "https://breezewiki.pussthecat.org", - "https://bw.odyssey346.dev", - "https://bw.vern.cc", - "https://breezewiki.esmailelbob.xyz", - "https://bw.artemislena.eu", - "https://breeze.hostux.net" - ], - "tor": [], - "i2p": [], - "loki": [] - }, - "privateBin": { - "clearnet": [ - "https://paste.aryu.de", - "https://bonus01.hwb0307.com", - "https://bin.urla.no", - "https://bin.foss.wtf", - "https://cpaste.org", - "https://privatebin.rockhost.se", - "https://secrets.cebador.fr", - "https://andoc.yateam.cc", - "https://0a0bin.klowdee.host", - "https://vip.ci", - "https://paste.momobako.com", - "https://paste.07f.de", - "https://notebin.de", - "https://privatebin.io", - "https://pastebin.linqhost.nl", - "https://pastebin.grey.pw", - "https://paste.0xfc.de", - "https://0.klowdee.host", - "https://paste.ononoki.org", - "https://paste.techbag.app", - "https://privload.com", - "https://bin.bus-hit.me", - "https://bin.nixnet.services", - "https://paste.itefix.net", - "https://0.jaegers.net", - "https://secrets.true.nl", - "https://pb.vern.cc", - "https://p.darklab.sh", - "https://zerobin.thican.net", - "https://privatebin.wsmm.de", - "https://privatebin.net", - "https://paste.hostux.net", - "https://bin.klowdee.host", - "https://privatebin.at", - "https://bin.0xfc.de", - "https://snip.dssr.ch", - "https://paste.tildeverse.org", - "https://0.0g.gg", - "https://pastebin.hot-chilli.net", - "https://luckvintage.com" - ], - "tor": [], - "i2p": [], - "loki": [] - }, - "peertube": [ - "https://search.joinpeertube.org", - "https://video.ipng.ch", - "https://bolitoglossa.com", - "https://tv.die3um2.de", - "https://video.millironx.com", - "https://freesoto-u2151.vm.elestio.app", - "https://peertube.tv", - "https://video.pancasat.com", - "https://area51.media", - "https://myvideos.facb69.com.br", - "https://ytube.retronerd.at", - "https://xn--fsein-zqa5f.xn--nead-na-bhfinleog-hpb.ie", - "https://media.mzhd.de", - "https://mtube.mooo.com", - "https://peertube.hostservice.nl", - "https://video.taskcards.eu", - "https://3.600900.su", - "https://peer.lukeog.com", - "https://peertube.s-w2.de", - "https://peertube.hackerfoo.com", - "https://peertube.ro", - "https://video.fdlibre.eu", - "https://peertube.sqweeb.net", - "https://videos.miolo.org", - "https://stream.webinology.one", - "https://tube.la-dina.net", - "https://tube.mediasculp.com", - "https://peertube.kodein.be", - "https://video.nstr.no", - "https://tube.chosto.me", - "https://videos.ac-nancy-metz.fr", - "https://tube.gaiac.io", - "https://tube.fait.ch", - "https://video.csc49.fr", - "https://mevideo.host", - "https://tv.zonepl.net", - "https://tube.4aem.com", - "https://p2ptv.ru", - "https://peertube.adresse.data.gouv.fr", - "https://video.fosshost.com", - "https://cmc-peertube-u1517.vm.elestio.app", - "https://syrteplay.obspm.fr", - "https://peertube.brutusbond.nohost.me", - "https://vjunity.tk", - "https://tube.invisible.ch", - "https://videomensoif.ynh.fr", - "https://cloudtube.ise.fraunhofer.de", - "https://videos.jacksonchen666.com", - "https://virtual-girls-are.definitely-for.me", - "https://peertube.nayya.org", - "https://ebildungslabor.video", - "https://tube.mfraters.net", - "https://video.poticha.pretex.space", - "https://peertube-demo.learning-hub.fr", - "https://peertube.freeforge.eu", - "https://video.testlivechat.cf", - "https://perceptiontravel.tv", - "https://portal.digilab.nfa.cz", - "https://peertube.karcsesz.hu", - "https://peertube.libretic.fr", - "https://astrotube-ufe.obspm.fr", - "https://peertube.r2.enst.fr", - "https://video.emergeheart.info", - "https://peertube.archive.pocketnet.app", - "https://v.koa.im", - "https://ptube.ranranhome.info", - "https://vod.newellijay.tv", - "https://tube.darknight-coffee.org", - "https://videos.leslionsfloorball.fr", - "https://peertube.grosist.fr", - "https://www4.mir.inter21.net", - "https://tube.anno79.de", - "https://video.cnnumerique.fr", - "https://video.dudenas.lt", - "https://tube.s1gm4.eu", - "https://comics.peertube.biz", - "https://tube.vincentux.fr", - "https://peertube.semperpax.com", - "https://media.zat.im", - "https://turkum.me", - "https://peertube.ifwo.eu", - "https://video.icic-net.com", - "https://cinema.astral.camp", - "https://praxis.su", - "https://video.avant-le-strike.buzz", - "https://fedi.video", - "https://tube.tuxfriend.fr", - "https://tube.thierrytalbert.fr", - "https://jetstream.watch", - "https://birdtu.be", - "https://peertube.wiesbaden.social", - "https://tube.balamb.fr", - "https://video.islameye.com", - "https://tube.leetdreams.ch", - "https://tube.lab.nrw", - "https://peertube.concordia.social", - "https://peertube.informaction.info", - "https://peertube.functional.cafe", - "https://live.libratoi.org", - "https://video.lunago.net", - "https://watch.vtopia.live", - "https://thevideoverse.com", - "https://peertube.am-networks.fr", - "https://videos.aroaduntraveled.com", - "https://tube.sanemind.de", - "https://leopard.tube", - "https://video.oljo.xyz", - "https://mix.video", - "https://video.up.edu.ph", - "https://peertube.fioverse.zone", - "https://luxtube.lu", - "https://nyltube.nylarea.com", - "https://tubee.fr", - "https://peertube.cube4fun.net", - "https://pt.freedomwolf.cc", - "https://videos.wikilibriste.fr", - "https://tube.tr4sk.me", - "https://secure.scanovid.com", - "https://secure.direct-live.net", - "https://peertube.blindskeleton.one", - "https://peertube-blablalinux.be", - "https://videos.icum.to", - "https://video.jacen.moe", - "https://astrotube.obspm.fr", - "https://ptube.rousset.nom.fr", - "https://video.simplex-software.ru", - "https://p2ptube.us", - "https://peertube.zapashcanon.fr", - "https://video.asgardius.company", - "https://videos.thinkerview.com", - "https://linhtran.eu", - "https://video.writeas.org", - "https://videos.alexandrebadalo.pt", - "https://video.taboulisme.com", - "https://peertube.b38.rural-it.org", - "https://tube.gnous.eu", - "https://peertube.nogafa.org", - "https://tube.pacapime.ovh", - "https://tube.techeasy.org", - "https://videonaute.fr", - "https://periscope.numenaute.org", - "https://v.basspistol.org", - "https://phoenixproject.group", - "https://www.aktion-nordost.tv", - "https://tube.sysctl.io", - "https://stattzeitung.live", - "https://videos2.tormentasolar.win", - "https://kino.schuerz.at", - "https://video.clumsy.computer", - "https://streamarchive.manicphase.me", - "https://tube.xn--baw-joa.social", - "https://tube.pawelko.net", - "https://peertube.familleboisteau.fr", - "https://peertube.librelabucm.org", - "https://peertube.plasmatrap.com", - "https://pete.warpnine.de", - "https://avi.jodh.us", - "https://sovran.video", - "https://tube.miegl.cz", - "https://tube.cnr.it", - "https://video.barkoczy.social", - "https://videos.arumoon.ru", - "https://video.software-fuer-engagierte.de", - "https://peertube.rural-it.org", - "https://bideoteka.eus", - "https://peer.tube", - "https://peertube.robonomics.network", - "https://docker.videos.lecygnenoir.info", - "https://peertube.inubo.ch", - "https://peertube.zd.do", - "https://video.metaversum.wtf", - "https://video.okaris.de", - "https://tv.filmfreedom.net", - "https://vnhup.com", - "https://video.perivid.xyz", - "https://peertube.viviers-fibre.net", - "https://peertube.madixam.xyz", - "https://peertube.elforcer.ru", - "https://videos.ubuntu-paris.org", - "https://peertube.metalbanana.net", - "https://peertube.marienschule.de", - "https://cdn01.tilvids.com", - "https://sdmtube.fr", - "https://tv.datamol.org", - "https://pt.vern.cc", - "https://peertube.cirkau.art", - "https://video.team-lcbs.eu", - "https://bitcointv.net", - "https://tube.wehost.lgbt", - "https://peertube.2i2l.net", - "https://medias.debrouillonet.org", - "https://watch.nuked.social", - "https://breeze.tube", - "https://tube.oraclefilms.com", - "https://dytube.com", - "https://videos.mattwilson.org", - "https://watch.snoot.tube", - "https://peertube.treffler.cloud", - "https://flim.txmn.tk", - "https://videos.capas.se", - "https://tube.govital.net", - "https://video.jigmedatse.com", - "https://tube.kh-berlin.de", - "https://media.over-world.org", - "https://videos.codingotaku.com", - "https://tube.sloth.network", - "https://video.cnr.it", - "https://video.mentality.rip", - "https://nanawel-peertube.dyndns.org", - "https://video.catgirl.biz", - "https://mani.tube", - "https://stream.dynacloud.ynh.fr", - "https://tube.anufrij.de", - "https://film.node9.org", - "https://peertube.wtfayla.net", - "https://video.bmu.cloud", - "https://tbh.co-shaoghal.net", - "https://tube.kansanvalta.org", - "https://tube.media-techport.de", - "https://video.vegafjord.me", - "https://peertube-us.howlround.com", - "https://peertube-eu.howlround.com", - "https://peertube.tni-hosted.nl", - "https://videos.parleur.net", - "https://video.electronicping.net", - "https://videos.im.allmendenetz.de", - "https://peertube.askan.info", - "https://apertatube.net", - "https://beetoons.tv", - "https://rankett.net", - "https://tube.xsoftware.it", - "https://video.ut0pia.org", - "https://kinotu.be", - "https://tube.nogafa.org", - "https://www.neptube.io", - "https://tube.ghk-academy.info", - "https://pcbu.nl", - "https://pire.artisanlogiciel.net", - "https://tube-test.apps.education.fr", - "https://tube-sciences-technologies.apps.education.fr", - "https://tube-institutionnel.apps.education.fr", - "https://tube-cycle-3.apps.education.fr", - "https://tubulus.openlatin.org", - "https://video.graine-pdl.org", - "https://tube-cycle-2.apps.education.fr", - "https://videos.keyedlimepie.org", - "https://video.davduf.net", - "https://tube.oldkid.digital", - "https://tube-langues-vivantes.apps.education.fr", - "https://tube-arts-lettres-sciences-humaines.apps.education.fr", - "https://videos.scanlines.xyz", - "https://video.kicik.fr", - "https://media.theplattform.net", - "https://v.lastorder.xyz", - "https://tube.cybershock.life", - "https://tube.reseau-canope.fr", - "https://frentube.myyouniverse.observer", - "https://tube-maternelle.apps.education.fr", - "https://video.trankil.info", - "https://video.uriopss-pdl.fr", - "https://video.3cmr.fr", - "https://video.thinkof.name", - "https://video.occm.cc", - "https://tube-action-educative.apps.education.fr", - "https://videos.yesil.club", - "https://peertube.adjutor.xyz", - "https://tube-numerique-educatif.apps.education.fr", - "https://tube.itsg.host", - "https://lucarne.balsamine.be", - "https://video.ados.accoord.fr", - "https://tube-education-physique-et-sportive.apps.education.fr", - "https://videos.lemouvementassociatif-pdl.org", - "https://peertube.0x5e.eu", - "https://play.mittdata.se", - "https://peertube.letoine.fr", - "https://tube-enseignement-professionnel.apps.education.fr", - "https://videos.laliguepaysdelaloire.org", - "https://twctube.twc-zone.eu", - "https://vhs.absturztau.be", - "https://phijkchu.com", - "https://video.lycee-experimental.org", - "https://tube.motuhake.xyz", - "https://hitchtube.fr", - "https://video.fox-romka.ru", - "https://peertube.ctrl-c.liu.se", - "https://video.slipfox.xyz", - "https://vnop.org", - "https://videos.cassidypunchmachine.com", - "https://dalek.zone", - "https://seka.pona.la", - "https://watch.thelema.social", - "https://vid.mkp.ca", - "https://jupiter.tube", - "https://peertube.chaunchy.com", - "https://tube.vrpnet.org", - "https://video.tii.space", - "https://nightshift.minnix.dev", - "https://tube.friloux.me", - "https://peertube.virtual-assembly.org", - "https://peertube.atilla.org", - "https://tube.azkware.net", - "https://video.lunasqu.ee", - "https://v.mkp.ca", - "https://peertube.eus", - "https://infothema.net", - "https://tube.nilsu.org", - "https://pirtube.calut.fr", - "https://videos.martyn.berlin", - "https://video.colibris-outilslibres.org", - "https://peertube.chantierlibre.org", - "https://video.niboe.info", - "https://peertuibe.fedsinfo.nohost.me", - "https://videos.alamaisondulibre.org", - "https://videos.tormentasolar.win", - "https://tube.nestor.coop", - "https://live.oldskool.fi", - "https://tube.ac-amiens.fr", - "https://tube.alado.space", - "https://tube.network.europa.eu", - "https://pt.maciej.website", - "https://peertube.bgzashtita.es", - "https://tube.genb.de", - "https://cliptube.org", - "https://videos.campdarling.com", - "https://tube.rooty.fr", - "https://tube.dnet.one", - "https://www.kotikoff.net", - "https://peertube.nz", - "https://pt.k2s.sk", - "https://video.cats-home.net", - "https://peertube.narrativerry.xyz", - "https://tube.9minuti.it", - "https://peertube.hackerfraternity.org", - "https://openmedia.edunova.it", - "https://ocfedtest.hosted.spacebear.ee", - "https://mirrored.rocks", - "https://demo.lioncast.org", - "https://peertube.get-racing.de", - "https://pierre.tube", - "https://mirametube.fr", - "https://vidz.dou.bet", - "https://video.hostpath.de", - "https://peertube.gsugambit.com", - "https://yhwh.tube", - "https://tube.kicou.info", - "https://video.aqr.af", - "https://videos-passages.huma-num.fr", - "https://video.linc.systems", - "https://video.sftblw.moe", - "https://ptube.horsentiers.fr", - "https://video.cnt.social", - "https://peertube.ketchup.noho.st", - "https://video.retroedge.tech", - "https://pt.ilyamikcoder.com", - "https://peertube.sensin.eu", - "https://video.sadmin.io", - "https://stream.jurnalfm.md", - "https://video.publicspaces.net", - "https://video.eientei.org", - "https://tv.suwerenni.org", - "https://tube.revertron.com", - "https://tube.erzbistum-hamburg.de", - "https://views.southfox.me", - "https://video.mttv.it", - "https://peertube.cloud.nerdraum.de", - "https://vid.pretok.tv", - "https://videos.sarcasmstardust.com", - "https://videos.factsonthegroundshow.com", - "https://tv.santic-zombie.ru", - "https://tube.sleeping.town", - "https://peertube.hacknews.pmdcollab.org", - "https://video.snug.moe", - "https://videos.ritimo.org", - "https://video.greenmycity.eu", - "https://przej.me", - "https://pt.mezzo.moe", - "https://tube.dsocialize.net", - "https://video.pourpenser.pro", - "https://videos.npo.city", - "https://video.linux.it", - "https://bee-tube.fr", - "https://vid.prometheus.systems", - "https://tube.nx12.net", - "https://peertube.ignifi.me", - "https://tv.based.quest", - "https://creemoseducacioninclusiva.uma.es", - "https://videos.yeswiki.net", - "https://video.r3s.nrw", - "https://peertube.semweb.pro", - "https://testube.distrilab.fr", - "https://peertube.rse43.com", - "https://vid.lelux.fi", - "https://media.econoalchemist.com", - "https://video.qoto.org", - "https://peertube.maxweiss.io", - "https://peertube.ffs2play.fr", - "https://peertube.swarm.solvingmaz.es", - "https://raptube.antipub.org", - "https://video.cm-en-transition.fr", - "https://tube.koweb.fr", - "https://peertube.genma.fr", - "https://tv.generallyrubbish.net.au", - "https://peertube.satoshishop.de", - "https://peertube.zwindler.fr", - "https://videos.fsci.in", - "https://video.dnfi.no", - "https://peertube.revelin.fr", - "https://peertube.ti-fr.com", - "https://video.turbo.chat", - "https://video.chbmeyer.de", - "https://video.rs-einrich.de", - "https://peertube.librenet.co.za", - "https://h3h3.club", - "https://tube.freepeople.fr", - "https://video.lrose.de", - "https://video.chalec.org", - "https://dud175.inf.tu-dresden.de", - "https://peertube.fenarinarsa.com", - "https://ias-peertube.iosb.fraunhofer.de", - "https://exode.me", - "https://video.anartist.org", - "https://peertube.home.x0r.fr", - "https://peertube.marud.fr", - "https://skeptube.fr", - "https://tube.villejuif.fr", - "https://videos.hyphalfusion.network", - "https://videos.fromouter.space", - "https://pocketnetpeertube11.nohost.me", - "https://videos.rights.ninja", - "https://tube.pilgerweg-21.de", - "https://pocketnetpeertube2.nohost.me", - "https://peertube.bubbletea.dev", - "https://peertube.art3mis.de", - "https://tube.rfc1149.net", - "https://tube.radiomercure.fr", - "https://peertube.1984.cz", - "https://pt.nix.uno", - "https://videos.openmandriva.org", - "https://peertube.soykaf.org", - "https://tube.interhacker.space", - "https://video.firehawk-systems.com", - "https://tube.otter.sh", - "https://replay.jres.org", - "https://peertube.lagob.fr", - "https://peertube.gcaillaut.fr", - "https://peertube.hellsite.net", - "https://peertube.hosnet.fr", - "https://video.extremelycorporate.ca", - "https://videos.b4tech.org", - "https://video.off-investigation.fr", - "https://stream.litera.tools", - "https://peertube.kriom.net", - "https://peertube.gemlog.ca", - "https://nettube.uc-netcorsoft.de", - "https://live.solari.com", - "https://live.codinglab.ch", - "https://dud-video.inf.tu-dresden.de", - "https://media.interior.edu.uy", - "https://www.orion-hub.fr", - "https://tv.orion-serv.fr", - "https://video.interru.io", - "https://tube.ponsonaille.fr", - "https://tube.int5.net", - "https://peertube.jackbot.fr", - "https://stream.nuemedia.se", - "https://peertube.arch-linux.cz", - "https://tube.digitalesozialearbeit.de", - "https://tube.spdns.org", - "https://tube.onlinekirche.net", - "https://tube.systerserver.net", - "https://peertube.redpill-insight.com", - "https://pt.sfunk1x.com", - "https://video.antopie.org", - "https://vtr.chikichiki.tube", - "https://fedimovie.com", - "https://peertube.communecter.org", - "https://queermotion.org", - "https://video.audiovisuel-participatif.org", - "https://peertube.vip", - "https://video.liveitlive.show", - "https://vid.plantplotting.co.uk", - "https://video.telemillevaches.net", - "https://tv.pirati.cz", - "https://peertube.therealblue.de", - "https://tube.nuxnik.com", - "https://tube.froth.zone", - "https://peertube.ethibox.fr", - "https://tube.communia.org", - "https://peertube.dragonborn.app", - "https://ai-tube.ch", - "https://video.citizen4.eu", - "https://video.matomocamp.org", - "https://media.fsfe.org", - "https://flytandemeistring.space", - "https://video.windfluechter.org", - "https://pocketnetpeertube10.nohost.me", - "https://tube.io18.top", - "https://tube.geekyboo.net", - "https://notretube.asselma.eu", - "https://canal.facil.services", - "https://pt.gordons.gen.nz", - "https://tube.misterbanal.net", - "https://peertube.fomin.site", - "https://video.ellijaymakerspace.org", - "https://videos.benpro.fr", - "https://peertube.expi.studio", - "https://crank.recoil.org", - "https://tube.flokinet.is", - "https://peertube.education-forum.com", - "https://apathy.tv", - "https://pocketnetpeertube9.nohost.me", - "https://lfbu.nl", - "https://peertube.paladyn.org", - "https://fightforinfo.com", - "https://tube.ulne.be", - "https://video.rubdos.be", - "https://anarchy.tube", - "https://tube.elemac.fr", - "https://videos.bik.opencloud.lu", - "https://videos.aadtp.be", - "https://videos.globenet.org", - "https://pt01.lehrerfortbildung-bw.de", - "https://videos.buceoluegoexisto.com", - "https://tube.exozy.me", - "https://video.benetou.fr", - "https://bideoak.argia.eus", - "https://video.hainry.fr", - "https://video.gresille.org", - "https://puffy.tube", - "https://tube.kher.nl", - "https://watch.ocaml.org", - "https://peertube.kleph.eu", - "https://tube.missbanal.net", - "https://pityu.flaki.hu", - "https://pony.tube", - "https://tube.okcinfo.news", - "https://www.rocaguinarda.tv", - "https://merci-la-police.fr", - "https://video.rhizome.org", - "https://video.medienzentrum-harburg.de", - "https://video.metaccount.de", - "https://video.libreti.net", - "https://peertube.scyldings.com", - "https://gade.o-k-i.net", - "https://peertube.mobilsicher.de", - "https://video.amiga-ng.org", - "https://peertube.espace.si", - "https://videos.supertuxkart.net", - "https://pt.borgcube.eu", - "https://socialwebtube.com", - "https://kraut.zone", - "https://www.birkeundnymphe.de", - "https://birkeundnymphe.de", - "https://v.kisombrella.top", - "https://tube.sp-codes.de", - "https://tube.pyngu.com", - "https://peertube.troback.com", - "https://peertube.ucy.de", - "https://peertube.bridaahost.ynh.fr", - "https://watch.softinio.com", - "https://peertube.plataformess.org", - "https://tube.arthack.nz", - "https://tv.atmx.ca", - "https://kino.kompot.si", - "https://tube.kockatoo.org", - "https://peertube.cabaal.net", - "https://stream.k-prod.fr", - "https://tube.tylerdavis.xyz", - "https://video.marcorennmaus.de", - "https://peertube.ecologie.bzh", - "https://peertube.atsuchan.page", - "https://peertube.vlaki.cz", - "https://video-cave-v2.de", - "https://peertube.keazilla.net", - "https://vids.tekdmn.me", - "https://piraten.space", - "https://tube.bstly.de", - "https://web-fellow.de", - "https://peertube.alpharius.io", - "https://ptb.lunarviews.net", - "https://videos.ahp-numerique.fr", - "https://video.gyt.is", - "https://peertube.jensdiemer.de", - "https://tube.futuretic.fr", - "https://peertube.beeldengeluid.nl", - "https://tv.lumbung.space", - "https://peertube.cuatrolibertades.org", - "https://videos.hush.is", - "https://tube.ebin.club", - "https://tube.tpshd.de", - "https://video.ozgurkon.org", - "https://video.progressiv.dev", - "https://video.migennes.net", - "https://irrsinn.video", - "https://pocketnetpeertube4.nohost.me", - "https://comf.tube", - "https://pocketnetpeertube6.nohost.me", - "https://pocketnetpeertube5.nohost.me", - "https://peertube.radres.xyz", - "https://darkvapor.nohost.me", - "https://peertube.klaewyss.fr", - "https://peertube.takeko.cyou", - "https://hyperreal.tube", - "https://video.selea.se", - "https://tv.neue.city", - "https://videos.shmalls.pw", - "https://peertube.iriseden.eu", - "https://video.shitposter.club", - "https://peertube.kx.studio", - "https://tube.octaplex.net", - "https://video.076.ne.jp", - "https://stream.elven.pw", - "https://juggling.digital", - "https://videos.rampin.org", - "https://bitcointv.com", - "https://media.gzevd.de", - "https://video.resolutions.it", - "https://tube.cms.garden", - "https://peertube.luckow.org", - "https://video.linuxtrent.it", - "https://tube.bachaner.fr", - "https://video.comune.trento.it", - "https://tube.org.il", - "https://tv.pirateradio.social", - "https://peertube.eu.org", - "https://peertube.mxinfo.fr", - "https://conspiracydistillery.com", - "https://hpstube.fr", - "https://video.blast-info.fr", - "https://peertube.bubuit.net", - "https://climatejustice.video", - "https://wikileaks.video", - "https://fair.tube", - "https://tube.lokad.com", - "https://videos.benjaminbrady.ie", - "https://video.binarydad.com", - "https://tube.pmj.rocks", - "https://ptmir4.inter21.net", - "https://ptmir3.inter21.net", - "https://peertube.habets.house", - "https://tube.yapbreak.fr", - "https://peertube.ctseuro.com", - "https://spectra.video", - "https://live.nanao.moe", - "https://peertube.inapurna.org", - "https://watch.libertaria.space", - "https://video.triplea.fr", - "https://vulgarisation-informatique.fr", - "https://tube.kotur.org", - "https://peertube.euskarabildua.eus", - "https://video.veloma.org", - "https://regarder.sans.pub", - "https://tube.rhythms-of-resistance.org", - "https://video.lespoesiesdheloise.fr", - "https://peertube.luga.at", - "https://peertube.roflcopter.fr", - "https://peertube.swrs.net", - "https://tube.shanti.cafe", - "https://videos.cloudron.io", - "https://tube.seditio.fr", - "https://video.codingfield.com", - "https://tv.adn.life", - "https://peertube.br0.fr", - "https://video.bards.online", - "https://video.toot.pt", - "https://videos.archigny.net", - "https://videos.pzelawski.xyz", - "https://peertube.zoz-serv.org", - "https://videos.stadtfabrikanten.org", - "https://peertube.gargantia.fr", - "https://tube.melonbread.xyz", - "https://tube.grap.coop", - "https://webtv.vandoeuvre.net", - "https://peertube.european-pirates.eu", - "https://video.fhtagn.org", - "https://kirche.peertube-host.de", - "https://v.lor.sh", - "https://peertube.be", - "https://peertube.linuxrocks.online", - "https://grypstube.uni-greifswald.de", - "https://wiwi.video", - "https://video.soi.ch", - "https://peertube.cpge-brizeux.fr", - "https://tube.distrilab.fr", - "https://kinowolnosc.pl", - "https://videos.trom.tf", - "https://videos.john-livingston.fr", - "https://melsungen.peertube-host.de", - "https://evangelisch.video", - "https://videos.mastodont.cat", - "https://media.undeadnetwork.de", - "https://tube.dragonpsi.xyz", - "https://peertube.nicolastissot.fr", - "https://tube.lucie-philou.com", - "https://tube.schule.social", - "https://unfilter.tube", - "https://tube.systest.eu", - "https://tube.xd0.de", - "https://tube.xy-space.de", - "https://studios.racer159.com", - "https://fediverse.tv", - "https://xxivproduction.video", - "https://digitalcourage.video", - "https://tvox.ru", - "https://video.kuba-orlik.name", - "https://peer.azurs.fr", - "https://video.ecole-89.com", - "https://video.fbxl.net", - "https://video.p1ng0ut.social", - "https://video.pcf.fr", - "https://kumi.tube", - "https://tube.rsi.cnr.it", - "https://peertube.dc.pini.fr", - "https://peertube.bilange.ca", - "https://watch.ignorance.eu", - "https://tube.schleuss.online", - "https://tube.saumon.io", - "https://theater.ethernia.net", - "https://watch.tubelab.video", - "https://lastbreach.tv", - "https://tube.abolivier.bzh", - "https://video.coales.co", - "https://film.k-prod.fr", - "https://videos.danksquad.org", - "https://peertube.tweb.tv", - "https://peertube.lestutosdeprocessus.fr", - "https://video.mycrowd.ca", - "https://kodcast.com", - "https://video.altertek.org", - "https://tube.oisux.org", - "https://peertube.louisematic.site", - "https://tube.lacaveatonton.ovh", - "https://peertube.tspu.edu.ru", - "https://p.lu", - "https://peertube.public.cat", - "https://peertube.anduin.net", - "https://peertube.r5c3.fr", - "https://mountaintown.video", - "https://ptmir1.inter21.net", - "https://fotogramas.politicaconciencia.org", - "https://peertube.pl", - "https://peertube.manalejandro.com", - "https://video.dresden.network", - "https://40two.tube", - "https://tube.amic37.fr", - "https://video.comptoir.net", - "https://peertube.tiennot.net", - "https://tututu.tube", - "https://tube.picasoft.net", - "https://videos.pair2jeux.tube", - "https://video.internet-czas-dzialac.pl", - "https://thecool.tube", - "https://tube.troopers.agency", - "https://peertube.chtisurel.net", - "https://video.mass-trespass.uk", - "https://daschauher.aksel.rocks", - "https://tube.cyano.at", - "https://tube.nox-rhea.org", - "https://peertube.securitymadein.lu", - "https://mytube.kn-cloud.de", - "https://tube.nuagelibre.fr", - "https://video.nogafam.es", - "https://peertube.stream", - "https://player.ojamajo.moe", - "https://video.cigliola.com", - "https://canard.tube", - "https://tube.jeena.net", - "https://tube.cloud-libre.eu", - "https://videos.coletivos.org", - "https://peertube.xwiki.com", - "https://cinema.yunohost.support", - "https://peertube.s2s.video", - "https://peertube.travelpandas.eu", - "https://peertube.anzui.dev", - "https://video.igem.org", - "https://peertube.pi2.dev", - "https://video.pony.gallery", - "https://tube.skrep.in", - "https://tube.others.social", - "https://vid.wildeboer.net", - "https://battlepenguin.video", - "https://peertube.cloud.sans.pub", - "https://refuznik.video", - "https://tube.shela.nu", - "https://video.1146.nohost.me", - "https://peertube.davigge.com", - "https://vod.ksite.de", - "https://tube.grin.hu", - "https://peertube.zergy.net", - "https://videos.tcit.fr", - "https://video.valme.io", - "https://video.violoncello.ch", - "https://peertube.gidikroon.eu", - "https://tubedu.org", - "https://tilvids.com", - "https://peertube.designersethiques.org", - "https://peertube.monlycee.net", - "https://tube.plomlompom.com", - "https://spacepub.space", - "https://peertube.devol.it", - "https://media.privacyinternational.org", - "https://tube.port0.xyz", - "https://tube1.it.tuwien.ac.at", - "https://tube.aquilenet.fr", - "https://peertube.lyceeconnecte.fr", - "https://vids.roshless.me", - "https://peertube.netzbegruenung.de", - "https://plextube.nl", - "https://tube.opportunis.me", - "https://tube.graz.social", - "https://kolektiva.media", - "https://peertube.ichigo.everydayimshuflin.com", - "https://video.lundi.am", - "https://peertube.taxinachtegel.de", - "https://peertube.scic-tetris.org", - "https://peertube.lagvoid.com", - "https://pt.diaspodon.fr", - "https://video.mugoreve.fr", - "https://tube.portes-imaginaire.org", - "https://peervideo.ru", - "https://p.eertu.be", - "https://video.hardlimit.com", - "https://peertube.debian.social", - "https://tube.piweb.be", - "https://peertube.su", - "https://tube.fdn.fr", - "https://peertube.demonix.fr", - "https://videos.hauspie.fr", - "https://lexx.impa.me", - "https://mplayer.demouliere.eu", - "https://video.liberta.vip", - "https://tube.plaf.fr", - "https://tube.nah.re", - "https://dreiecksnebel.alex-detsch.de", - "https://tube.hoga.fr", - "https://videos.festivalparminous.org", - "https://tube.thechangebook.org", - "https://lepetitmayennais.fr.nf", - "https://medias.pingbase.net", - "https://video.oh14.de", - "https://mytube.madzel.de", - "https://video.blender.org", - "https://peertube.020.pl", - "https://tube.azbyka.ru", - "https://greatview.video", - "https://media.krashboyz.org", - "https://toobnix.org", - "https://tube.kdy.ch", - "https://tube.rebellion.global", - "https://videos.koumoul.com", - "https://tube.undernet.uy", - "https://peertube.opencloud.lu", - "https://peertube.ch", - "https://tube.tappret.fr", - "https://peertube.desmu.fr", - "https://peertube.rainbowswingers.net", - "https://tube.nx-pod.de", - "https://video.monsieurbidouille.fr", - "https://tube.crapaud-fou.org", - "https://lostpod.space", - "https://www.videos-libr.es", - "https://video.vny.fr", - "https://peervideo.club", - "https://tube.taker.fr", - "https://video.fitchfamily.org", - "https://peer.philoxweb.be", - "https://peertube.dynlinux.io", - "https://v.kretschmann.social", - "https://videos.funkwhale.audio", - "https://watch.44con.com", - "https://tube.danq.me", - "https://tube.calculate.social", - "https://peertube.laas.fr", - "https://video.ploud.jp", - "https://conf.tube", - "https://tube.extinctionrebellion.fr", - "https://peertube.f-si.org", - "https://video.subak.ovh", - "https://peertube.floss-marketing-school.com", - "https://peertube.slat.org", - "https://peertube.uno", - "https://tube.ksl-bmx.de", - "https://tube.tchncs.de", - "https://yunopeertube.myddns.me", - "https://peertube.anon-kenkai.com", - "https://tube.maiti.info", - "https://video.lemediatv.fr", - "https://peertube.artica.center", - "https://indymotion.fr", - "https://tube.fede.re", - "https://peertube.mygaia.org", - "https://peertube.livingutopia.org", - "https://tube.anjara.eu", - "https://video.latavernedejohnjohn.fr", - "https://peertube.pcservice46.fr", - "https://video.coop.tools", - "https://peertube.openstreetmap.fr", - "https://scitech.video", - "https://peertube.togart.de", - "https://tube.postblue.info", - "https://videos.domainepublic.net", - "https://repro.video", - "https://videos.side-ways.net", - "https://videos.pueseso.club", - "https://peertube.makotoworkshop.org", - "https://video.netsyms.com", - "https://videos.adhocmusic.com", - "https://vid.y-y.li", - "https://diode.zone", - "https://peertube.nomagic.uk", - "https://video.rastapuls.com", - "https://peertube.musicstudio.pro", - "https://peertube.we-keys.fr", - "https://artitube.artifaille.fr", - "https://peertube.fr", - "https://peertube.amicale.net", - "https://aperi.tube", - "https://tube.ac-lyon.fr", - "https://video.lw1.at", - "https://www.yiny.org", - "https://video.typica.us", - "https://videos.lescommuns.org", - "https://peertube.1312.media", - "https://skeptikon.fr", - "https://video.blueline.mg", - "https://tube.homecomputing.fr", - "https://video.tedomum.net", - "https://video.g3l.org", - "https://fontube.fr", - "https://peertube.gaialabs.ch", - "https://peertube.qtg.fr", - "https://tube.p2p.legal", - "https://troll.tv", - "https://videos.iut-orsay.fr", - "https://peertube.solidev.net", - "https://videos.cemea.org", - "https://video.passageenseine.fr", - "https://peertube.touhoppai.moe", - "https://share.tube", - "https://peertube.heraut.eu", - "https://peertube.gegeweb.eu", - "https://framatube.org", - "https://tube.conferences-gesticulees.net", - "https://peertube.datagueule.tv", - "https://video.lqdn.fr", - "https://peertube3.cpy.re", - "https://peertube2.cpy.re", - "https://peertube.cpy.re" - ] -} \ No newline at end of file diff --git a/src/instances/facil.json b/src/instances/facil.json deleted file mode 100644 index 6c89eb17..00000000 --- a/src/instances/facil.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "clearnet": ["https://facilmap.org"], - "tor": [], - "i2p": [], - "loki": [] -} diff --git a/src/instances/get_instances.py b/src/instances/get_instances.py deleted file mode 100755 index 8121cea5..00000000 --- a/src/instances/get_instances.py +++ /dev/null @@ -1,541 +0,0 @@ -#!/usr/bin/python3 -# Note: Run this script from the root of the repo - -import traceback -import logging -import requests -import json -from urllib.parse import urlparse -import re -from colorama import Fore, Style -import socket - -mightyList = {} -config = {} - -startRegex = r"https?:\/{2}(?:[^\s\/]+\.)*" -endRegex = "(?:\/[^\s\/]+)*\/?" -torRegex = startRegex + "onion" + endRegex -i2pRegex = startRegex + "i2p" + endRegex -lokiRegex = startRegex + "loki" + endRegex -authRegex = r"https?:\/{2}\S+:\S+@(?:[^\s\/]+\.)*[a-zA-Z0-9]+" + endRegex - -# 2.0 because Libredirect is currently on version 2.x.x -headers = {'User-Agent': 'Libredirect-instance-fetcher/2.0'} - -with open('./src/config/config.json', 'rt') as tmp: - config['networks'] = json.load(tmp)['networks'] - - -def filterLastSlash(urlList): - tmp = {} - for frontend in urlList: - tmp[frontend] = {} - for network in urlList[frontend]: - tmp[frontend][network] = [] - for url in urlList[frontend][network]: - if url.endswith('/'): - tmp[frontend][network].append(url[:-1]) - print(Fore.YELLOW + "Fixed " + Style.RESET_ALL + url) - else: - tmp[frontend][network].append(url) - return tmp - - -def idnaEncode(urlList): - tmp = {} - for frontend in urlList: - tmp[frontend] = {} - for network in urlList[frontend]: - tmp[frontend][network] = [] - for url in urlList[frontend][network]: - try: - encodedUrl = url.encode("idna").decode("utf8") - tmp[frontend][network].append(encodedUrl) - if (encodedUrl != url): - print(Fore.YELLOW + "Fixed " + Style.RESET_ALL + url) - except Exception: - tmp[frontend][network].append(url) - return tmp - - -def ip2bin(ip): return "".join( - map( - str, - [ - "{0:08b}".format(int(x)) for x in ip.split(".") - ] - ) -) - - -def get_cloudflare_ips(): - r = requests.get('https://www.cloudflare.com/ips-v4') - return r.text.split('\n') - - -cloudflare_ips = get_cloudflare_ips() - - -def is_cloudflare(url): - instance_ip = None - try: - instance_ip = socket.gethostbyname(urlparse(url).hostname) - if instance_ip is None: - return False - except Exception: - return False - instance_bin = ip2bin(instance_ip) - - for cloudflare_ip_mask in cloudflare_ips: - cloudflare_ip = cloudflare_ip_mask.split('/')[0] - cloudflare_bin = ip2bin(cloudflare_ip) - - mask = int(cloudflare_ip_mask.split('/')[1]) - cloudflare_bin_masked = cloudflare_bin[:mask] - instance_bin_masked = instance_bin[:mask] - - if cloudflare_bin_masked == instance_bin_masked: - print(url + ' is behind ' + Fore.RED + - 'cloudflare' + Style.RESET_ALL) - return True - return False - - -def is_authenticate(url): - try: - if re.match(authRegex, url): - print(url + ' requires ' + Fore.RED + - 'authentication' + Style.RESET_ALL) - return True - r = requests.get(url, timeout=5, headers=headers) - if 'www-authenticate' in r.headers: - print(url + ' requires ' + Fore.RED + - 'authentication' + Style.RESET_ALL) - return True - except Exception: - return False - return False - -def fetchCache(frontend, name): - try: - with open('./src/instances/data.json') as file: - mightyList[frontend] = json.load(file)[frontend] - print(Fore.YELLOW + 'Failed' + Style.RESET_ALL + ' to fetch ' + name) - except Exception: - print(Fore.RED + 'Failed' + Style.RESET_ALL + ' to get cached ' + name) - - -def fetchFromFile(frontend, name): - with open('./src/instances/' + frontend + '.json') as file: - mightyList[frontend] = json.load(file) - print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + name) - - -def fetchJsonList(frontend, name, url, urlItem, jsonObject): - try: - r = requests.get(url, headers=headers) - rJson = json.loads(r.text) - if jsonObject: - rJson = rJson['instances'] - _list = {} - for network in config['networks']: - _list[network] = [] - if type(urlItem) == dict: - for item in rJson: - for network in config['networks']: - if urlItem[network] is not None: - if urlItem[network] in item and item[urlItem[network]] is not None: - if item[urlItem[network]].strip() != '': - _list[network].append(item[urlItem[network]]) - else: - for item in rJson: - tmpItem = item - if urlItem is not None: - tmpItem = item[urlItem] - if tmpItem.strip() == '': - continue - elif re.search(torRegex, tmpItem): - _list['tor'].append(tmpItem) - elif re.search(i2pRegex, tmpItem): - _list['i2p'].append(tmpItem) - elif re.search(lokiRegex, tmpItem): - _list['loki'].append(tmpItem) - else: - _list['clearnet'].append(tmpItem) - - mightyList[frontend] = _list - print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + name) - except Exception: - fetchCache(frontend, name) - logging.error(traceback.format_exc()) - - -def fetchRegexList(frontend, name, url, regex): - try: - r = requests.get(url, headers=headers) - _list = {} - for network in config['networks']: - _list[network] = [] - - tmp = re.findall(regex, r.text) - - for item in tmp: - if item.strip() == "": - continue - elif re.search(torRegex, item): - _list['tor'].append(item) - elif re.search(i2pRegex, item): - _list['i2p'].append(item) - elif re.search(lokiRegex, item): - _list['loki'].append(item) - else: - _list['clearnet'].append(item) - mightyList[frontend] = _list - print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + name) - except Exception: - fetchCache(frontend, name) - logging.error(traceback.format_exc()) - - -def fetchTextList(frontend, name, url, prepend): - try: - _list = {} - for network in config['networks']: - _list[network] = [] - - if type(url) == dict: - for network in config['networks']: - if url[network] is not None: - r = requests.get(url[network], headers=headers) - tmp = r.text.strip().split('\n') - for item in tmp: - item = prepend[network] + item - _list[network].append(item) - else: - r = requests.get(url, headers=headers) - tmp = r.text.strip().split('\n') - - for item in tmp: - item = prepend + item - if re.search(torRegex, item): - _list['tor'].append(item) - elif re.search(i2pRegex, item): - _list['i2p'].append(item) - elif re.search(lokiRegex, item): - _list['loki'].append(item) - else: - _list['clearnet'].append(item) - mightyList[frontend] = _list - print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + name) - except Exception: - fetchCache(frontend, name) - logging.error(traceback.format_exc()) - - -def invidious(): - name = 'Invidious' - frontend = 'invidious' - url = 'https://api.invidious.io/instances.json' - try: - _list = {} - _list['clearnet'] = [] - _list['tor'] = [] - _list['i2p'] = [] - _list['loki'] = [] - r = requests.get(url, headers=headers) - rJson = json.loads(r.text) - for instance in rJson: - if instance[1]['type'] == 'https': - _list['clearnet'].append(instance[1]['uri']) - elif instance[1]['type'] == 'onion': - _list['tor'].append(instance[1]['uri']) - elif instance[1]['type'] == 'i2p': - _list['i2p'].append(instance[1]['uri']) - mightyList[frontend] = _list - print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + name) - except Exception: - fetchCache(frontend, name) - logging.error(traceback.format_exc()) - - -def piped(): - frontend = 'piped' - name = 'Piped' - try: - _list = {} - _list['clearnet'] = [] - _list['tor'] = [] - _list['i2p'] = [] - _list['loki'] = [] - r = requests.get( - 'https://raw.githubusercontent.com/wiki/TeamPiped/Piped/Instances.md', headers=headers) - - tmp = re.findall( - r'(?:[^\s\/]+\.)+[a-zA-Z]+ (?:\(Official\) )?\| (https:\/{2}(?:[^\s\/]+\.)+[a-zA-Z]+) \| ', r.text) - for item in tmp: - try: - url = requests.get(item, timeout=5, headers=headers).url - if url.strip("/") == item: - continue - else: - _list['clearnet'].append(url) - except Exception: - logging.error(traceback.format_exc()) - continue - mightyList[frontend] = _list - print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + name) - except Exception: - fetchCache(frontend, name) - logging.error(traceback.format_exc()) - - -def pipedMaterial(): - fetchRegexList('pipedMaterial', 'Piped-Material', 'https://raw.githubusercontent.com/mmjee/Piped-Material/master/README.md', - r"\| (https?:\/{2}(?:\S+\.)+[a-zA-Z0-9]*) +\| Production") - - -def cloudtube(): - fetchFromFile('cloudtube', 'Cloudtube') - - -def proxitok(): - fetchRegexList('proxiTok', 'ProxiTok', 'https://raw.githubusercontent.com/wiki/pablouser1/ProxiTok/Public-instances.md', - r"\| \[.*\]\(([-a-zA-Z0-9@:%_\+.~#?&//=]{2,}\.[a-z]{2,}\b(?:\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?)\)(?: \(Official\))? +\|(?:(?: [A-Z]*.*\|.*\|)|(?:$))") - - -def send(): - fetchRegexList('send', 'Send', 'https://gitlab.com/timvisee/send-instances/-/raw/master/README.md', - r"- ([-a-zA-Z0-9@:%_\+.~#?&//=]{2,}\.[a-z0-9]{2,}\b(?:\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?)\)*\|*[A-Z]{0,}") - - -def nitter(): - fetchRegexList('nitter', 'Nitter', 'https://raw.githubusercontent.com/wiki/zedeus/nitter/Instances.md', - r"(?:(?:\| )|(?:- ))\[(?:(?:\S+\.)+[a-zA-Z0-9]+)\/?\]\((https?:\/{2}(?:\S+\.)+[a-zA-Z0-9]+)\/?\)(?:(?: (?:\((?:\S+ ?\S*)\) )? *\| [^❌]{1,4} +\|(?:(?:\n)|(?: ❌)|(?: ✅)|(?: ❓)|(?: \[)))|(?:\n))") - - -def bibliogram(): - fetchFromFile('bibliogram', 'Bibliogram') - - -def libreddit(): - fetchJsonList('libreddit', 'Libreddit', 'https://github.com/libreddit/libreddit-instances/raw/master/instances.json', - {'clearnet': 'url', 'tor': 'onion', 'i2p': 'i2p', 'loki': None}, True) - - -def teddit(): - fetchJsonList('teddit', 'Teddit', 'https://codeberg.org/teddit/teddit/raw/branch/main/instances.json', - {'clearnet': 'url', 'tor': 'onion', 'i2p': 'i2p', 'loki': None}, False) - - -def wikiless(): - fetchJsonList('wikiless', 'Wikiless', 'https://wikiless.org/instances.json', - {'clearnet': 'url', 'tor': 'onion', 'i2p': 'i2p', 'loki': None}, False) - - -def scribe(): - fetchJsonList('scribe', 'Scribe', - 'https://git.sr.ht/~edwardloveall/scribe/blob/main/docs/instances.json', None, False) - - -def quetre(): - fetchRegexList('quetre', 'Quetre', 'https://raw.githubusercontent.com/zyachel/quetre/main/README.md', - r"\| \[.*\]\(([-a-zA-Z0-9@:%_\+.~#?&//=]{2,}\.[a-z0-9]{2,}\b(?:\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?)\)*\|*[A-Z]{0,}.*\|.*\|") - - -def libremdb(): - fetchRegexList('libremdb', 'libremdb', 'https://raw.githubusercontent.com/zyachel/libremdb/main/README.md', - r"\| \[.*\]\(([-a-zA-Z0-9@:%_\+.~#?&//=]{2,}\.[a-z0-9]{2,}\b(?:\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?)\)*\|*[A-Z]{0,}.*\|.*\|") - - -def simpleertube(): - fetchTextList('simpleertube', 'SimpleerTube', {'clearnet': 'https://simple-web.org/instances/simpleertube', 'tor': 'https://simple-web.org/instances/simpleertube_onion', - 'i2p': 'https://simple-web.org/instances/simpleertube_i2p', 'loki': None}, {'clearnet': 'https://', 'tor': 'http://', 'i2p': 'http://', 'loki': 'http://'}) - - -def simplytranslate(): - fetchTextList('simplyTranslate', 'SimplyTranslate', {'clearnet': 'https://simple-web.org/instances/simplytranslate', 'tor': 'https://simple-web.org/instances/simplytranslate_onion', - 'i2p': 'https://simple-web.org/instances/simplytranslate_i2p', 'loki': 'https://simple-web.org/instances/simplytranslate_loki'}, {'clearnet': 'https://', 'tor': 'http://', 'i2p': 'http://', 'loki': 'http://'}) - - -def linvgatranslate(): - fetchJsonList('lingva', 'LingvaTranslate', - 'https://raw.githubusercontent.com/TheDavidDelta/lingva-translate/main/instances.json', None, False) - - -def searx_searxng(): - r = requests.get( - 'https://searx.space/data/instances.json', headers=headers) - rJson = json.loads(r.text) - searxList = {} - searxList['clearnet'] = [] - searxList['tor'] = [] - searxList['i2p'] = [] - searxList['loki'] = [] - searxngList = {} - searxngList['clearnet'] = [] - searxngList['tor'] = [] - searxngList['i2p'] = [] - searxngList['loki'] = [] - for item in rJson['instances']: - if re.search(torRegex, item[:-1]): - if (rJson['instances'][item].get('generator') == 'searxng'): - searxngList['tor'].append(item[:-1]) - else: - searxList['tor'].append(item[:-1]) - elif re.search(i2pRegex, item[:-1]): - if (rJson['instances'][item].get('generator') == 'searxng'): - searxngList['i2p'].append(item[:-1]) - else: - searxList['i2p'].append(item[:-1]) - else: - if (rJson['instances'][item].get('generator') == 'searxng'): - searxngList['clearnet'].append(item[:-1]) - else: - searxList['clearnet'].append(item[:-1]) - - mightyList['searx'] = searxList - mightyList['searxng'] = searxngList - print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + 'SearX, SearXNG') - - -def whoogle(): - fetchRegexList('whoogle', 'Whoogle', 'https://raw.githubusercontent.com/benbusby/whoogle-search/main/README.md', - r"\| \[https?:\/{2}(?:[^\s\/]+\.)*(?:[^\s\/]+\.)+[a-zA-Z0-9]+\]\((https?:\/{2}(?:[^\s\/]+\.)*(?:[^\s\/]+\.)+[a-zA-Z0-9]+)\/?\) \| ") - - -def librex(): - fetchJsonList('librex', 'LibreX', 'https://raw.githubusercontent.com/hnhx/librex/main/instances.json', - {'clearnet': 'clearnet', 'tor': 'tor', 'i2p': 'i2p', 'loki': None}, True) - - -def rimgo(): - fetchJsonList('rimgo', 'rimgo', 'https://codeberg.org/video-prize-ranch/rimgo/raw/branch/main/instances.json', - {'clearnet': 'url', 'tor': 'onion', 'i2p': 'i2p', 'loki': None}, False) - - -def librarian(): - fetchJsonList('librarian', 'Librarian', - 'https://codeberg.org/librarian/librarian/raw/branch/main/instances.json', 'url', True) - - -def neuters(): - fetchFromFile('neuters', 'Neuters') - - -def beatbump(): - fetchFromFile('beatbump', 'Beatbump') - - -def hyperpipe(): - fetchJsonList('hyperpipe', 'Hyperpipe', - 'https://codeberg.org/Hyperpipe/pages/raw/branch/main/api/frontend.json', 'url', False) - - -def facil(): - fetchFromFile('facil', 'FacilMap') - - -def libreTranslate(): - fetchRegexList('libreTranslate', 'LibreTranslate', 'https://raw.githubusercontent.com/LibreTranslate/LibreTranslate/main/README.md', - r"\[(?:[^\s\/]+\.)+[a-zA-Z0-9]+\]\((https?:\/{2}(?:[^\s\/]+\.)+[a-zA-Z0-9]+)\/?\)\|") - - -def breezeWiki(): - fetchJsonList('breezeWiki', 'BreezeWiki', 'https://docs.breezewiki.com/files/instances.json', 'instance', False) - -def privateBin(): - fetchJsonList('privateBin', 'PrivateBin', - 'https://privatebin.info/directory/api?top=100&https_redirect=true&min_rating=A&csp_header=true&min_uptime=100&attachments=true', 'url', False) - - -def peertube(): - try: - r = requests.get( - 'https://instances.joinpeertube.org/api/v1/instances?start=0&count=1045&sort=-createdAt', headers=headers) - rJson = json.loads(r.text) - - myList = ['https://search.joinpeertube.org'] - for k in rJson['data']: - myList.append('https://'+k['host']) - - mightyList['peertube'] = myList - print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + 'PeerTube') - except Exception: - fetchCache('peertube', 'PeerTube') - - -def isValid(url): # This code is contributed by avanitrachhadiya2155 - try: - result = urlparse(url) - return all([result.scheme, result.netloc]) - except Exception: - return False - - -invidious() -piped() -pipedMaterial() -cloudtube() -proxitok() -send() -nitter() -bibliogram() -libreddit() -teddit() -wikiless() -scribe() -quetre() -libremdb() -simplytranslate() -linvgatranslate() -libreTranslate() -searx_searxng() -whoogle() -librex() -rimgo() -librarian() -neuters() -beatbump() -hyperpipe() -facil() -simpleertube() -breezeWiki() -privateBin() -mightyList = filterLastSlash(mightyList) -mightyList = idnaEncode(mightyList) - -cloudflare = [] -authenticate = [] -for k1, v1 in mightyList.items(): - if type(mightyList[k1]) is dict: - for k2, v2 in mightyList[k1].items(): - for instance in mightyList[k1][k2]: - if (not isValid(instance)): - mightyList[k1][k2].remove(instance) - print("removed " + instance) - else: - if not instance.endswith('.onion') and not instance.endswith('.i2p') and not instance.endswith('.loki') and is_cloudflare(instance): - cloudflare.append(instance) - if not instance.endswith('.onion') and not instance.endswith('.i2p') and not instance.endswith('.loki') and is_authenticate(instance): - authenticate.append(instance) - -peertube() - -blacklist = { - 'cloudflare': cloudflare, - 'authenticate': authenticate, -} - -# Writing to file -json_object = json.dumps(mightyList, ensure_ascii=False, indent=2) -with open('./src/instances/data.json', 'w') as outfile: - outfile.write(json_object) -print(Fore.BLUE + 'wrote ' + Style.RESET_ALL + 'instances/data.json') - -json_object = json.dumps(blacklist, ensure_ascii=False, indent=2) -with open('./src/instances/blacklist.json', 'w') as outfile: - outfile.write(json_object) -print(Fore.BLUE + 'wrote ' + Style.RESET_ALL + 'instances/blacklist.json') - -# print(json_object) diff --git a/src/instances/neuters.json b/src/instances/neuters.json deleted file mode 100644 index 8023079b..00000000 --- a/src/instances/neuters.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "clearnet": ["https://neuters.de"], - "tor": [], - "i2p": [], - "loki": [] -} diff --git a/src/manifest.json b/src/manifest.json index a1b8e8da..4ca1d051 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,7 +1,7 @@ { "name": "__MSG_extensionName__", "description": "__MSG_extensionDescription__", - "version": "2.3.4", + "version": "2.5.1", "manifest_version": 2, "browser_specific_settings": { "gecko": { @@ -19,7 +19,14 @@ "48": "assets/images/libredirect-48.png", "128": "assets/images/libredirect-128.png" }, - "permissions": ["webRequest", "webRequestBlocking", "storage", "unlimitedStorage", "clipboardWrite", "contextMenus", "<all_urls>"], + "permissions": [ + "webRequest", + "webRequestBlocking", + "storage", + "clipboardWrite", + "contextMenus", + "<all_urls>" + ], "browser_action": { "default_title": "__MSG_extensionName__", "browser_style": false, @@ -63,4 +70,4 @@ "default_locale": "en", "update_url": "https://raw.githubusercontent.com/libredirect/libredirect/master/src/updates/updates.xml", "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAroWDSoSRZ1scj+eJRrvnhJbrqXTKnhQuxs6+AJg16sqr0bsMdFV+MSY4i4xnK+K5WOYkBliWXgUyk/wzicoAjOnSJddrL/Md4FuWHI2NVIkrlsLOrYkygi5OLqGPajRH/w8Cdmg7KzEpXe/OnYV0/qS8li8huEdTzdeLdhfbiVl1j3DOr4OJALQ7mPeeNFHFo/oVQ+OkSezWLezA5jUGfhtzPYV6u1TXzX7lCi8E/BbDbwkvvXOMcjXCv08kjdLOY2djCA2a6zr0xAb3q8DlexAMZ8vMof7AQRFtBKhLc9n9VFoipMMdBOVQQj/eIcRILBrmkcZNnJxFKiHNJ+NcZQIDAQAB" -} +} \ No newline at end of file diff --git a/src/pages/background/background.js b/src/pages/background/background.js index 33f0d40b..0d9a0010 100644 --- a/src/pages/background/background.js +++ b/src/pages/background/background.js @@ -6,44 +6,26 @@ import servicesHelper from "../../assets/javascripts/services.js" window.browser = window.browser || window.chrome -browser.runtime.onInstalled.addListener(details => { +browser.runtime.onInstalled.addListener(async details => { if (details.previousVersion != browser.runtime.getManifest().version) { // ^Used to prevent this running when debugging with auto-reload - fetch("/instances/blacklist.json") - .then(response => response.text()) - .then(async data => { - browser.storage.local.set({ blacklists: JSON.parse(data) }, async () => { - switch (details.reason) { - case "install": - browser.storage.local.get("options", async r => { - if (!r.options) { - await generalHelper.initDefaults() - await servicesHelper.initDefaults() - } - }) - break - case "update": - switch (details.previousVersion) { - case "2.2.0": - case "2.2.1": - browser.storage.local.get("options", async r => { - if (!r.options) { - await generalHelper.initDefaults() - await servicesHelper.initDefaults() - await servicesHelper.upgradeOptions() - } - }) - break - default: - await servicesHelper.processUpdate() - } - } - }) - }) + if (details.reason == "install") { + if (!(await utils.getOptions())) { + await servicesHelper.initDefaults() + } + } + else if (details.reason == "update") { + if (details.previousVersion == '2.3.4') { + await servicesHelper.upgradeOptions() + } + // await servicesHelper.processUpdate() + } + browser.runtime.openOptionsPage() } }) let tabIdRedirects = {} + // true == Always redirect, false == Never redirect, null/undefined == follow options for services browser.webRequest.onBeforeRequest.addListener( details => { @@ -57,11 +39,16 @@ browser.webRequest.onBeforeRequest.addListener( return null } if (tabIdRedirects[details.tabId] == false) return null - let newUrl = servicesHelper.redirect(url, details.type, initiator, tabIdRedirects[details.tabId]) + let newUrl = servicesHelper.redirect(url, details.type, initiator, tabIdRedirects[details.tabId], details.tabId) if (details.frameAncestors && details.frameAncestors.length > 0 && generalHelper.isException(new URL(details.frameAncestors[0].url))) newUrl = null - if (generalHelper.isException(url)) newUrl = "BYPASSTAB" + if (generalHelper.isException(url)) { + if (details.type == "main_frame") + newUrl = "BYPASSTAB" + else + return null + } if (newUrl) { if (newUrl === "CANCEL") { @@ -89,9 +76,12 @@ browser.tabs.onRemoved.addListener(tabId => { } }) -browser.commands.onCommand.addListener(command => { - if (command === "switchInstance") utils.switchInstance() - else if (command == "copyRaw") utils.copyRaw() +browser.commands.onCommand.addListener(async command => { + if (command == "switchInstance") { + const newUrl = await servicesHelper.switchInstance() + if (newUrl) browser.tabs.update({ url: newUrl }) + } + else if (command == "copyRaw") servicesHelper.copyRaw() }) browser.contextMenus.create({ @@ -113,73 +103,43 @@ browser.contextMenus.create({ }) browser.contextMenus.create({ + id: "redirectToOriginal", + title: browser.i18n.getMessage("redirectToOriginal"), + contexts: ["browser_action"], +}) + +browser.contextMenus.create({ id: "redirectLink", title: browser.i18n.getMessage("redirectLink"), contexts: ["link"], }) -function handleToggleTab(tab) { - return new Promise(async resolve => { - switch (tabIdRedirects[tab.id]) { - case false: - const newUrl = await servicesHelper.reverse(tab.url, true) - if (newUrl) browser.tabs.update(tab.id, { url: newUrl }) - resolve() - return - case true: - browser.tabs.reload(tab.id) - resolve() - return - } - }) -} - browser.contextMenus.onClicked.addListener((info, tab) => { return new Promise(async resolve => { - switch (info.menuItemId) { - case "switchInstance": - utils.switchInstance() - resolve() - return - case "settings": - browser.runtime.openOptionsPage() - resolve() - return - case "copyRaw": - utils.copyRaw() - resolve() - return - case "toggleTab": - if (tabIdRedirects[tab.id] != undefined) { - tabIdRedirects[tab.id] = !tabIdRedirects[tab.id] - await handleToggleTab(tab) - resolve() - return - } else { - const url = new URL(tab.url) - const service = await servicesHelper.computeService(url) - if (service) { - browser.storage.local.get("options", async r => { - if (r.options[service].enabled) tabIdRedirects[tab.id] = false - else tabIdRedirects[tab.id] = true - await handleToggleTab(tab) - resolve() - return - }) - } else { - tabIdRedirects[tab.id] = false - await handleToggleTab(tab) - resolve() - return - } - } - case "redirectLink": - const tmpUrl = new URL(info.linkUrl) - const newUrl = servicesHelper.redirect(tmpUrl, "main_frame", null, true) - if (newUrl) browser.tabs.create({ url: newUrl }) - resolve() - return + if (info.menuItemId == 'switchInstance') { + const newUrl = await servicesHelper.switchInstance() + if (newUrl) browser.tabs.update({ url: newUrl }) + } + else if (info.menuItemId == 'settings') { + browser.runtime.openOptionsPage() } + else if (info.menuItemId == 'copyRaw') { + servicesHelper.copyRaw() + } + else if (info.menuItemId == 'redirectToOriginal') { + const newUrl = await servicesHelper.reverse(tab.url) + if (newUrl) { + tabIdRedirects[tab.id] = false + browser.tabs.update(tab.id, { url: newUrl }) + } + } + else if (info.menuItemId == 'redirectLink') { + const url = new URL(info.linkUrl) + const newUrl = servicesHelper.redirect(url, "main_frame", null, true) + if (newUrl) browser.tabs.create({ url: newUrl }) + } + resolve() + return }) }) @@ -191,4 +151,4 @@ browser.webRequest.onHeadersReceived.addListener( }, { urls: ["<all_urls>"] }, ["blocking", "responseHeaders"] -) \ No newline at end of file +) diff --git a/src/pages/options/index.ejs b/src/pages/options/index.ejs deleted file mode 100644 index 7f09e6da..00000000 --- a/src/pages/options/index.ejs +++ /dev/null @@ -1,13 +0,0 @@ -<!DOCTYPE html> -<html id="elementToShowWithJavaScript" lang="en"> - <%- include('src/pages/widgets/head') -%> - <body class="option" dir="auto"> - <%- include('src/pages/widgets/links', {services: services}) -%> - <div id="pages"> - <%- include('src/pages/options/widgets/general', {config: {networks, services}}) -%> - <%- include('src/pages/options/widgets/services', {config: {networks, services}}) -%> - <%- include('src/pages/options/widgets/about') -%> - </div> - </body> - <script type="module" src="./index.js"></script> -</html> diff --git a/src/pages/options/index.js b/src/pages/options/index.js index 409fa5b5..c6c21095 100644 --- a/src/pages/options/index.js +++ b/src/pages/options/index.js @@ -1,23 +1,232 @@ +import utils from "../../assets/javascripts/utils.js" +import localise from "../../assets/javascripts/localise.js" + +let config, + options, + divs = {} + for (const a of document.getElementById("links").getElementsByTagName("a")) { - a.addEventListener("click", e => { - const path = a.getAttribute("href").replace("#", "") - loadPage(path) - e.preventDefault() - }) + if (!a.href.includes("https://")) { + a.addEventListener("click", e => { + const path = a.getAttribute("href").replace("#", "") + loadPage(path) + e.preventDefault() + }) + } } -function loadPage(path) { +config = await utils.getConfig() +options = await utils.getOptions() + +function changeFrontendsSettings(service) { + const opacityDiv = document.getElementById(`${service}-opacity`) + if (document.getElementById(`${service}-enabled`).checked) { + opacityDiv.style.pointerEvents = 'auto' + opacityDiv.style.opacity = 1 + opacityDiv.style.userSelect = 'auto' + } else { + opacityDiv.style.pointerEvents = 'none' + opacityDiv.style.opacity = 0.4 + opacityDiv.style.userSelect = 'none' + } + for (const frontend in config.services[service].frontends) { + if (config.services[service].frontends[frontend].instanceList) { + const frontendDiv = document.getElementById(frontend) + if (typeof divs[service].frontend !== "undefined") { + if (frontend == divs[service].frontend.value) { + frontendDiv.style.display = "block" + } else { + frontendDiv.style.display = "none" + } + } + } + } +} + +async function loadPage(path) { for (const section of document.getElementById("pages").getElementsByTagName("section")) section.style.display = "none" document.getElementById(`${path}_page`).style.display = "block" - for (const a of document.getElementById("links").getElementsByTagName("a")) - if (a.getAttribute("href") == `#${path}`) a.classList.add("selected") - else a.classList.remove("selected") + for (const a of document.getElementById("links").getElementsByTagName("a")) { + if (a.getAttribute("href") == `#${path}`) { + a.classList.add("selected") + } else { + a.classList.remove("selected") + } + } + + window.history.pushState({ id: "100" }, "Page 2", `/pages/options/index.html#${path}`) + + if (path != 'general') { + const service = path; + + divs[service] = {} + options = await utils.getOptions() + for (const option in config.services[service].options) { + divs[service][option] = document.getElementById(`${service}-${option}`) + if (typeof config.services[service].options[option] == "boolean") divs[service][option].checked = options[service][option] + else divs[service][option].value = options[service][option] + + divs[service][option].addEventListener("change", async () => { + let options = await utils.getOptions() + if (typeof config.services[service].options[option] == "boolean") + options[service][option] = divs[service][option].checked + else + options[service][option] = divs[service][option].value + browser.storage.local.set({ options }) + changeFrontendsSettings(service) + }) + } + + const frontend_name_element = document.getElementById(`${service}_page`).getElementsByClassName("frontend_name")[0] + if (divs[service].frontend) { + frontend_name_element.href = config.services[service].frontends[divs[service].frontend.value].url + } else { + frontend_name_element.href = Object.values(config.services[service].frontends)[0].url + } + + changeFrontendsSettings(service) + + + for (const frontend in config.services[service].frontends) { + if (config.services[service].frontends[frontend].instanceList) { + processCustomInstances(frontend, document) + } + } + + !async function () { + const blacklist = await utils.getBlacklist() + const redirects = await utils.getList() + for (const frontend in config.services[service].frontends) { + if (config.services[service].frontends[frontend].instanceList) { + createList(frontend, config.networks, document, redirects, blacklist) + } + } + }() + } +} + +async function calcCustomInstances(frontend) { + let options = await utils.getOptions() + let customInstances = options[frontend] + document.getElementById(frontend).getElementsByClassName("custom-checklist")[0].innerHTML = customInstances + .map( + x => ` + <div> + ${x} + <button class="add clear-${x}"> + <svg xmlns="https://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor"> + <path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z" /> + </svg> + </button> + </div> + <hr>` + ) + .join("\n") + for (const item of customInstances) { + document.getElementById(frontend).getElementsByClassName(`clear-${item}`)[0].addEventListener("click", async () => { + const index = customInstances.indexOf(item) + if (index > -1) customInstances.splice(index, 1) + options = await utils.getOptions() + options[frontend] = customInstances + browser.storage.local.set({ options }, () => calcCustomInstances(frontend)) + }) + } +} + +async function processCustomInstances(frontend, document) { + let options = await utils.getOptions() + let customInstances = options[frontend] + + calcCustomInstances(frontend) + document.getElementById(frontend).getElementsByClassName("custom-instance-form")[0].addEventListener("submit", async event => { + event.preventDefault() + let frontendCustomInstanceInput = document.getElementById(frontend).getElementsByClassName("custom-instance")[0] + let url + try { + url = new URL(frontendCustomInstanceInput.value) + } catch (error) { + return + } + let protocolHostVar = utils.protocolHost(url) + if (frontendCustomInstanceInput.validity.valid) { + if (!customInstances.includes(protocolHostVar)) { + customInstances.push(protocolHostVar) + options = await utils.getOptions() + options[frontend] = customInstances + browser.storage.local.set({ options }, () => { + frontendCustomInstanceInput.value = "" + calcCustomInstances(frontend) + }) + } + } + }) +} + +function createList(frontend, networks, document, redirects, blacklist) { + for (const network in networks) { + if (redirects[frontend]) { + if (redirects[frontend][network].length > 0) { + document.getElementById(frontend) + .getElementsByClassName(network)[0] + .getElementsByClassName("checklist")[0] + .innerHTML = [ + `<div class="some-block option-block"> + <h4>${utils.camelCase(network)}</h4> + </div>`, + ...redirects[frontend][network] + .sort((a, b) => + (blacklist.cloudflare.includes(a) && !blacklist.cloudflare.includes(b)) + ) + .map(x => { + const cloudflare = blacklist.cloudflare.includes(x) ? + ` <a target="_blank" href="https://libredirect.github.io/docs.html#instances"> + <span style="color:red;">cloudflare</span> + </a>` : "" + + const warnings = [cloudflare].join(" ") + return `<div> + <x> + <a href="${x}" target="_blank">${x}</a>${warnings} + </x> + <button class="add add-${x}"> + <svg xmlns="https://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor"> + <path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z" /> + </svg> + </button> + </div>` + }), + '<br>' + ].join("\n<hr>\n") + + for (const x of redirects[frontend][network]) { + document.getElementById(frontend) + .getElementsByClassName(network)[0] + .getElementsByClassName("checklist")[0] + .getElementsByClassName(`add-${x}`)[0] + .addEventListener("click", async () => { + let options = await utils.getOptions() + let customInstances = options[frontend] + if (!customInstances.includes(x)) { + customInstances.push(x) + options = await utils.getOptions() + options[frontend] = customInstances + browser.storage.local.set({ options }, () => { + calcCustomInstances(frontend) + }) + } + }) + } + } + } else { + document.getElementById(frontend).getElementsByClassName(network)[0].getElementsByClassName("checklist")[0].innerHTML = + `<div class="some-block option-block">No instances found.</div>` + break + } - let stateObj = { id: "100" } - window.history.pushState(stateObj, "Page 2", `/pages/options/index.html#${path}`) + } } const r = window.location.href.match(/#(.*)/) if (r) loadPage(r[1]) -else loadPage("general") +else loadPage("general") \ No newline at end of file diff --git a/src/pages/options/index.pug b/src/pages/options/index.pug new file mode 100644 index 00000000..4e19b087 --- /dev/null +++ b/src/pages/options/index.pug @@ -0,0 +1,10 @@ +doctype html +html(id="elementToShowWithJavaScript" lang="en") + include /src/pages/widgets/head + body(class="option" dir="auto") + include /src/pages/widgets/links + div#pages + include /src/pages/options/widgets/general + include /src/pages/options/widgets/services + script(type="module" src="./index.js") + \ No newline at end of file diff --git a/src/pages/options/init.js b/src/pages/options/init.js index cac23748..f88c9ef9 100644 --- a/src/pages/options/init.js +++ b/src/pages/options/init.js @@ -1,35 +1,54 @@ window.browser = window.browser || window.chrome import localise from "../../assets/javascripts/localise.js" +import utils from "../../assets/javascripts/utils.js" +import servicesHelper from "../../assets/javascripts/services.js" + +if (!(await utils.getOptions())) { + await servicesHelper.initDefaults() +} function changeTheme() { - return new Promise(resolve => { - browser.storage.local.get("options", r => { - switch (r.options.theme) { - case "dark": - document.body.classList.add("dark-theme") - document.body.classList.remove("light-theme") - break - case "light": + return new Promise(async resolve => { + switch ((await utils.getOptions()).theme) { + case "dark": + document.body.classList.add("dark-theme") + document.body.classList.remove("light-theme") + for (const element of document.body.getElementsByClassName('dark')) { + element.style.display = 'none'; + } + break + case "light": + document.body.classList.add("light-theme") + document.body.classList.remove("dark-theme") + for (const element of document.body.getElementsByClassName('light')) { + element.style.display = 'none'; + } + break + default: + if (matchMedia("(prefers-color-scheme: light)").matches) { document.body.classList.add("light-theme") document.body.classList.remove("dark-theme") - break - default: - if (matchMedia("(prefers-color-scheme: light)").matches) { - document.body.classList.add("light-theme") - document.body.classList.remove("dark-theme") - } else { - document.body.classList.add("dark-theme") - document.body.classList.remove("light-theme") + for (const element of document.body.getElementsByClassName('light')) { + element.style.display = 'none'; } - } - resolve() - }) + } else { + document.body.classList.add("dark-theme") + document.body.classList.remove("light-theme") + for (const element of document.body.getElementsByClassName('dark')) { + element.style.display = 'none'; + } + } + } + resolve() }) } changeTheme() -if (["ar", "iw", "ku", "fa", "ur"].includes(browser.i18n.getUILanguage())) document.getElementsByTagName("body")[0].classList.add("rtl") +if (["ar", "iw", "ku", "fa", "ur"].includes(browser.i18n.getUILanguage())) { + document.getElementsByTagName("body")[0].classList.add("rtl") + document.getElementsByTagName("body")[0].dir = "rtl" +} localise.localisePage() window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", changeTheme) diff --git a/src/pages/options/widgets/about.ejs b/src/pages/options/widgets/about.ejs deleted file mode 100644 index c6f8a58f..00000000 --- a/src/pages/options/widgets/about.ejs +++ /dev/null @@ -1,37 +0,0 @@ -<section class="option-block" id="about_page"> - - <div class="some-block option-block"> - <h1 data-localise="__MSG_about__">About</h1> - </div> - - <hr> - - <div class="about"> - - <div class="some-block option-block"> - <h4>Donate: ♥️</h4> - <h4><a href='https://libredirect.codeberg.page/donate'>https://libredirect.github.io/donate</a> </h4> - </div> - - <div class="some-block option-block"> - <h4>FAQ:</h4> - <h4><a href='https://libredirect.codeberg.page/faq'>https://libredirect.github.io/faq</a></h4> - </div> - - <div class="some-block option-block"> - <h4>Docs:</h4> - <h4><a href='https://libredirect.codeberg.page/docs'>https://libredirect.github.io/docs</a></h4> - </div> - - <div class="some-block option-block"> - <h4>Source Code:</h4> - <h4><a href='https://libredirect.codeberg.page/source_code'>https://libredirect.github.io/source_code</a></h4> - </div> - - <div class="some-block option-block"> - <h4>Forked from:</h4> - <h4><a href="https://github.com/SimonBrazell/privacy-redirect">Privacy Redirect</a></h4> - </div> - - </div> -</section> \ No newline at end of file diff --git a/src/pages/options/widgets/general.ejs b/src/pages/options/widgets/general.ejs deleted file mode 100644 index 6bb15bca..00000000 --- a/src/pages/options/widgets/general.ejs +++ /dev/null @@ -1,70 +0,0 @@ -<section class="option-block" id="general_page"> - <div class="some-block option-block"> - <h1 data-localise="__MSG_general__">General</h1> - </div> - <hr /> - - <div class="some-block option-block"> - <h4 data-localise="__MSG_theme__">Theme</h4> - <select id="theme"> - <option value="detect" data-localise="__MSG_detect__">Detect</option> - <option value="light" data-localise="__MSG_light__">Light</option> - <option value="dark" data-localise="__MSG_dark__">Dark</option> - </select> - </div> - - <div class="some-block option-block"> - <h4 data-localise="__MSG_exclude_from_redirecting_">Excluded from redirecting</h4> - </div> - - <form id="custom-exceptions-instance-form"> - <div class="some-block option-block"> - <div class="some-block" style="padding: 0"> - <input id="exceptions-custom-instance" placeholder="https://www.google.com" type="url" /> - <select id="exceptions-custom-instance-type"> - <option value="url">URL</option> - <option value="regex">Regex</option> - </select> - </div> - <button class="add" id="exceptions-add-instance" type="submit"> - <svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor"> - <path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"></path> - </svg> - </button> - </div> - </form> - - <hr> - - <div class="checklist" id="exceptions-custom-checklist"></div> - - <div class="buttons buttons-inline"> - <a class="button button-inline" id="update-instances"> - <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor"> - <path d="M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z"></path> - </svg> - <x data-localise="__MSG_updateInstances__">Update Instances</x> - </a> - </div> - - <div class="buttons buttons-inline"> - <label class="button button-inline" id="import_settings_text" for="import-settings"> - <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor"> - <path d="M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"></path> - </svg> - <x data-localise="__MSG_importSettings__">Import Settings</x> - </label> - <input class="button button-inline" id="import-settings" type="file" style="display: none" /> <a class="button button-inline" id="export-settings"> - <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor"> - <path d="M10.09 15.59L11.5 17l5-5-5-5-1.41 1.41L12.67 11H3v2h9.67l-2.58 2.59zM19 3H5c-1.11 0-2 .9-2 2v4h2V5h14v14H5v-4H3v4c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"></path> - </svg> <x data-localise="__MSG_exportSettings__">Export Settings</x></a> <a class="button button-inline" id="reset-settings"> - <svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor"> - <path d="M12,5V2L8,6l4,4V7c3.31,0,6,2.69,6,6c0,2.97-2.17,5.43-5,5.91v2.02c3.95-0.49,7-3.85,7-7.93C20,8.58,16.42,5,12,5z"></path> - <path d="M6,13c0-1.65,0.67-3.15,1.76-4.24L6.34,7.34C4.9,8.79,4,10.79,4,13c0,4.08,3.05,7.44,7,7.93v-2.02 C8.17,18.43,6,15.97,6,13z"></path> - </svg> - <x data-localise="__MSG_resetSettings__">Reset Settings</x> - </a> - </div> - - <script type="module" src="./widgets/general.js"></script> -</section> \ No newline at end of file diff --git a/src/pages/options/widgets/general.js b/src/pages/options/widgets/general.js index a73ac85e..09c222a2 100644 --- a/src/pages/options/widgets/general.js +++ b/src/pages/options/widgets/general.js @@ -2,57 +2,29 @@ window.browser = window.browser || window.chrome import utils from "../../../assets/javascripts/utils.js" -import generalHelper from "../../../assets/javascripts/general.js" import servicesHelper from "../../../assets/javascripts/services.js" -let updateInstancesElement = document.getElementById("update-instances") -updateInstancesElement.addEventListener("click", async () => { - let oldHtml = updateInstancesElement.innerHTML - updateInstancesElement.innerHTML = "..." - if (await utils.updateInstances()) { - updateInstancesElement.innerHTML = oldHtml - location.reload() - } else updateInstancesElement.innerHTML = "Failed Miserabely" -}) - -let config - -async function getConfig() { - return new Promise(resolve => { - fetch("/config/config.json") - .then(response => response.text()) - .then(data => { - config = JSON.parse(data) - resolve() - }) - }) -} - -function setOption(option, type, event) { - browser.storage.local.get("options", r => { - let options = r.options - if (type == "select") { - options[option] = event.target.options[event.target.options.selectedIndex].value - } else if (type == "checkbox") { - options[option] = event.target.checked - } else if (type == "range") { - options[option] = event.target.value - } - - browser.storage.local.set({ options }) - }) +async function setOption(option, type, event) { + let options = await utils.getOptions() + if (type == "select") { + options[option] = event.target.options[event.target.options.selectedIndex].value + } else if (type == "checkbox") { + options[option] = event.target.checked + } else if (type == "range") { + options[option] = event.target.value + } + browser.storage.local.set({ options }) } let exportSettingsElement = document.getElementById("export-settings") -function exportSettings() { - browser.storage.local.get("options", result => { - result.options.version = browser.runtime.getManifest().version - let resultString = JSON.stringify(result.options, null, " ") - exportSettingsElement.href = "data:application/json;base64," + btoa(resultString) - exportSettingsElement.download = "libredirect-settings.json" - return - }) +async function exportSettings() { + const options = await utils.getOptions() + options.version = browser.runtime.getManifest().version + let resultString = JSON.stringify(options, null, " ") + exportSettingsElement.href = "data:application/json;base64," + btoa(resultString) + exportSettingsElement.download = "libredirect-settings.json" + return } exportSettings() @@ -67,27 +39,14 @@ importSettingsElement.addEventListener("change", () => { reader.readAsText(file) reader.onload = async () => { const data = JSON.parse(reader.result) - if ("theme" in data && "disableImgur" in data && "imgurRedirects" in data) { - browser.storage.local.clear(() => - browser.storage.local.set({ ...data }, () => { - fetch("/instances/blacklist.json") - .then(response => response.text()) - .then(async data => { - browser.storage.local.set({ blacklists: JSON.parse(data) }, async () => { - await generalHelper.initDefaults() - await servicesHelper.initDefaults() - await servicesHelper.upgradeOptions() - location.reload() - }) - }) + if ( + "theme" in data + && data.version == browser.runtime.getManifest().version + ) { + browser.storage.local.clear(async () => { + browser.storage.local.set({ options: data }, () => { + location.reload() }) - ) - } else if ("version" in data) { - let options = data - delete options.version - browser.storage.local.set({ options: data }, async () => { - await servicesHelper.processUpdate() - location.reload() }) } else { console.log("incompatible settings") @@ -108,17 +67,8 @@ function importError() { const resetSettings = document.getElementById("reset-settings") resetSettings.addEventListener("click", async () => { resetSettings.innerHTML = "..." - browser.storage.local.clear(() => { - fetch("/instances/blacklist.json") - .then(response => response.text()) - .then(async data => { - browser.storage.local.set({ blacklists: JSON.parse(data) }, async () => { - await generalHelper.initDefaults() - await servicesHelper.initDefaults() - location.reload() - }) - }) - }) + await servicesHelper.initDefaults() + location.reload() }) let themeElement = document.getElementById("theme") @@ -131,41 +81,41 @@ let nameCustomInstanceInput = document.getElementById("exceptions-custom-instanc let instanceTypeElement = document.getElementById("exceptions-custom-instance-type") let instanceType = "url" -await getConfig() +let config = await utils.getConfig() for (const service in config.services) { - document.getElementById(service).addEventListener("change", event => { - browser.storage.local.get("options", r => { - let options = r.options - if (event.target.checked && !options.popupServices.includes(service)) options.popupServices.push(service) - else if (options.popupServices.includes(service)) { - var index = options.popupServices.indexOf(service) - if (index !== -1) options.popupServices.splice(index, 1) - } - browser.storage.local.set({ options }) - }) + document.getElementById(service).addEventListener("change", async event => { + let options = await utils.getOptions() + if (event.target.checked && !options.popupServices.includes(service)) options.popupServices.push(service) + else if (options.popupServices.includes(service)) { + var index = options.popupServices.indexOf(service) + if (index !== -1) options.popupServices.splice(index, 1) + } + browser.storage.local.set({ options }) }) } -browser.storage.local.get("options", r => { - themeElement.value = r.options.theme - let options = r.options - - instanceTypeElement.addEventListener("change", event => { - instanceType = event.target.options[instanceTypeElement.selectedIndex].value - if (instanceType == "url") { - nameCustomInstanceInput.setAttribute("type", "url") - nameCustomInstanceInput.setAttribute("placeholder", "https://www.google.com") - } else if (instanceType == "regex") { - nameCustomInstanceInput.setAttribute("type", "text") - nameCustomInstanceInput.setAttribute("placeholder", "https?://(www.|)youtube.com/") - } - }) - let exceptionsCustomInstances = r.options.exceptions - function calcExceptionsCustomInstances() { - document.getElementById("exceptions-custom-checklist").innerHTML = [...exceptionsCustomInstances.url, ...exceptionsCustomInstances.regex] - .map( - x => `<div> + +let options = await utils.getOptions() +themeElement.value = options.theme +for (const service in config.services) document.getElementById(service).checked = options.popupServices.includes(service) + +instanceTypeElement.addEventListener("change", event => { + instanceType = event.target.options[instanceTypeElement.selectedIndex].value + if (instanceType == "url") { + nameCustomInstanceInput.setAttribute("type", "url") + nameCustomInstanceInput.setAttribute("placeholder", "https://www.google.com") + } else if (instanceType == "regex") { + nameCustomInstanceInput.setAttribute("type", "text") + nameCustomInstanceInput.setAttribute("placeholder", "https?://(www.|)youtube.com/") + } +}) + +let exceptionsCustomInstances = options.exceptions +function calcExceptionsCustomInstances() { + document.getElementById("exceptions-custom-checklist").innerHTML = [...exceptionsCustomInstances.url, ...exceptionsCustomInstances.regex] + .map( + x => `<div> ${x} <button class="add" id="clear-${x}"> <svg xmlns="https://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" @@ -175,47 +125,47 @@ browser.storage.local.get("options", r => { </button> </div> <hr>` - ) - .join("\n") - - for (const x of [...exceptionsCustomInstances.url, ...exceptionsCustomInstances.regex]) { - document.getElementById(`clear-${x}`).addEventListener("click", () => { - console.log(x) - let index - index = exceptionsCustomInstances.url.indexOf(x) - if (index > -1) exceptionsCustomInstances.url.splice(index, 1) - else { - index = exceptionsCustomInstances.regex.indexOf(x) - if (index > -1) exceptionsCustomInstances.regex.splice(index, 1) - } - options.exceptions = exceptionsCustomInstances - browser.storage.local.set({ options }) - calcExceptionsCustomInstances() - }) - } - } - calcExceptionsCustomInstances() - document.getElementById("custom-exceptions-instance-form").addEventListener("submit", event => { - event.preventDefault() - - let val - if (instanceType == "url") { - if (nameCustomInstanceInput.validity.valid) { - let url = new URL(nameCustomInstanceInput.value) - val = `${url.protocol}//${url.host}` - if (!exceptionsCustomInstances.url.includes(val)) exceptionsCustomInstances.url.push(val) + ) + .join("\n") + + for (const x of [...exceptionsCustomInstances.url, ...exceptionsCustomInstances.regex]) { + document.getElementById(`clear-${x}`).addEventListener("click", async () => { + let index + index = exceptionsCustomInstances.url.indexOf(x) + if (index > -1) exceptionsCustomInstances.url.splice(index, 1) + else { + index = exceptionsCustomInstances.regex.indexOf(x) + if (index > -1) exceptionsCustomInstances.regex.splice(index, 1) } - } else if (instanceType == "regex") { - val = nameCustomInstanceInput.value - if (val.trim() != "" && !exceptionsCustomInstances.regex.includes(val)) exceptionsCustomInstances.regex.push(val) - } - if (val) { + options = await utils.getOptions() options.exceptions = exceptionsCustomInstances browser.storage.local.set({ options }) - nameCustomInstanceInput.value = "" + calcExceptionsCustomInstances() + }) + } +} +calcExceptionsCustomInstances() +document.getElementById("custom-exceptions-instance-form").addEventListener("submit", async event => { + event.preventDefault() + + let val + if (instanceType == "url") { + if (nameCustomInstanceInput.validity.valid) { + val = nameCustomInstanceInput.value + if (!exceptionsCustomInstances.url.includes(val)) exceptionsCustomInstances.url.push(val) } - calcExceptionsCustomInstances() - }) + } else if (instanceType == "regex") { + val = nameCustomInstanceInput.value + if (val.trim() != "" && !exceptionsCustomInstances.regex.includes(val)) exceptionsCustomInstances.regex.push(val) + } + if (val) { + options = await utils.getOptions() + options.exceptions = exceptionsCustomInstances + console.log(options.exceptions) + browser.storage.local.set({ options }, () => + nameCustomInstanceInput.value = "" + ) - for (const service in config.services) document.getElementById(service).checked = options.popupServices.includes(service) + } + calcExceptionsCustomInstances() }) diff --git a/src/pages/options/widgets/general.pug b/src/pages/options/widgets/general.pug new file mode 100644 index 00000000..dc3c3d93 --- /dev/null +++ b/src/pages/options/widgets/general.pug @@ -0,0 +1,57 @@ +section(class="option-block" id="general_page") + div(class="some-block option-block") + h1(data-localise="__MSG_general__") General + hr + + div(class="some-block option-block") + h4(data-localise="__MSG_theme__") Theme + select#theme + option(value="detect" data-localise="__MSG_auto__") Auto + option(value="light" data-localise="__MSG_light__") Light + option(value="dark" data-localise="__MSG_dark__") Dark + + div(class="some-block option-block") + h4(data-localise="__MSG_excludeFromRedirecting__") Excluded from redirecting + + form(id="custom-exceptions-instance-form") + div(class="some-block option-block") + div(class="some-block" style="padding: 0") + input(id="exceptions-custom-instance" placeholder="https://www.google.com" type="url") + | + select(id="exceptions-custom-instance-type") + option(value="url") URL + option(value="regex") Regex + | + button(class="add" id="exceptions-add-instance" type="submit") + svg(xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor") + path(d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z") + + hr + + div(class="checklist" id="exceptions-custom-checklist") + + div(class="buttons buttons-inline") + label(class="button button-inline" id="import_settings_text" for="import-settings") + svg(xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor") + path(d="M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z") + | + x(data-localise="__MSG_importSettings__") Import Settings + input(class="button button-inline" id="import-settings" type="file" style="display: none") + + | + + a(class="button button-inline" id="export-settings") + svg(xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor") + path(d="M10.09 15.59L11.5 17l5-5-5-5-1.41 1.41L12.67 11H3v2h9.67l-2.58 2.59zM19 3H5c-1.11 0-2 .9-2 2v4h2V5h14v14H5v-4H3v4c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z") + | + x(data-localise="__MSG_exportSettings__") Export Settings + + | + + a(class="button button-inline" id="reset-settings") + svg(xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor") + path(d="M12,5V2L8,6l4,4V7c3.31,0,6,2.69,6,6c0,2.97-2.17,5.43-5,5.91v2.02c3.95-0.49,7-3.85,7-7.93C20,8.58,16.42,5,12,5z") + path(d="M6,13c0-1.65,0.67-3.15,1.76-4.24L6.34,7.34C4.9,8.79,4,10.79,4,13c0,4.08,3.05,7.44,7,7.93v-2.02 C8.17,18.43,6,15.97,6,13z") + x(data-localise="__MSG_resetSettings__") Reset Settings + + script(type="module" src="./widgets/general.js") \ No newline at end of file diff --git a/src/pages/options/widgets/services.ejs b/src/pages/options/widgets/services.ejs deleted file mode 100644 index ea93b1ce..00000000 --- a/src/pages/options/widgets/services.ejs +++ /dev/null @@ -1,75 +0,0 @@ -<% for (const service in config.services) { -%> -<section class="option-block" id="<%= service %>_page"> - <div class="some-block option-block"> - <h1 data-localise="__MSG_<%= service %>__"><%= config.services[service].name %></h1> - </div> - <hr /> - <div class="some-block option-block"> - <h4 data-localise="__MSG_enable__">Enable</h4> - <input id="<%= service %>-enabled" type="checkbox" /> - </div> - <div class="some-block option-block"> - <h4 data-localise="__MSG_show_in_popup__">Show in Popup</h4> - <input id="<%= service %>" type="checkbox" /> - </div> - <% if (Object.keys(config.services[service].frontends).length> 1) { %> - <div class="some-block option-block"> - <h4 data-localise="__MSG_frontend__">Frontend</h4> - <select id="<%= service %>-frontend"> - <% for (const frontend in config.services[service].frontends) { -%> - <option value="<%= frontend %>"><%= config.services[service].frontends[frontend].name %></option> - <% } %> - </select> - </div> - <% if (config.services[service].embeddable) { _%> - <div class="some-block option-block"> - <h4 data-localise="__MSG_embed_frontend__">Embed Frontend</h4> - <select id="<%= service %>-embedFrontend"> - <% for (const frontend in config.services[service].frontends) { -%> <% if (config.services[service].frontends[frontend].embeddable) { _%> - <option value="<%= frontend %>"><%= config.services[service].frontends[frontend].name %></option> - <% } _%> <% } %> - </select> - </div> - <% } _%> <% } _%> <% if (config.services[service].embeddable) { _%> - <div class="some-block option-block"> - <h4 data-localise="__MSG_redirectType__">Redirect Type</h4> - <select id="<%= service %>-redirectType"> - <option value="both" data-localise="__MSG_both__">both</option> - <option value="sub_frame" data-localise="__MSG_onlyEmbedded__">Only Embedded</option> - <option value="main_frame" data-localise="__MSG_onlyNotEmbedded__">Only Not Embedded</option> - </select> - </div> - <% } _%> - <hr /> - <% for (const frontend in config.services[service].frontends) { -%> <% if (config.services[service].frontends[frontend].instanceList) { _%> - <div id="<%= frontend %>"> - <% for (const network in config.networks) { -%> - <div class="<%= network %>"> - <div class="some-block option-block"> - <h4 data-localise="__MSG_defaultInstances__">Default Instances</h4> - </div> - <div class="checklist"></div> - <hr /> - <div class="some-block option-block"> - <h4 data-localise="__MSG_customInstances__">Custom Instances</h4> - </div> - <form class="custom-instance-form"> - <div class="some-block option-block"> - <input class="custom-instance" placeholder="http://<%= frontend %>.<%= config.networks[network].tld %>" type="url" /> - <button class="add add-instance" type="submit"> - <svg xmlns="https://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor"> - <path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"></path> - </svg> - </button> - </div> - </form> - <div class="checklist custom-checklist"></div> - <% if (network=="clearnet" ) { _%> - <% } _%> - </div> - <% } %> - </div> - <% } _%> <% } %> -</section> -<% } %> -<script type="module" src="./widgets/services.js"></script> \ No newline at end of file diff --git a/src/pages/options/widgets/services.js b/src/pages/options/widgets/services.js deleted file mode 100644 index 351d45e5..00000000 --- a/src/pages/options/widgets/services.js +++ /dev/null @@ -1,113 +0,0 @@ -import utils from "../../../assets/javascripts/utils.js" - -let config, - options, - divs = {} - -function getConfig() { - return new Promise(resolve => { - fetch("/config/config.json") - .then(response => response.text()) - .then(data => { - config = JSON.parse(data) - resolve() - }) - }) -} - -function getOptions() { - return new Promise(resolve => { - browser.storage.local.get("options", r => { - options = r.options - resolve() - }) - }) -} - -await getConfig() -await getOptions() - -function changeFrontendsSettings(service) { - for (const frontend in config.services[service].frontends) { - if (config.services[service].frontends[frontend].instanceList) { - const frontendDiv = document.getElementById(frontend) - if (typeof divs[service].frontend !== "undefined") { - if (frontend == divs[service].frontend.value) { - frontendDiv.style.display = "block" - } else { - frontendDiv.style.display = "none" - } - } - } - } - - if (config.services[service].embeddable) { - if (typeof divs[service].frontend !== "undefined") { - if (!config.services[service].frontends[divs[service].frontend.value].embeddable) { - divs[service].embedFrontend.disabled = false - for (const frontend in config.services[service].frontends) { - if (config.services[service].frontends[frontend].embeddable) { - const frontendDiv = document.getElementById(frontend) - if (frontend == divs[service].embedFrontend.value) { - frontendDiv.style.display = "block" - } else { - frontendDiv.style.display = "none" - } - } - } - } else if (Object.keys(config.services[service].frontends).length > 1) divs[service].embedFrontend.disabled = true - } - } -} - -function changeNetworkSettings() { - for (const service in config.services) { - for (const frontend in config.services[service].frontends) { - if (config.services[service].frontends[frontend].instanceList) { - const frontendDiv = document.getElementById(frontend) - for (const network in config.networks) { - const networkDiv = frontendDiv.getElementsByClassName(network)[0] - if (network == options.network) { - networkDiv.style.display = "block" - } else { - networkDiv.style.display = "none" - } - } - } - } - } -} - -changeNetworkSettings() -for (const service in config.services) { - divs[service] = {} - //divs[service].page = document.getElementById(`${service}_page`) - for (const option in config.services[service].options) { - divs[service][option] = document.getElementById(`${service}-${option}`) - - if (typeof config.services[service].options[option] == "boolean") divs[service][option].checked = options[service][option] - else divs[service][option].value = options[service][option] - - divs[service][option].addEventListener("change", () => { - browser.storage.local.get("options", r => { - let options = r.options - if (typeof config.services[service].options[option] == "boolean") options[service][option] = divs[service][option].checked - else options[service][option] = divs[service][option].value - browser.storage.local.set({ options }) - changeFrontendsSettings(service) - }) - }) - } - - if (Object.keys(config.services[service].frontends).length > 1) { - changeFrontendsSettings(service) - } - - for (const frontend in config.services[service].frontends) { - if (config.services[service].frontends[frontend].instanceList) { - for (const network in config.networks) { - utils.processDefaultCustomInstances(service, frontend, network, document) - } - } - } -} diff --git a/src/pages/options/widgets/services.pug b/src/pages/options/widgets/services.pug new file mode 100644 index 00000000..257ffd7c --- /dev/null +++ b/src/pages/options/widgets/services.pug @@ -0,0 +1,60 @@ +each val, service in services + section(class="option-block" id=service+"_page") + div(class="some-block option-block") + h1 + a(target="_blank" href=services[service].url)=services[service].name + + hr + + div(class="some-block option-block") + h4(data-localise="__MSG_enable__") Enable + input(id=`${service}-enabled` type="checkbox") + + div(id=service+"-opacity") + + div(class="some-block option-block") + h4(data-localise="__MSG_showInPopup__") Show in popup + input(id=service type="checkbox") + + if Object.keys(services[service].frontends).length> 1 + div(class="some-block option-block") + h4 + a(class="frontend_name" target="_blank" data-localise="__MSG_frontend__") Frontend + select(id=service+"-frontend") + each val, frontend in services[service].frontends + option(value=frontend)=services[service].frontends[frontend].name + else + div(class="some-block option-block") + h4 + a(class="frontend_name" target="_blank" data-localise="__MSG_frontend__") Frontend + + if services[service].embeddable + div(class="some-block option-block") + h4(data-localise="__MSG_redirectType__") Redirect Type + select(id=service+"-redirectType") + option(value="both" data-localise="__MSG_both__") both + option(value="sub_frame" data-localise="__MSG_onlyEmbedded__") Only Embedded + option(value="main_frame" data-localise="__MSG_onlyNotEmbedded__") Only Not Embedded + + hr + + each val, frontend in services[service].frontends + if services[service].frontends[frontend].instanceList + div(id=frontend dir="ltr") + div(dir="auto" class="some-block option-block") + h4(data-localise="__MSG_addYourFavoriteInstances__") Add your favorite instances + + form(class="custom-instance-form") + div(class="some-block option-block") + input(class="custom-instance" placeholder=`http://${frontend}.com` type="url" ) + button(class="add add-instance" type="submit") + svg(xmlns="https://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor") + path(d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z") + + div(class="checklist custom-checklist") + + each val, network in networks + div(class=network) + div(class="checklist") + if (network == 'clearnet') + div(class="some-block option-block") Loading... \ No newline at end of file diff --git a/src/pages/popup/popup.ejs b/src/pages/popup/popup.ejs deleted file mode 100644 index 76aadda7..00000000 --- a/src/pages/popup/popup.ejs +++ /dev/null @@ -1,47 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> - -<head> - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1"> - <link href="../stylesheets/styles.css" rel="stylesheet"> - <link href="./style.css" rel="stylesheet"> -</head> - -<body dir="auto"> - <div class="current_site"> - <%- include('src/pages/widgets/switches', {services: services}) -%> - <div id="current_site_divider"> - <hr> - </div> - </div> - <div class="all_sites"> - <%- include('src/pages/widgets/switches', {services: services}) -%> - </div> - <hr> - <div class="some-block" id="change_instance_div"> - <a class="title button prevent" id="change_instance"> - <h4 data-localise="__MSG_switchInstance__">Change Instance</h4> - <svg xmlns="http://www.w3.org/2000/svg" height="26px" viewBox="0 0 24 24" width="26px" fill="currentColor"> - <path d="M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01-.25 1.97-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0-4.42-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6 0-1.01.25-1.97.7-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4-4-4-4v3z"></path> - </svg> - </a> - </div> - <div class="some-block" id="copy_raw_div" title="Copy the original redirected link"> <a class="title button prevent" id="copy_raw"> - <h4 data-localise="__MSG_copyRaw__">Copy Raw</h4> - <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor"> - <path d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"></path> - </svg> - </a></div> - <div class="some-block"><a class="title button prevent" id="more-options"> - <h4 data-localise="__MSG_settings__">Settings</h4> - <svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="26px" viewBox="0 0 24 24" width="26px" fill="currentColor"> - <path d="M19.14,12.94c0.04-0.3,0.06-0.61,0.06-0.94c0-0.32-0.02-0.64-0.07-0.94l2.03-1.58c0.18-0.14,0.23-0.41,0.12-0.61 l-1.92-3.32c-0.12-0.22-0.37-0.29-0.59-0.22l-2.39,0.96c-0.5-0.38-1.03-0.7-1.62-0.94L14.4,2.81c-0.04-0.24-0.24-0.41-0.48-0.41 h-3.84c-0.24,0-0.43,0.17-0.47,0.41L9.25,5.35C8.66,5.59,8.12,5.92,7.63,6.29L5.24,5.33c-0.22-0.08-0.47,0-0.59,0.22L2.74,8.87 C2.62,9.08,2.66,9.34,2.86,9.48l2.03,1.58C4.84,11.36,4.8,11.69,4.8,12s0.02,0.64,0.07,0.94l-2.03,1.58 c-0.18,0.14-0.23,0.41-0.12,0.61l1.92,3.32c0.12,0.22,0.37,0.29,0.59,0.22l2.39-0.96c0.5,0.38,1.03,0.7,1.62,0.94l0.36,2.54 c0.05,0.24,0.24,0.41,0.48,0.41h3.84c0.24,0,0.44-0.17,0.47-0.41l0.36-2.54c0.59-0.24,1.13-0.56,1.62-0.94l2.39,0.96 c0.22,0.08,0.47,0,0.59-0.22l1.92-3.32c0.12-0.22,0.07-0.47-0.12-0.61L19.14,12.94z M12,15.6c-1.98,0-3.6-1.62-3.6-3.6 s1.62-3.6,3.6-3.6s3.6,1.62,3.6,3.6S13.98,15.6,12,15.6z"></path> - </svg> - </a></div> - <div class="space"></div> - <script type="module" src="../options/init.js"></script> - <script type="module" src="./popup.js"></script> -</body> - -</html> \ No newline at end of file diff --git a/src/pages/popup/popup.js b/src/pages/popup/popup.js index 1ac804d0..560aea9d 100644 --- a/src/pages/popup/popup.js +++ b/src/pages/popup/popup.js @@ -1,35 +1,24 @@ "use strict" window.browser = window.browser || window.chrome +import servicesHelper from "../../assets/javascripts/services.js" import utils from "../../assets/javascripts/utils.js" -import serviceHelper from "../../assets/javascripts/services.js" -let config, - divs = {} - -async function getConfig() { - return new Promise(resolve => { - fetch("/config/config.json") - .then(response => response.text()) - .then(data => { - config = JSON.parse(data) - resolve() - }) - }) -} - -await getConfig() - -utils.switchInstance(true).then(r => { - if (!r) document.getElementById("change_instance_div").style.display = "none" - else document.getElementById("change_instance").addEventListener("click", () => utils.switchInstance(false)) +servicesHelper.switchInstance().then(r => { + if (!r) + document.getElementById("change_instance_div").style.display = "none" + else + document.getElementById("change_instance").addEventListener("click", async () => { + browser.tabs.update({ url: await servicesHelper.switchInstance() }) + }) }) -utils.copyRaw(true).then(r => { - if (!r) document.getElementById("copy_raw_div").style.display = "none" +servicesHelper.copyRaw(true).then(r => { + if (!r) + document.getElementById("copy_raw_div").style.display = "none" else { const copy_raw = document.getElementById("copy_raw") - copy_raw.addEventListener("click", () => utils.copyRaw(false, copy_raw)) + copy_raw.addEventListener("click", () => servicesHelper.copyRaw(false, copy_raw)) } }) document.getElementById("more-options").addEventListener("click", () => browser.runtime.openOptionsPage()) @@ -37,78 +26,73 @@ document.getElementById("more-options").addEventListener("click", () => browser. const allSites = document.getElementsByClassName("all_sites")[0] const currSite = document.getElementsByClassName("current_site")[0] -function setDivs() { - return new Promise(resolve => { - for (const service in config.services) { - divs[service] = {} - divs[service].toggle = {} - divs[service].current = currSite.getElementsByClassName(service)[0] - divs[service].all = allSites.getElementsByClassName(service)[0] - divs[service].toggle.current = currSite.getElementsByClassName(service + "-enabled")[0] - divs[service].toggle.all = allSites.getElementsByClassName(service + "-enabled")[0] - } - resolve() - }) -} +const config = await utils.getConfig() -await setDivs() +let divs = {} +for (const service in config.services) { + divs[service] = {} + divs[service].toggle = {} + divs[service].current = currSite.getElementsByClassName(service)[0] + divs[service].all = allSites.getElementsByClassName(service)[0] + divs[service].toggle.current = currSite.getElementsByClassName(service + "-enabled")[0] + divs[service].toggle.all = allSites.getElementsByClassName(service + "-enabled")[0] +} const currentSiteIsFrontend = document.getElementById("current_site_divider") -browser.storage.local.get(["options", "redirects"], r => { - browser.tabs.query({ active: true, currentWindow: true }, async tabs => { - for (const service in config.services) { - if (!r.options.popupServices.includes(service)) allSites.getElementsByClassName(service)[0].classList.add("hide") - else allSites.getElementsByClassName(service)[0].classList.remove("hide") - currSite.getElementsByClassName(service)[0].classList.add("hide") - } +browser.tabs.query({ active: true, currentWindow: true }, async tabs => { + let options = await utils.getOptions() + for (const service in config.services) { + if (!options.popupServices.includes(service)) + allSites.getElementsByClassName(service)[0].classList.add("hide") + else + allSites.getElementsByClassName(service)[0].classList.remove("hide") + currSite.getElementsByClassName(service)[0].classList.add("hide") + } - for (const service in config.services) { - divs[service].toggle.all.checked = r.options[service].enabled - divs[service].toggle.current.checked = r.options[service].enabled - } + for (const service in config.services) { + divs[service].toggle.all.checked = options[service].enabled + divs[service].toggle.current.checked = options[service].enabled + } - let url - try { - url = new URL(tabs[0].url) - } catch { - currentSiteIsFrontend.classList.add("hide") - return - } + let url + try { + url = new URL(tabs[0].url) + } catch { + currentSiteIsFrontend.classList.add("hide") + return + } - let service = await serviceHelper.computeService(url, true) - let frontend - let instance - if (service) { - if (typeof service != "string") { - instance = service[2] - frontend = service[1] - service = service[0] - let isCustom = false - for (const network in config.networks) if (r.options[frontend][network].custom.indexOf(instance) > -1) isCustom = true - } - divs[service].current.classList.remove("hide") - divs[service].all.classList.add("hide") - } else { - currentSiteIsFrontend.classList.add("hide") + let service = await servicesHelper.computeService(url, true) + let frontend + let instance + if (service) { + if (typeof service != "string") { + instance = service[2] + frontend = service[1] + service = service[0] + let isCustom = false + for (const network in config.networks) + if (options[frontend].indexOf(instance) > -1) + isCustom = true } - }) + divs[service].current.classList.remove("hide") + divs[service].all.classList.add("hide") + } else { + currentSiteIsFrontend.classList.add("hide") + } }) for (const service in config.services) { - divs[service].toggle.all.addEventListener("change", () => { - browser.storage.local.get("options", r => { - let options = r.options - options[service].enabled = divs[service].toggle.all.checked - browser.storage.local.set({ options }) - }) + divs[service].toggle.all.addEventListener("change", async () => { + let options = await utils.getOptions() + options[service].enabled = divs[service].toggle.all.checked + browser.storage.local.set({ options }) }) - divs[service].toggle.current.addEventListener("change", () => { - browser.storage.local.get("options", r => { - let options = r.options - options[service].enabled = divs[service].toggle.current.checked - browser.storage.local.set({ options }) - }) + divs[service].toggle.current.addEventListener("change", async () => { + let options = await utils.getOptions() + options[service].enabled = divs[service].toggle.current.checked + browser.storage.local.set({ options }) }) } @@ -119,4 +103,4 @@ for (const a of document.getElementsByTagName("a")) { e.preventDefault() } }) -} +} \ No newline at end of file diff --git a/src/pages/popup/popup.pug b/src/pages/popup/popup.pug new file mode 100644 index 00000000..9a50f913 --- /dev/null +++ b/src/pages/popup/popup.pug @@ -0,0 +1,39 @@ +doctype html +html(lang="en") + head + meta(charset="UTF-8") + meta(name="viewport" content="width=device-width, initial-scale=1.0") + link(href="../stylesheets/styles.css" rel="stylesheet") + link(href="./style.css" rel="stylesheet") + body(dir="auto") + div(class="current_site") + include /src/pages/widgets/switches + div(id="current_site_divider") + hr + + div(class="all_sites") + include /src/pages/widgets/switches + + hr + + div(class="some-block" id="change_instance_div") + a(class="title button prevent" id="change_instance") + h4(data-localise="__MSG_switchInstance__") Change Instance + svg(xmlns="http://www.w3.org/2000/svg" height="26px" viewBox="0 0 24 24" width="26px" fill="currentColor") + path(d="M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01-.25 1.97-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0-4.42-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6 0-1.01.25-1.97.7-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4-4-4-4v3z") + + div(class="some-block" id="copy_raw_div" title="Copy the original redirected link") + a(class="title button prevent" id="copy_raw") + h4(data-localise="__MSG_copyRaw__") Copy Raw + svg(xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor") + path(d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z") + + div(class="some-block") + a(class="title button prevent" id="more-options") + h4(data-localise="__MSG_settings__") Settings + svg(xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="26px" viewBox="0 0 24 24" width="26px" fill="currentColor") + path(d="M19.14,12.94c0.04-0.3,0.06-0.61,0.06-0.94c0-0.32-0.02-0.64-0.07-0.94l2.03-1.58c0.18-0.14,0.23-0.41,0.12-0.61 l-1.92-3.32c-0.12-0.22-0.37-0.29-0.59-0.22l-2.39,0.96c-0.5-0.38-1.03-0.7-1.62-0.94L14.4,2.81c-0.04-0.24-0.24-0.41-0.48-0.41 h-3.84c-0.24,0-0.43,0.17-0.47,0.41L9.25,5.35C8.66,5.59,8.12,5.92,7.63,6.29L5.24,5.33c-0.22-0.08-0.47,0-0.59,0.22L2.74,8.87 C2.62,9.08,2.66,9.34,2.86,9.48l2.03,1.58C4.84,11.36,4.8,11.69,4.8,12s0.02,0.64,0.07,0.94l-2.03,1.58 c-0.18,0.14-0.23,0.41-0.12,0.61l1.92,3.32c0.12,0.22,0.37,0.29,0.59,0.22l2.39-0.96c0.5,0.38,1.03,0.7,1.62,0.94l0.36,2.54 c0.05,0.24,0.24,0.41,0.48,0.41h3.84c0.24,0,0.44-0.17,0.47-0.41l0.36-2.54c0.59-0.24,1.13-0.56,1.62-0.94l2.39,0.96 c0.22,0.08,0.47,0,0.59-0.22l1.92-3.32c0.12-0.22,0.07-0.47-0.12-0.61L19.14,12.94z M12,15.6c-1.98,0-3.6-1.62-3.6-3.6 s1.62-3.6,3.6-3.6s3.6,1.62,3.6,3.6S13.98,15.6,12,15.6z") + + div(class="space") + script(type="module" src="../options/init.js") + script(type="module" src="./popup.js") \ No newline at end of file diff --git a/src/pages/stylesheets/styles.css b/src/pages/stylesheets/styles.css index 5f2871e4..5f3c1cbe 100644 --- a/src/pages/stylesheets/styles.css +++ b/src/pages/stylesheets/styles.css @@ -28,6 +28,7 @@ body { margin: auto; padding: 0; font-family: "Inter"; + font-size: 16px; background-color: var(--bg-main); color: var(--text); } @@ -126,6 +127,12 @@ section.links div { } a { + text-decoration: none; + color: var(--text); + transition: 0.1s; +} + +a:hover { color: var(--active); } @@ -143,44 +150,11 @@ section.links a.selected { color: var(--active); } -input[type="range"] { - -webkit-appearance: none; - width: 350px; - height: 7px; - border-radius: 50px; - background: var(--text); - cursor: ew-resize; -} - -input[type="range"]:hover { - background: var(--light-grey); -} - -input[type="range"]::-webkit-slider-thumb { - appearance: none; - width: 20px; - height: 20px; - border-radius: 50%; - background: var(--active); - border: none; -} - -input[type="range"]::-moz-range-thumb { - width: 20px; - height: 20px; - border-radius: 50%; - background: var(--active); - border: none; -} - ::placeholder { color: var(--text); opacity: 0.7; } -#volume-value { - color: var(--active); -} /* \25BE */ @@ -352,10 +326,6 @@ button svg { color: var(--text); } -div.checklist { - direction: ltr; -} - div.checklist div { justify-content: space-between; margin: 5px 15px; @@ -386,6 +356,10 @@ div.checklist-popup div div { margin: 0; } +div.custom-checklist { + color: var(--active); +} + button.add { background-color: transparent; border: none; @@ -413,7 +387,7 @@ div.disabled { body.light-theme { --text: black; --bg-main: white; - --bg-secondary: #fff; + --bg-secondary: #e4e4e4; --active: #fb9817; } @@ -434,6 +408,10 @@ body.light-theme a { color: black; } +body.light-theme a:hover { + color: var(--active) +} + section.general { display: flex; flex-wrap: wrap; diff --git a/src/pages/widgets/head.ejs b/src/pages/widgets/head.ejs deleted file mode 100644 index d9e3802a..00000000 --- a/src/pages/widgets/head.ejs +++ /dev/null @@ -1,8 +0,0 @@ -<head> - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1"> - <link rel="icon" type="image/x-icon" href="../../../assets/images/libredirect.svg"> - <link href="../stylesheets/styles.css" rel="stylesheet"> - <title>General</title> - <script type="module" src="./init.js"></script> -</head> diff --git a/src/pages/widgets/head.pug b/src/pages/widgets/head.pug new file mode 100644 index 00000000..0c6e9fdb --- /dev/null +++ b/src/pages/widgets/head.pug @@ -0,0 +1,7 @@ +head + meta(charset="utf-8") + meta(name="viewport" content="width=device-width, initial-scale=1") + link(rel="icon" type="image/x-icon" href="../../../assets/images/libredirect.svg") + link(href="../stylesheets/styles.css" rel="stylesheet") + title Settings + script(type="module" src="./init.js") \ No newline at end of file diff --git a/src/pages/widgets/links.ejs b/src/pages/widgets/links.ejs deleted file mode 100644 index 2373a101..00000000 --- a/src/pages/widgets/links.ejs +++ /dev/null @@ -1,23 +0,0 @@ -<section class="links" id="links"> - <div class="title"> - <a href="#general"> - <%- include ('src/assets/images/general-icon.svg') %> - <span data-localise="__MSG_general__">General</span> - </a></div> - <% for (const service in services) { -%> - <div class="title"> - <a href="#<%= service %>"> - <% if (services[service].imageType != "svgMono") { _%> - <img src="../../../assets/images/<%= service %>-icon.<%= services[service].imageType %>"> - <% } else { _%> - <%- include ('src/assets/images/' + service + '-icon.svg') %> - <% } _%> - <span data-localise="__MSG_<%= service %>__"><%= services[service].name %></span> - </a></div> - <% }; -%> - <div class="title"> - <a href="#about"> - <%- include ('src/assets/images/about-icon.svg') %> - <span data-localise="__MSG_about__">About</span> - </a></div> -</section> diff --git a/src/pages/widgets/links.pug b/src/pages/widgets/links.pug new file mode 100644 index 00000000..253177f9 --- /dev/null +++ b/src/pages/widgets/links.pug @@ -0,0 +1,22 @@ +section(class="links" id="links") + div(class="title") + a(href="#general") + include /src/assets/images/general-icon.svg + span(data-localise="__MSG_general__") General + + each val, key in services + div(class="title") + a(href="#"+key) + if services[key].imageType == 'svgMono' + img(class='dark' src=`/assets/images/${key}-icon.svg`) + img(class='light' src=`/assets/images/${key}-icon-light.svg`) + else + img(src=`/assets/images/${key}-icon.${services[key].imageType}`) + span=services[key].name + + div(class="title") + a(target="_blank" href="https://libredirect.github.io") + img(class='dark' src="/assets/images/about-icon.svg") + img(class='light' src="/assets/images/about-icon-light.svg") + + span(data-localise="__MSG_about__") About diff --git a/src/pages/widgets/switches.ejs b/src/pages/widgets/switches.ejs deleted file mode 100644 index e3ffdae7..00000000 --- a/src/pages/widgets/switches.ejs +++ /dev/null @@ -1,11 +0,0 @@ -<% for (const service in services) { -%> -<div class="<%= service %> some-block"><a class="title" href="<%= services[service].url %>"> - <% if (services[service].imageType != "svgMono") { _%> - <img src="../../assets/images/<%= service %>-icon.<%= services[service].imageType %>"/> - <% } else { _%> - <%- include ('src/assets/images/' + service + '-icon.svg') %> - <% } _%> - <h4 data-localise="__MSG_<%= service %>__"><%= services[service].name %></h4></a> - <input class="<%= service %>-enabled" type="checkbox"/> -</div> -<% } %> diff --git a/src/pages/widgets/switches.pug b/src/pages/widgets/switches.pug new file mode 100644 index 00000000..580a25dc --- /dev/null +++ b/src/pages/widgets/switches.pug @@ -0,0 +1,10 @@ +each val, service in services + div(class=service + " some-block") + a(class="title" href=services[service].url) + if services[service].imageType == 'svgMono' + img(class='dark' src=`/assets/images/${service}-icon.svg`) + img(class='light' src=`/assets/images/${service}-icon-light.svg`) + else + img(src=`/assets/images/${service}-icon.${services[service].imageType}`) + h4=services[service].name + input(class=service + "-enabled" type="checkbox") \ No newline at end of file diff --git a/src/updates/updates.xml b/src/updates/updates.xml index fb0dda1b..42722e75 100644 --- a/src/updates/updates.xml +++ b/src/updates/updates.xml @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='UTF-8'?> <gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'> <app appid='oladmjdebphlnjjcnomfhhbfdldiimaf'> - <updatecheck codebase='https://github.com/libredirect/libredirect/releases/download/v2.3.4/libredirect-2.3.4.crx' version='2.3.4' /> + <updatecheck codebase='https://github.com/libredirect/libredirect/releases/download/v2.5.0/libredirect-2.5.0.crx' version='2.5.0' /> </app> </gupdate> |