commit 1370b30eb14bcceaa2603bc30082f1dd3769dccc Author: Kekskurse Date: Wed Nov 11 15:43:41 2020 +0100 Backup diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9dfd155 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +public +release.sh diff --git a/archetypes/default.md b/archetypes/default.md new file mode 100644 index 0000000..00e77bd --- /dev/null +++ b/archetypes/default.md @@ -0,0 +1,6 @@ +--- +title: "{{ replace .Name "-" " " | title }}" +date: {{ .Date }} +draft: true +--- + diff --git a/config.toml b/config.toml new file mode 100644 index 0000000..816e052 --- /dev/null +++ b/config.toml @@ -0,0 +1,49 @@ +baseURL = "https://www.kekskurse.de/" +languageCode = "en-us" +title = "Kekskurse" +theme="archie" + +[params] + mode="auto" + featherIconsCDN=false + subtitle = "Private Webpage" + +[[params.social]] +name = "GitHub" +icon = "github" +url = "https://github.com/kekskurse" + +[[params.social]] +name = "Twitter" +icon = "twitter" +url = "https://twitter.com/kekskurse" + +[[params.social]] +name = "Instagram" +icon = "instagram" +url = "https://instagram.com/kekskurse" + +[[menu.main]] +name = "Blog" +url = "/tags/blog/" +weight = 10 + + +[[menu.main]] +name = "Images" +url = "/gallery/" +weight = 30 + + +[[menu.main]] +name = "Contact" +url = "/about" +weight = 40 + +[taxonomies] + tag = "tags" + category = "categories" + + + + diff --git a/content/about.md b/content/about.md new file mode 100644 index 0000000..91748b2 --- /dev/null +++ b/content/about.md @@ -0,0 +1,7 @@ +--- +title: "About" +date: 2020-10-01T14:49:09+02:00 +draft: false +--- + +Mail: hello [at] kekskurse.de \ No newline at end of file diff --git a/content/gallery.md b/content/gallery.md new file mode 100644 index 0000000..261d6bc --- /dev/null +++ b/content/gallery.md @@ -0,0 +1,7 @@ +--- +title: "Gallery" +date: 2020-10-01T14:49:09+02:00 +draft: true +hideDate: true +--- +{{}} \ No newline at end of file diff --git a/content/posts/2020-06-30-Kasterne-Vogelsang.md b/content/posts/2020-06-30-Kasterne-Vogelsang.md new file mode 100644 index 0000000..51754e3 --- /dev/null +++ b/content/posts/2020-06-30-Kasterne-Vogelsang.md @@ -0,0 +1,12 @@ +--- +title: "Kaserne Vogelsang" +date: 2020-06-30T16:31:55+02:00 +draft: false +categories: ["Images"] +tags: ["Lost Places"] +description: "Image Gallery" +lang: img +gallery: "/img/2020/06/kaserne-vogelsang/DSC03651.jpg" +--- + +{{< gallery dir="img/2020/06/kaserne-vogelsang" caption-position="none" caption-effect="fade" />}} {{< load-photoswipe >}} diff --git a/content/posts/2020-07-01-Meseberg.md b/content/posts/2020-07-01-Meseberg.md new file mode 100644 index 0000000..07b81b9 --- /dev/null +++ b/content/posts/2020-07-01-Meseberg.md @@ -0,0 +1,11 @@ +--- +title: "Meseberg" +date: 2020-07-01T16:31:55+02:00 +draft: false +categories: ["Images"] +description: "Image Gallery" +lang: img +gallery: "/img/2020/07/meseberg/DSC03707.jpg" +--- + +{{< gallery dir="img/2020/07/meseberg" caption-position="none" caption-effect="fade" />}} {{< load-photoswipe >}} diff --git a/content/posts/2020-07-01-Natur.md b/content/posts/2020-07-01-Natur.md new file mode 100644 index 0000000..5d84096 --- /dev/null +++ b/content/posts/2020-07-01-Natur.md @@ -0,0 +1,11 @@ +--- +title: "Natur" +date: 2020-07-01T16:31:55+02:00 +draft: false +categories: ["Images"] +description: "Image Gallery" +lang: img +gallery: "/img/2020/07/natur/DSC03483.jpg" +--- + +{{< gallery dir="img/2020/07/natur" caption-position="none" caption-effect="fade" />}} {{< load-photoswipe >}} diff --git a/content/posts/2020-07-02-Sterne.md b/content/posts/2020-07-02-Sterne.md new file mode 100644 index 0000000..c8bd034 --- /dev/null +++ b/content/posts/2020-07-02-Sterne.md @@ -0,0 +1,11 @@ +--- +title: "Sterne" +date: 2020-07-02T16:31:55+02:00 +draft: false +categories: ["Images"] +description: "Image Gallery" +lang: img +gallery: "/img/2020/07/sterne/DSC03784.jpg" +--- + +{{< gallery dir="img/2020/07/sterne" caption-position="none" caption-effect="fade" />}} {{< load-photoswipe >}} diff --git a/content/posts/2020-07-11-Königin-Elisabeth-Hospital.md b/content/posts/2020-07-11-Königin-Elisabeth-Hospital.md new file mode 100644 index 0000000..440c44c --- /dev/null +++ b/content/posts/2020-07-11-Königin-Elisabeth-Hospital.md @@ -0,0 +1,12 @@ +--- +title: "Königin-Elisabeth-Hospital" +date: 2020-07-11T16:31:55+02:00 +draft: false +categories: ["Images"] +tags: ["Lost Places"] +description: "Image Gallery" +lang: img +gallery: "/img/2020/07/koenigin-elisabeth-hospital/DSC03990.jpg" +--- + +{{< gallery dir="img/2020/07/koenigin-elisabeth-hospital" caption-position="none" caption-effect="fade" />}} {{< load-photoswipe >}} diff --git a/content/posts/2020-08-01-Flugplatz-Rangsdorf.md b/content/posts/2020-08-01-Flugplatz-Rangsdorf.md new file mode 100644 index 0000000..1c24677 --- /dev/null +++ b/content/posts/2020-08-01-Flugplatz-Rangsdorf.md @@ -0,0 +1,12 @@ +--- +title: "Flugplatz Rangsdorf" +date: 2020-08-01T16:31:55+02:00 +draft: false +categories: ["Images"] +tags: ["Lost Places"] +description: "Image Gallery" +lang: img +gallery: "/img/2020/08/flugplatz-rangsdorf/DSC04292.jpg" +--- + +{{< gallery dir="img/2020/08/flugplatz-rangsdorf" caption-position="none" caption-effect="fade" />}} {{< load-photoswipe >}} diff --git a/content/posts/2020-08-19-Birkenwerder.md b/content/posts/2020-08-19-Birkenwerder.md new file mode 100644 index 0000000..c0bb36e --- /dev/null +++ b/content/posts/2020-08-19-Birkenwerder.md @@ -0,0 +1,11 @@ +--- +title: "Birkenwerder" +date: 2020-08-19T16:31:55+02:00 +draft: false +categories: ["Images"] +description: "Image Gallery" +lang: img +gallery: "/img/2020/08/birkenwerder/DSC04866.jpg" +--- + +{{< gallery dir="img/2020/08/birkenwerder" caption-position="none" caption-effect="fade" />}} {{< load-photoswipe >}} diff --git a/content/posts/2020-09-06-Fürstenberg.md b/content/posts/2020-09-06-Fürstenberg.md new file mode 100644 index 0000000..690d957 --- /dev/null +++ b/content/posts/2020-09-06-Fürstenberg.md @@ -0,0 +1,11 @@ +--- +title: "Fürstenberg" +date: 2020-09-06T16:31:55+02:00 +draft: false +categories: ["Images"] +description: "Image Gallery" +lang: img +gallery: "/img/2020/09/fuerstenberg/DSC05990.jpg" +--- + +{{< gallery dir="img/2020/09/fuerstenberg" caption-position="none" caption-effect="fade" />}} {{< load-photoswipe >}} diff --git a/content/posts/2020-09-06-Haus-der-Offiziere.md b/content/posts/2020-09-06-Haus-der-Offiziere.md new file mode 100644 index 0000000..a9804e3 --- /dev/null +++ b/content/posts/2020-09-06-Haus-der-Offiziere.md @@ -0,0 +1,12 @@ +--- +title: "Haus der Offiziere" +date: 2020-09-06T16:31:55+02:00 +draft: false +categories: ["Images"] +tags: ["Lost Places"] +description: "Image Gallery" +lang: img +gallery: "/img/2020/09/haus-der-offiziere/DSC05619.jpg" +--- + +{{< gallery dir="img/2020/09/haus-der-offiziere" caption-position="none" caption-effect="fade" />}} {{< load-photoswipe >}} diff --git a/content/posts/2020-09-06-Kraftfuttermischwerk.md b/content/posts/2020-09-06-Kraftfuttermischwerk.md new file mode 100644 index 0000000..a0892b8 --- /dev/null +++ b/content/posts/2020-09-06-Kraftfuttermischwerk.md @@ -0,0 +1,13 @@ +--- +title: "Kraftfuttermischwerk" +date: 2020-09-06T16:31:55+02:00 +draft: false +categories: ["Images"] +description: "Image Gallery" +tags: ["Lost Places"] +startpage: false +lang: img +gallery: "/img/2020/09/kraftfuttermischwerk/DSC05547.jpg" +--- + +{{< gallery dir="img/2020/09/kraftfuttermischwerk" caption-position="none" caption-effect="fade" />}} {{< load-photoswipe >}} diff --git a/content/posts/2020-10-01-Edifier-remote.md b/content/posts/2020-10-01-Edifier-remote.md new file mode 100644 index 0000000..41972cf --- /dev/null +++ b/content/posts/2020-10-01-Edifier-remote.md @@ -0,0 +1,81 @@ +--- +title: "Edifier R1700BT Remote Control" +date: 2020-10-01T14:44:25+02:00 +draft: false +description: "Use a Wemos to create an mqtt-based remote control" +tags: ["WeMos", "Arduino", "Blog"] +categories: ["Electronics"] +startpage: true +lang: gb +--- + +After I got the Edifier R1700BT Speaker I notice that i want to control them like all my other stuff with my moile phone and MQTT. So i got some IR reciver and LEDs to simulate the Edifier Remote with a Wemos who is connected to my MQTT Server. + +{{< tweet 1310694353187344385 >}} + +I figure out the IR-Codes used: + +* 149389439 -> power on/off +* 149356799 -> mute +* 149369039 -> Volume Up +* 149393519 -> Volume Down +* 149377199 -> Switch input to Bluetooth +* 149399639 -> Switch input to Line In + +## Hardware + +I connected the IR-LED to the D4 Pin of a Wemos. I used [this question](https://antwortenhier.me/q/wie-steuere-ich-die-ir-led-mit-esp8266-pint-bei-3-3-v-und-mosfet-um-einen-62376266277) as basic idea. + +{{< figure src="/img/2020/10/ir-remote/plan.png" >}} + +## Software + +With this Numbers, and the [pubsubclient](https://github.com/knolleary/pubsubclient) and [IRremoteESP8266](https://github.com/crankyoldgit/IRremoteESP8266) i just can subscripe to some topics, and every time a message aravid at one of the topics i could send the code to the speaker: + +``` +if(String(topic)=="musik/power") { + irsend.sendNEC(149389439, 32); + Serial.println("EDIFIER: Power"); +} + +if(String(topic)=="musik/mute") { + irsend.sendNEC(149356799, 32); + Serial.println("EDIFIER: Mute"); +} + +if(String(topic)=="musik/down") { + irsend.sendNEC(149369039, 32); + Serial.println("EDIFIER: Down"); +} + +if(String(topic)=="musik/up") { + irsend.sendNEC(149393519, 32); + Serial.println("EDIFIER: UP"); +} + +if(String(topic)=="musik/bluetooth") { + irsend.sendNEC(149377199, 32); + Serial.println("EDIFIER: Bluetooth"); +} + +if(String(topic)=="musik/line") { + irsend.sendNEC(149399639, 32); + Serial.println("EDIFIER: Line"); +} +``` + +## Final Result + +After solder everything to a perforated board I got the following result. + +{{< figure src="/img/2020/10/ir-remote/result.jpg" >}} + +Maybe I will create another smaller version to hide next to the speaker. For now it works. + +## Complete Code + + +You can got the complete code here: [Complete Code](/code/ir-wemos-mosfet.txt) + + +{{< load-photoswipe >}} \ No newline at end of file diff --git a/content/posts/2020-10-03-spaziergang-gruenau.md b/content/posts/2020-10-03-spaziergang-gruenau.md new file mode 100644 index 0000000..35c05e6 --- /dev/null +++ b/content/posts/2020-10-03-spaziergang-gruenau.md @@ -0,0 +1,41 @@ +--- +title: "Spaziergang Grünau" +date: 2020-10-03T14:44:25+02:00 +draft: false +description: "Spaziergang in Grünau" +tags: ["Lost Places", "Blog"] +categories: ["Images"] +startpage: false +lang: de +gallery: "/img/2020/10/gruenau/DSC06623.jpg" +--- +Heute lief ich am [ehemalige Funkhaus Grünau](https://de.wikipedia.org/wiki/Funkhaus_Gr%C3%BCnau) vorbei. Das Gebäude kann aktuell scheinbar nicht mehr betreten werden. + +{{< gallery caption-position="bottom" caption-effect="fade" >}} + {{< figure src="/img/2020/10/gruenau/DSC06623.jpg" caption="Eingangstür" >}} + {{< figure src="/img/2020/10/gruenau/DSC06676.jpg" caption="Seitenansicht Rechts" >}} + {{< figure src="/img/2020/10/gruenau/DSC06677.jpg" caption="Seitenansicht Links" >}} + {{< figure src="/img/2020/10/gruenau/DSC06673.jpg" caption="Wasser Seite" >}} + {{< figure src="/img/2020/10/gruenau/DSC06675.jpg" caption="Grafitti" >}} +{{< /gallery >}} + +Hinter dem Funkhaus schließt sich ein schöner Fuß/Rad weg an. Auf diesem kann entlang des Wassers spaziert werden mit vielen Sitzplätzen inc Wasserblick. Außerdem ist sehr leicht an vielen Stellen in die Tram die alle 20 Minuten den selben weg entlangfährt einzusteigen und sich wieder zurück fahren zu lassen. + +{{< gallery caption-position="bottom" caption-effect="fade" >}} + {{< figure src="/img/2020/10/gruenau/DSC06633_01.jpg" caption="Pilz" >}} + {{< figure src="/img/2020/10/gruenau/DSC06643.jpg" caption="Bauwerk auf Wasser" >}} + {{< figure src="/img/2020/10/gruenau/DSC06647.jpg" caption="Steg auf Wasser" >}} + {{< figure src="/img/2020/10/gruenau/DSC06661.jpg" caption="Rote Bojen umrandet von Blättern" >}} + {{< figure src="/img/2020/10/gruenau/DSC06680_01.jpg" caption="Tram" >}} + {{< figure src="/img/2020/10/gruenau/DSC06682_01.jpg" caption="Parkendes Motorad" >}} + {{< figure src="/img/2020/10/gruenau/DSC06694_01.jpg" caption="Ins Wasser reichender Baum" >}} + {{< figure src="/img/2020/10/gruenau/DSC06711.jpg" caption="Ins Wasser reichender Baum" >}} + {{< figure src="/img/2020/10/gruenau/DSC06725.jpg" caption="Sitzgelegenheit am Wasser" >}} + {{< figure src="/img/2020/10/gruenau/DSC06730.jpg" caption="Bote" >}} +{{< /gallery >}} + + + + + +{{< load-photoswipe >}} diff --git a/content/posts/2020-10-17-Hugo-Shortcodes.md b/content/posts/2020-10-17-Hugo-Shortcodes.md new file mode 100644 index 0000000..61fcd62 --- /dev/null +++ b/content/posts/2020-10-17-Hugo-Shortcodes.md @@ -0,0 +1,79 @@ +--- +title: "Own Hugo Shortcodes" +date: 2020-10-17T02:22:53+02:00 +draft: false +description: "How to create your own Shortcodes with Hugo" +tags: ["Hugo", "Go", "Blog"] +categories: ["Programming"] +startpage: true +lang: gb +--- +After using [Hugo](https://gohugo.io/) for this Webpage I want to create a [Gallery Page](/gallery/). I already used [hugo-easy-gallery](https://github.com/liwenyip/hugo-easy-gallery) inside Posts so i noticed the "layouts/shortcodes" folder at my projekt. After I created a new Layout for one Page and implement all the used HTML/JS/CSS Stuff i thought it would be a better way to use the "normal" layout and find anouther way to create the Gallery view. + +## Generale Shortcodes + +I created a new html file inside the Folder `layouts/shortcodes`. I called it `test.html` for now. In this file I could insert some basic HTML Code: + +``` +FooBar Sample +``` + +and a new md file for my Gallery with the following content: + +``` +--- +title: "Gallery" +date: 2020-10-01T14:49:09+02:00 +draft: true +--- +{{}} +``` + +which together create the following Result: + +{{< figure src="/img/2020/10/hugo-shortcodes/test-html.png" >}} + +Based on the [offical documentation](https://gohugo.io/templates/shortcode-templates/) hugo try to find the html File in the `/layouts/shortcodes/.html` or the `/themes//layouts/shortcodes/.html` directory. + +## Create a Gallery with a Shortcode + +The Gallery Page is a overview over multible Posts, so i don't want to show a Publish Date. On my theme I need to create a small hack to achieve that, I added a new Varieable to my Posts call `hideDate`. In my template single.html file i just added an if to check if the Parametet is set: + +``` +{{ if eq .Params.hideDate nil}} +
Posted on {{ dateFormat "Jan 2, 2006" .Date }}{{ if .Draft }} DRAFT {{ end }}
+{{ end }} +``` + +I also added a `gallery` Field in the Post-Header of all Content Fiels which should be shown in the Gallery. The `gallery` fieeld contains a link to an image. So I can query for that posts in the hugo langauge. + +``` +{{ $pages := where (where .Site.RegularPages "Type" "in" .Site.Params.mainSections) ".Params.gallery" "!=" nil }} +``` + +To create the Galery itselfs i used the JQuery (i know its not the best any more but easy to integrate in hugo) [Justified-Gallery](http://miromannino.github.io/Justified-Gallery/). Also there is no reason to show the Gallery two times at one Page, therefore I don't care about loading the js file multible times. If te same shourcade is used more than one time it may make sens to move the loading of external javascript files to another place. + +After all I have the following shortcode-file: + +``` + + + +{{ $pages := where (where .Site.RegularPages "Type" "in" .Site.Params.mainSections) ".Params.gallery" "!=" nil }} +
+ {{ range $pages }} + + {{ .Title }} + + {{ end }} +
+
+ + +``` \ No newline at end of file diff --git a/content/posts/2020-10-28-Mqtt-At-Home.md b/content/posts/2020-10-28-Mqtt-At-Home.md new file mode 100644 index 0000000..7e380ac --- /dev/null +++ b/content/posts/2020-10-28-Mqtt-At-Home.md @@ -0,0 +1,14 @@ +--- +title: "MQTT at Home" +date: 2020-10-28T21:32:53+02:00 +draft: true +description: "How I use MQTT at Home to connect stuff." +tags: ["MQTT", "IoT", "Blog"] +categories: ["Programming"] +startpage: true +lang: gb +--- +Ok i live in a small appartment, but at least I have three Window and a little bit stuff to connect with each other. I startes with [Ikea TRÅDFRI](https://www.ikea.com/de/de/cat/ikea-home-smart-beleuchtung-36812/) and some selfe made components based Arudino/Wemos. About one year ago I tried [zigbee2mqtt](https://www.zigbee2mqtt.io/) to connect the ikea bulbs to MQTT without using my own buggy code. I used a MQTT-Broker on a Virtual Server somewhere in the internet and develop some PHP-Application with lumen (some of them running in kubernetes) to connect everything. + + +I still use [Mqtt Dash](https://play.google.com/store/apps/details?id=net.routix.mqttdash&hl=de&gl=US) at my Android Device do control most things. \ No newline at end of file diff --git a/layouts/shortcodes/figure.html b/layouts/shortcodes/figure.html new file mode 100644 index 0000000..38924da --- /dev/null +++ b/layouts/shortcodes/figure.html @@ -0,0 +1,29 @@ + + +{{- if not ($.Page.Scratch.Get "figurecount") }}{{ end }} +{{- $.Page.Scratch.Add "figurecount" 1 -}} + +{{- $thumb := .Get "src" | default (printf "%s." (.Get "thumb") | replace (.Get "link") ".") }} +
+
+
+ +
+ {{ with .Get "link" | default (.Get "src") }}{{ end }} + {{- if or (or (.Get "title") (.Get "caption")) (.Get "attr")}} +
+ {{- with .Get "title" }}

{{.}}

{{ end }} + {{- if or (.Get "caption") (.Get "attr")}} +

+ {{- .Get "caption" -}} + {{- with .Get "attrlink"}}{{ .Get "attr" }}{{ else }}{{ .Get "attr"}}{{ end -}} +

+ {{- end }} +
+ {{- end }} +
+
diff --git a/layouts/shortcodes/gallery-all.html b/layouts/shortcodes/gallery-all.html new file mode 100644 index 0000000..54e0eca --- /dev/null +++ b/layouts/shortcodes/gallery-all.html @@ -0,0 +1,20 @@ + + + +{{ $pages := where (where .Site.RegularPages "Type" "in" .Site.Params.mainSections) ".Params.gallery" "!=" nil }} +
+ {{ range $pages }} + + {{ .Title }} + + {{ end }} +
+
+ + diff --git a/layouts/shortcodes/gallery.html b/layouts/shortcodes/gallery.html new file mode 100644 index 0000000..aac2ace --- /dev/null +++ b/layouts/shortcodes/gallery.html @@ -0,0 +1,41 @@ + + +{{- if not ($.Page.Scratch.Get "figurecount") }}{{ end }} +{{- $.Page.Scratch.Add "figurecount" 1 }} +{{ $baseURL := .Site.BaseURL }} + diff --git a/layouts/shortcodes/load-photoswipe-theme.html b/layouts/shortcodes/load-photoswipe-theme.html new file mode 100644 index 0000000..4b3bfad --- /dev/null +++ b/layouts/shortcodes/load-photoswipe-theme.html @@ -0,0 +1,75 @@ + + + +{{ if not ($.Page.Scratch.Get "photoswipeloaded") }} + {{ $.Page.Scratch.Set "photoswipeloaded" 1 }} + + + + + + + + + + + +{{ end }} \ No newline at end of file diff --git a/layouts/shortcodes/load-photoswipe.html b/layouts/shortcodes/load-photoswipe.html new file mode 100644 index 0000000..9eec863 --- /dev/null +++ b/layouts/shortcodes/load-photoswipe.html @@ -0,0 +1,71 @@ + + + +{{ if not ($.Page.Scratch.Get "photoswipeloaded") }} + {{ $.Page.Scratch.Set "photoswipeloaded" 1 }} + + + + + + + + + + + + + +{{ end }} \ No newline at end of file diff --git a/layouts/shortcodes/test.html b/layouts/shortcodes/test.html new file mode 100644 index 0000000..70a97a2 --- /dev/null +++ b/layouts/shortcodes/test.html @@ -0,0 +1 @@ +FooBar Sample diff --git a/static/code/ir-wemos-mosfet.txt b/static/code/ir-wemos-mosfet.txt new file mode 100644 index 0000000..4830ed9 --- /dev/null +++ b/static/code/ir-wemos-mosfet.txt @@ -0,0 +1,134 @@ +#include +#include +#include +#include +#include +#include + + + +const char* ssid = ""; +const char* password = ""; +const char* mqtt_server = ""; +const char* mqtt_user = ""; +const char* mqtt_pass = ""; +const char* mqtt_client_id = "edifier-remote"; +const char* mqtt_status_topic = "status/edifier-remote"; + + +WiFiClient espClient; +PubSubClient client(espClient); + + +//IRrecv irrecv(RECV_PIN); +IRsend irsend(0); +//decode_results results; + +void setup_wifi() { + + delay(10); + // We start by connecting to a WiFi network + Serial.println(); + Serial.print("Connecting to "); + Serial.println(ssid); + + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, password); + + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + + randomSeed(micros()); + + Serial.println(""); + Serial.println("WiFi connected"); + Serial.println("IP address: "); + Serial.println(WiFi.localIP()); +} + + +void callback(char* topic, byte* payload, unsigned int length) { + + Serial.print("Message arrived ["); + Serial.print(topic); + Serial.print("] "); + for (int i = 0; i < length; i++) { + Serial.print((char)payload[i]); + } + Serial.println(); + + if(String(topic)=="musik/power") { + irsend.sendNEC(149389439, 32); + Serial.println("EDIFIER: Power"); + } + + if(String(topic)=="musik/mute") { + irsend.sendNEC(149356799, 32); + Serial.println("EDIFIER: Mute"); + } + + if(String(topic)=="musik/down") { + irsend.sendNEC(149369039, 32); + Serial.println("EDIFIER: Down"); + } + + if(String(topic)=="musik/up") { + irsend.sendNEC(149393519, 32); + Serial.println("EDIFIER: UP"); + } + + if(String(topic)=="musik/bluetooth") { + irsend.sendNEC(149377199, 32); + Serial.println("EDIFIER: Bluetooth"); + } + + if(String(topic)=="musik/line") { + irsend.sendNEC(149399639, 32); + Serial.println("EDIFIER: Line"); + } + +} + + +void reconnect() { + Serial.println("Reconnect!"); + // Loop until we're reconnected + while (!client.connected()) { + Serial.print("Attempting MQTT connection..."); + // Attempt to connect + if (client.connect(mqtt_client_id, mqtt_user, mqtt_pass, mqtt_status_topic, 1, true, "0")) { + Serial.println("connected"); + // Once connected, publish an announcement... + client.publish(mqtt_status_topic, "1"); + // ... and resubscribe + client.subscribe("musik/#"); + } else { + Serial.print("failed, rc="); + Serial.print(client.state()); + Serial.println(" try again in 5 seconds"); + // Wait 5 seconds before retrying + delay(5000); + } + } +} + + +void setup() +{ + Serial.begin(9600); + irsend.begin(); + Serial.println("Start"); + Serial.println("Start"); + setup_wifi(); + client.setServer(mqtt_server, 1883); + client.setCallback(callback); +} + +void loop() { + if (!client.connected()) { + reconnect(); + } + client.loop(); +} \ No newline at end of file diff --git a/static/css/hugo-easy-gallery.css b/static/css/hugo-easy-gallery.css new file mode 100644 index 0000000..343667f --- /dev/null +++ b/static/css/hugo-easy-gallery.css @@ -0,0 +1,164 @@ +/* +Put this file in /static/css/hugo-easy-gallery.css +Documentation and licence at https://github.com/liwenyip/hugo-easy-gallery/ +*/ + + +/* +Grid Layout Styles +*/ +.gallery { + overflow: hidden; + margin: 10px; + max-width: 768px; + --hovercolor: none; +} +.gallery .box { + float: left; + position: relative; + /* Default: 1 tile wide */ + width: 100%; + padding-bottom: 100%; +} +@media only screen and (min-width : 365px) { + /* Tablet view: 2 tiles */ + .gallery .box { + width: 50%; + padding-bottom: 50%; + } +} +@media only screen and (min-width : 480px) { + /* Small desktop / ipad view: 3 tiles */ + .gallery .box { + width: 33.3%; + padding-bottom: 33.3%; /* */ + } +} +@media only screen and (min-width : 9999px) { + /* Medium desktop: 4 tiles */ + .box { + width: 25%; + padding-bottom: 25%; + } +} + +/* +Transition styles +*/ +.gallery.hover-transition figure, +.gallery.hover-effect-zoom .img, +.gallery:not(.caption-effect-appear) figcaption, +.fancy-figure:not(.caption-effect-appear) figcaption { + -webkit-transition: all 0.3s ease-in-out; + -moz-transition: all 0.3s ease-in-out; + -o-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; +} +/* +figure styles +*/ +figure { + position:relative; /* purely to allow absolution positioning of figcaption */ + overflow: hidden; + --hovercolor: none; +} + +.gallery figure { + position: absolute; + left: 5px; + right: 5px; + top: 5px; + bottom: 5px; +} +.gallery.hover-effect-grow figure:hover { + transform: scale(1.05); +} +.gallery.hover-effect-shrink figure:hover { + transform: scale(0.95); +} +.gallery.hover-effect-slidedown figure:hover { + transform: translateY(5px); +} +.gallery.hover-effect-slideup figure:hover { + transform: translateY(-5px); +} + +/* +img / a styles +*/ + +.gallery .img { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + background-size: cover; + background-position: 50% 50%; + background-repeat: no-repeat; +} +.gallery.hover-effect-zoom figure:hover .img { + transform: scale(1.05); +} +.gallery img { + display: none; /* only show the img if not inside a gallery */ +} +figure a { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + border-bottom: 0px; + +} + +/* +figcaption styles +*/ +.gallery figcaption, +.fancy-figure figcaption { + position: absolute; + bottom: 0; + left: 0; + right: 0; + background: #000; + color: #FFF; + text-align: center; + font-size: 75%; /* change this if you want bigger text */ + background: rgba(0, 0, 0, 0.5); + opacity: 1; + cursor: pointer; +} +.gallery.caption-position-none figcaption, +.fancy-figure.caption-position-none figcaption { + display: none; +} +.gallery.caption-position-center figcaption, +.fancy-figure.caption-position-center figcaption { + top: 0; + padding: 40% 5px; +} +.gallery.caption-position-bottom figcaption, +.fancy-figure.caption-position-bottom figcaption { + padding: 5px; +} +.gallery.caption-effect-fade figure:not(:hover) figcaption, +.gallery.caption-effect-appear figure:not(:hover) figcaption, +.fancy-figure.caption-effect-fade figure:not(:hover) figcaption, +.fancy-figure.caption-effect-appear figure:not(:hover) figcaption { + background: rgba(0, 0, 0, 0); + opacity: 0; +} +.gallery.caption-effect-slide.caption-position-bottom figure:not(:hover) figcaption, +.fancy-figure.caption-effect-slide.caption-position-bottom figure:not(:hover) figcaption { + margin-bottom: -100%; +} +.gallery.caption-effect-slide.caption-position-center figure:not(:hover) figcaption, +.fancy-figure.caption-effect-slide.caption-position-center figure:not(:hover) figcaption { + top: 100%; +} +figcaption p { + margin: auto; /* override style in theme */ +} + diff --git a/static/css/justifiedGallery.min.css b/static/css/justifiedGallery.min.css new file mode 100644 index 0000000..172dd8b --- /dev/null +++ b/static/css/justifiedGallery.min.css @@ -0,0 +1,110 @@ +/*! + * justifiedGallery - v3.8.0 + * http://miromannino.github.io/Justified-Gallery/ + * Copyright (c) 2020 Miro Mannino + * Licensed under the MIT license. + */ +.justified-gallery { + width: 100%; + position: relative; + overflow: hidden; +} +.justified-gallery > a, +.justified-gallery > div, +.justified-gallery > figure { + position: absolute; + display: inline-block; + overflow: hidden; + /* background: #888888; To have gray placeholders while the gallery is loading with waitThumbnailsLoad = false */ + filter: "alpha(opacity=10)"; + opacity: 0.1; + margin: 0; + padding: 0; +} +.justified-gallery > a > img, +.justified-gallery > div > img, +.justified-gallery > figure > img, +.justified-gallery > a > a > img, +.justified-gallery > div > a > img, +.justified-gallery > figure > a > img, +.justified-gallery > a > svg, +.justified-gallery > div > svg, +.justified-gallery > figure > svg, +.justified-gallery > a > a > svg, +.justified-gallery > div > a > svg, +.justified-gallery > figure > a > svg { + position: absolute; + top: 50%; + left: 50%; + margin: 0; + padding: 0; + border: none; + filter: "alpha(opacity=0)"; + opacity: 0; +} +.justified-gallery > a > .jg-caption, +.justified-gallery > div > .jg-caption, +.justified-gallery > figure > .jg-caption { + display: none; + position: absolute; + bottom: 0; + padding: 5px; + background-color: #000000; + left: 0; + right: 0; + margin: 0; + color: white; + font-size: 12px; + font-weight: 300; + font-family: sans-serif; +} +.justified-gallery > a > .jg-caption.jg-caption-visible, +.justified-gallery > div > .jg-caption.jg-caption-visible, +.justified-gallery > figure > .jg-caption.jg-caption-visible { + display: initial; + filter: "alpha(opacity=70)"; + opacity: 0.7; + -webkit-transition: opacity 500ms ease-in; + -moz-transition: opacity 500ms ease-in; + -o-transition: opacity 500ms ease-in; + transition: opacity 500ms ease-in; +} +.justified-gallery > .jg-entry-visible { + filter: "alpha(opacity=100)"; + opacity: 1; + background: none; +} +.justified-gallery > .jg-entry-visible > img, +.justified-gallery > .jg-entry-visible > a > img, +.justified-gallery > .jg-entry-visible > svg, +.justified-gallery > .jg-entry-visible > a > svg { + filter: "alpha(opacity=100)"; + opacity: 1; + -webkit-transition: opacity 500ms ease-in; + -moz-transition: opacity 500ms ease-in; + -o-transition: opacity 500ms ease-in; + transition: opacity 500ms ease-in; +} +.justified-gallery > .jg-filtered { + display: none; +} +.justified-gallery > .jg-spinner { + position: absolute; + bottom: 0; + margin-left: -24px; + padding: 10px 0 10px 0; + left: 50%; + filter: "alpha(opacity=100)"; + opacity: 1; + overflow: initial; +} +.justified-gallery > .jg-spinner > span { + display: inline-block; + filter: "alpha(opacity=0)"; + opacity: 0; + width: 8px; + height: 8px; + margin: 0 4px 0 4px; + background-color: #000; + border-radius: 6px; +} diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03511.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03511.jpg new file mode 100644 index 0000000..1e47a75 Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03511.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03513.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03513.jpg new file mode 100644 index 0000000..983d0ea Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03513.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03515.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03515.jpg new file mode 100644 index 0000000..f6e4ea3 Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03515.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03518.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03518.jpg new file mode 100644 index 0000000..977b81a Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03518.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03520.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03520.jpg new file mode 100644 index 0000000..2c50eeb Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03520.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03521.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03521.jpg new file mode 100644 index 0000000..716157e Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03521.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03533.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03533.jpg new file mode 100644 index 0000000..0dcb962 Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03533.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03540.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03540.jpg new file mode 100644 index 0000000..01def2d Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03540.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03545.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03545.jpg new file mode 100644 index 0000000..6f6e760 Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03545.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03547.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03547.jpg new file mode 100644 index 0000000..b0e6ae6 Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03547.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03549.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03549.jpg new file mode 100644 index 0000000..3222011 Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03549.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03551.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03551.jpg new file mode 100644 index 0000000..852a226 Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03551.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03554.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03554.jpg new file mode 100644 index 0000000..03e0544 Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03554.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03559.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03559.jpg new file mode 100644 index 0000000..af1cd1c Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03559.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03561.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03561.jpg new file mode 100644 index 0000000..904a3e6 Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03561.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03563.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03563.jpg new file mode 100644 index 0000000..304fadf Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03563.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03570.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03570.jpg new file mode 100644 index 0000000..bbc3918 Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03570.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03572.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03572.jpg new file mode 100644 index 0000000..4365776 Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03572.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03586.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03586.jpg new file mode 100644 index 0000000..346125f Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03586.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03592.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03592.jpg new file mode 100644 index 0000000..0ed971c Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03592.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03598.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03598.jpg new file mode 100644 index 0000000..1ac9104 Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03598.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03602.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03602.jpg new file mode 100644 index 0000000..e043dea Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03602.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03610.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03610.jpg new file mode 100644 index 0000000..c66ffec Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03610.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03612.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03612.jpg new file mode 100644 index 0000000..34e01a3 Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03612.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03615.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03615.jpg new file mode 100644 index 0000000..8901dc6 Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03615.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03623.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03623.jpg new file mode 100644 index 0000000..864df52 Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03623.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03631.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03631.jpg new file mode 100644 index 0000000..8102962 Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03631.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03635.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03635.jpg new file mode 100644 index 0000000..d296075 Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03635.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03645.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03645.jpg new file mode 100644 index 0000000..8b4df73 Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03645.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03647.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03647.jpg new file mode 100644 index 0000000..566da33 Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03647.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03650.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03650.jpg new file mode 100644 index 0000000..495e301 Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03650.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03651.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03651.jpg new file mode 100644 index 0000000..d091ea0 Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03651.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03653.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03653.jpg new file mode 100644 index 0000000..5f1324b Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03653.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03657.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03657.jpg new file mode 100644 index 0000000..5499d8d Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03657.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03664.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03664.jpg new file mode 100644 index 0000000..224cf3b Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03664.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03670.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03670.jpg new file mode 100644 index 0000000..58343c3 Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03670.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03674.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03674.jpg new file mode 100644 index 0000000..4f9edc2 Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03674.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03675.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03675.jpg new file mode 100644 index 0000000..562adf5 Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03675.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03677.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03677.jpg new file mode 100644 index 0000000..63fd5bc Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03677.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03679.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03679.jpg new file mode 100644 index 0000000..6bf431e Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03679.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03682.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03682.jpg new file mode 100644 index 0000000..505b03c Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03682.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03688.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03688.jpg new file mode 100644 index 0000000..e00bbc1 Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03688.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03692.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03692.jpg new file mode 100644 index 0000000..1fe0891 Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03692.jpg differ diff --git a/static/img/2020/06/kaserne-vogelsang/DSC03693.jpg b/static/img/2020/06/kaserne-vogelsang/DSC03693.jpg new file mode 100644 index 0000000..7129817 Binary files /dev/null and b/static/img/2020/06/kaserne-vogelsang/DSC03693.jpg differ diff --git a/static/img/2020/07/koenigin-elisabeth-hospital/DSC03963.jpg b/static/img/2020/07/koenigin-elisabeth-hospital/DSC03963.jpg new file mode 100644 index 0000000..8799662 Binary files /dev/null and b/static/img/2020/07/koenigin-elisabeth-hospital/DSC03963.jpg differ diff --git a/static/img/2020/07/koenigin-elisabeth-hospital/DSC03964.jpg b/static/img/2020/07/koenigin-elisabeth-hospital/DSC03964.jpg new file mode 100644 index 0000000..8efcdf9 Binary files /dev/null and b/static/img/2020/07/koenigin-elisabeth-hospital/DSC03964.jpg differ diff --git a/static/img/2020/07/koenigin-elisabeth-hospital/DSC03971.jpg b/static/img/2020/07/koenigin-elisabeth-hospital/DSC03971.jpg new file mode 100644 index 0000000..72d5031 Binary files /dev/null and b/static/img/2020/07/koenigin-elisabeth-hospital/DSC03971.jpg differ diff --git a/static/img/2020/07/koenigin-elisabeth-hospital/DSC03973.jpg b/static/img/2020/07/koenigin-elisabeth-hospital/DSC03973.jpg new file mode 100644 index 0000000..d4be2d2 Binary files /dev/null and b/static/img/2020/07/koenigin-elisabeth-hospital/DSC03973.jpg differ diff --git a/static/img/2020/07/koenigin-elisabeth-hospital/DSC03976.jpg b/static/img/2020/07/koenigin-elisabeth-hospital/DSC03976.jpg new file mode 100644 index 0000000..285e2f1 Binary files /dev/null and b/static/img/2020/07/koenigin-elisabeth-hospital/DSC03976.jpg differ diff --git a/static/img/2020/07/koenigin-elisabeth-hospital/DSC03977.jpg b/static/img/2020/07/koenigin-elisabeth-hospital/DSC03977.jpg new file mode 100644 index 0000000..6ef7ae6 Binary files /dev/null and b/static/img/2020/07/koenigin-elisabeth-hospital/DSC03977.jpg differ diff --git a/static/img/2020/07/koenigin-elisabeth-hospital/DSC03982.jpg b/static/img/2020/07/koenigin-elisabeth-hospital/DSC03982.jpg new file mode 100644 index 0000000..dd0a442 Binary files /dev/null and b/static/img/2020/07/koenigin-elisabeth-hospital/DSC03982.jpg differ diff --git a/static/img/2020/07/koenigin-elisabeth-hospital/DSC03985.jpg b/static/img/2020/07/koenigin-elisabeth-hospital/DSC03985.jpg new file mode 100644 index 0000000..c8ee67b Binary files /dev/null and b/static/img/2020/07/koenigin-elisabeth-hospital/DSC03985.jpg differ diff --git a/static/img/2020/07/koenigin-elisabeth-hospital/DSC03990.jpg b/static/img/2020/07/koenigin-elisabeth-hospital/DSC03990.jpg new file mode 100644 index 0000000..d298bb7 Binary files /dev/null and b/static/img/2020/07/koenigin-elisabeth-hospital/DSC03990.jpg differ diff --git a/static/img/2020/07/koenigin-elisabeth-hospital/DSC03991.jpg b/static/img/2020/07/koenigin-elisabeth-hospital/DSC03991.jpg new file mode 100644 index 0000000..392dd14 Binary files /dev/null and b/static/img/2020/07/koenigin-elisabeth-hospital/DSC03991.jpg differ diff --git a/static/img/2020/07/koenigin-elisabeth-hospital/DSC03994.jpg b/static/img/2020/07/koenigin-elisabeth-hospital/DSC03994.jpg new file mode 100644 index 0000000..763cce0 Binary files /dev/null and b/static/img/2020/07/koenigin-elisabeth-hospital/DSC03994.jpg differ diff --git a/static/img/2020/07/koenigin-elisabeth-hospital/DSC03998.jpg b/static/img/2020/07/koenigin-elisabeth-hospital/DSC03998.jpg new file mode 100644 index 0000000..dcde00a Binary files /dev/null and b/static/img/2020/07/koenigin-elisabeth-hospital/DSC03998.jpg differ diff --git a/static/img/2020/07/koenigin-elisabeth-hospital/DSC04000.jpg b/static/img/2020/07/koenigin-elisabeth-hospital/DSC04000.jpg new file mode 100644 index 0000000..1420abf Binary files /dev/null and b/static/img/2020/07/koenigin-elisabeth-hospital/DSC04000.jpg differ diff --git a/static/img/2020/07/meseberg/DSC03705.jpg b/static/img/2020/07/meseberg/DSC03705.jpg new file mode 100644 index 0000000..12d3d22 Binary files /dev/null and b/static/img/2020/07/meseberg/DSC03705.jpg differ diff --git a/static/img/2020/07/meseberg/DSC03707.jpg b/static/img/2020/07/meseberg/DSC03707.jpg new file mode 100644 index 0000000..1a28eb8 Binary files /dev/null and b/static/img/2020/07/meseberg/DSC03707.jpg differ diff --git a/static/img/2020/07/meseberg/DSC03710.jpg b/static/img/2020/07/meseberg/DSC03710.jpg new file mode 100644 index 0000000..69812e3 Binary files /dev/null and b/static/img/2020/07/meseberg/DSC03710.jpg differ diff --git a/static/img/2020/07/meseberg/DSC03714.jpg b/static/img/2020/07/meseberg/DSC03714.jpg new file mode 100644 index 0000000..c168bae Binary files /dev/null and b/static/img/2020/07/meseberg/DSC03714.jpg differ diff --git a/static/img/2020/07/meseberg/DSC03718.jpg b/static/img/2020/07/meseberg/DSC03718.jpg new file mode 100644 index 0000000..8ad1301 Binary files /dev/null and b/static/img/2020/07/meseberg/DSC03718.jpg differ diff --git a/static/img/2020/07/meseberg/DSC03720.jpg b/static/img/2020/07/meseberg/DSC03720.jpg new file mode 100644 index 0000000..a684513 Binary files /dev/null and b/static/img/2020/07/meseberg/DSC03720.jpg differ diff --git a/static/img/2020/07/meseberg/DSC03736.jpg b/static/img/2020/07/meseberg/DSC03736.jpg new file mode 100644 index 0000000..7d79715 Binary files /dev/null and b/static/img/2020/07/meseberg/DSC03736.jpg differ diff --git a/static/img/2020/07/meseberg/DSC03742.jpg b/static/img/2020/07/meseberg/DSC03742.jpg new file mode 100644 index 0000000..e7c9a7a Binary files /dev/null and b/static/img/2020/07/meseberg/DSC03742.jpg differ diff --git a/static/img/2020/07/meseberg/DSC03781.jpg b/static/img/2020/07/meseberg/DSC03781.jpg new file mode 100644 index 0000000..bf24097 Binary files /dev/null and b/static/img/2020/07/meseberg/DSC03781.jpg differ diff --git a/static/img/2020/07/natur/DSC03370.jpg b/static/img/2020/07/natur/DSC03370.jpg new file mode 100644 index 0000000..ae1a1c6 Binary files /dev/null and b/static/img/2020/07/natur/DSC03370.jpg differ diff --git a/static/img/2020/07/natur/DSC03387.jpg b/static/img/2020/07/natur/DSC03387.jpg new file mode 100644 index 0000000..b184d66 Binary files /dev/null and b/static/img/2020/07/natur/DSC03387.jpg differ diff --git a/static/img/2020/07/natur/DSC03393.jpg b/static/img/2020/07/natur/DSC03393.jpg new file mode 100644 index 0000000..a53a93d Binary files /dev/null and b/static/img/2020/07/natur/DSC03393.jpg differ diff --git a/static/img/2020/07/natur/DSC03405.jpg b/static/img/2020/07/natur/DSC03405.jpg new file mode 100644 index 0000000..fa1d6bb Binary files /dev/null and b/static/img/2020/07/natur/DSC03405.jpg differ diff --git a/static/img/2020/07/natur/DSC03411.jpg b/static/img/2020/07/natur/DSC03411.jpg new file mode 100644 index 0000000..541bc06 Binary files /dev/null and b/static/img/2020/07/natur/DSC03411.jpg differ diff --git a/static/img/2020/07/natur/DSC03416.jpg b/static/img/2020/07/natur/DSC03416.jpg new file mode 100644 index 0000000..9124fb9 Binary files /dev/null and b/static/img/2020/07/natur/DSC03416.jpg differ diff --git a/static/img/2020/07/natur/DSC03417.jpg b/static/img/2020/07/natur/DSC03417.jpg new file mode 100644 index 0000000..e773140 Binary files /dev/null and b/static/img/2020/07/natur/DSC03417.jpg differ diff --git a/static/img/2020/07/natur/DSC03423.jpg b/static/img/2020/07/natur/DSC03423.jpg new file mode 100644 index 0000000..6dd53bf Binary files /dev/null and b/static/img/2020/07/natur/DSC03423.jpg differ diff --git a/static/img/2020/07/natur/DSC03451.jpg b/static/img/2020/07/natur/DSC03451.jpg new file mode 100644 index 0000000..7aa7f01 Binary files /dev/null and b/static/img/2020/07/natur/DSC03451.jpg differ diff --git a/static/img/2020/07/natur/DSC03452.jpg b/static/img/2020/07/natur/DSC03452.jpg new file mode 100644 index 0000000..5aa2306 Binary files /dev/null and b/static/img/2020/07/natur/DSC03452.jpg differ diff --git a/static/img/2020/07/natur/DSC03455.jpg b/static/img/2020/07/natur/DSC03455.jpg new file mode 100644 index 0000000..201355e Binary files /dev/null and b/static/img/2020/07/natur/DSC03455.jpg differ diff --git a/static/img/2020/07/natur/DSC03457.jpg b/static/img/2020/07/natur/DSC03457.jpg new file mode 100644 index 0000000..632329f Binary files /dev/null and b/static/img/2020/07/natur/DSC03457.jpg differ diff --git a/static/img/2020/07/natur/DSC03461.jpg b/static/img/2020/07/natur/DSC03461.jpg new file mode 100644 index 0000000..5e7ef9a Binary files /dev/null and b/static/img/2020/07/natur/DSC03461.jpg differ diff --git a/static/img/2020/07/natur/DSC03476.jpg b/static/img/2020/07/natur/DSC03476.jpg new file mode 100644 index 0000000..b7d0a22 Binary files /dev/null and b/static/img/2020/07/natur/DSC03476.jpg differ diff --git a/static/img/2020/07/natur/DSC03483.jpg b/static/img/2020/07/natur/DSC03483.jpg new file mode 100644 index 0000000..a54837d Binary files /dev/null and b/static/img/2020/07/natur/DSC03483.jpg differ diff --git a/static/img/2020/07/natur/DSC03486.jpg b/static/img/2020/07/natur/DSC03486.jpg new file mode 100644 index 0000000..ca8c574 Binary files /dev/null and b/static/img/2020/07/natur/DSC03486.jpg differ diff --git a/static/img/2020/07/natur/DSC03501.jpg b/static/img/2020/07/natur/DSC03501.jpg new file mode 100644 index 0000000..9f7a76f Binary files /dev/null and b/static/img/2020/07/natur/DSC03501.jpg differ diff --git a/static/img/2020/07/natur/DSC03508.jpg b/static/img/2020/07/natur/DSC03508.jpg new file mode 100644 index 0000000..8d54686 Binary files /dev/null and b/static/img/2020/07/natur/DSC03508.jpg differ diff --git a/static/img/2020/07/natur/DSC03825.jpg b/static/img/2020/07/natur/DSC03825.jpg new file mode 100644 index 0000000..4ec3cda Binary files /dev/null and b/static/img/2020/07/natur/DSC03825.jpg differ diff --git a/static/img/2020/07/natur/DSC03829.jpg b/static/img/2020/07/natur/DSC03829.jpg new file mode 100644 index 0000000..bcb90bd Binary files /dev/null and b/static/img/2020/07/natur/DSC03829.jpg differ diff --git a/static/img/2020/07/natur/DSC03831.jpg b/static/img/2020/07/natur/DSC03831.jpg new file mode 100644 index 0000000..6753a2d Binary files /dev/null and b/static/img/2020/07/natur/DSC03831.jpg differ diff --git a/static/img/2020/07/natur/DSC03838.jpg b/static/img/2020/07/natur/DSC03838.jpg new file mode 100644 index 0000000..a7fc499 Binary files /dev/null and b/static/img/2020/07/natur/DSC03838.jpg differ diff --git a/static/img/2020/07/sterne/DSC03784.jpg b/static/img/2020/07/sterne/DSC03784.jpg new file mode 100644 index 0000000..7656972 Binary files /dev/null and b/static/img/2020/07/sterne/DSC03784.jpg differ diff --git a/static/img/2020/07/sterne/DSC03787.jpg b/static/img/2020/07/sterne/DSC03787.jpg new file mode 100644 index 0000000..9a8314d Binary files /dev/null and b/static/img/2020/07/sterne/DSC03787.jpg differ diff --git a/static/img/2020/07/sterne/DSC03802.jpg b/static/img/2020/07/sterne/DSC03802.jpg new file mode 100644 index 0000000..2dd82d7 Binary files /dev/null and b/static/img/2020/07/sterne/DSC03802.jpg differ diff --git a/static/img/2020/07/sterne/DSC03810.jpg b/static/img/2020/07/sterne/DSC03810.jpg new file mode 100644 index 0000000..aba3784 Binary files /dev/null and b/static/img/2020/07/sterne/DSC03810.jpg differ diff --git a/static/img/2020/07/sterne/DSC03817.jpg b/static/img/2020/07/sterne/DSC03817.jpg new file mode 100644 index 0000000..4a57b75 Binary files /dev/null and b/static/img/2020/07/sterne/DSC03817.jpg differ diff --git a/static/img/2020/08/birkenwerder/DSC04866.jpg b/static/img/2020/08/birkenwerder/DSC04866.jpg new file mode 100644 index 0000000..457484a Binary files /dev/null and b/static/img/2020/08/birkenwerder/DSC04866.jpg differ diff --git a/static/img/2020/08/birkenwerder/DSC04868.jpg b/static/img/2020/08/birkenwerder/DSC04868.jpg new file mode 100644 index 0000000..ca36097 Binary files /dev/null and b/static/img/2020/08/birkenwerder/DSC04868.jpg differ diff --git a/static/img/2020/08/birkenwerder/DSC04870.jpg b/static/img/2020/08/birkenwerder/DSC04870.jpg new file mode 100644 index 0000000..703cc5e Binary files /dev/null and b/static/img/2020/08/birkenwerder/DSC04870.jpg differ diff --git a/static/img/2020/08/birkenwerder/DSC04873.jpg b/static/img/2020/08/birkenwerder/DSC04873.jpg new file mode 100644 index 0000000..baa69b8 Binary files /dev/null and b/static/img/2020/08/birkenwerder/DSC04873.jpg differ diff --git a/static/img/2020/08/birkenwerder/DSC04876.jpg b/static/img/2020/08/birkenwerder/DSC04876.jpg new file mode 100644 index 0000000..beffdc5 Binary files /dev/null and b/static/img/2020/08/birkenwerder/DSC04876.jpg differ diff --git a/static/img/2020/08/birkenwerder/DSC04878.jpg b/static/img/2020/08/birkenwerder/DSC04878.jpg new file mode 100644 index 0000000..66d593e Binary files /dev/null and b/static/img/2020/08/birkenwerder/DSC04878.jpg differ diff --git a/static/img/2020/08/birkenwerder/DSC04879.jpg b/static/img/2020/08/birkenwerder/DSC04879.jpg new file mode 100644 index 0000000..29724a3 Binary files /dev/null and b/static/img/2020/08/birkenwerder/DSC04879.jpg differ diff --git a/static/img/2020/08/birkenwerder/DSC04881.jpg b/static/img/2020/08/birkenwerder/DSC04881.jpg new file mode 100644 index 0000000..185cba2 Binary files /dev/null and b/static/img/2020/08/birkenwerder/DSC04881.jpg differ diff --git a/static/img/2020/08/birkenwerder/DSC04883.jpg b/static/img/2020/08/birkenwerder/DSC04883.jpg new file mode 100644 index 0000000..18a0c1c Binary files /dev/null and b/static/img/2020/08/birkenwerder/DSC04883.jpg differ diff --git a/static/img/2020/08/birkenwerder/DSC04884.jpg b/static/img/2020/08/birkenwerder/DSC04884.jpg new file mode 100644 index 0000000..9b735b7 Binary files /dev/null and b/static/img/2020/08/birkenwerder/DSC04884.jpg differ diff --git a/static/img/2020/08/birkenwerder/DSC04885.jpg b/static/img/2020/08/birkenwerder/DSC04885.jpg new file mode 100644 index 0000000..f31544f Binary files /dev/null and b/static/img/2020/08/birkenwerder/DSC04885.jpg differ diff --git a/static/img/2020/08/birkenwerder/DSC04886.jpg b/static/img/2020/08/birkenwerder/DSC04886.jpg new file mode 100644 index 0000000..d220958 Binary files /dev/null and b/static/img/2020/08/birkenwerder/DSC04886.jpg differ diff --git a/static/img/2020/08/birkenwerder/DSC04893.jpg b/static/img/2020/08/birkenwerder/DSC04893.jpg new file mode 100644 index 0000000..3f2dbc6 Binary files /dev/null and b/static/img/2020/08/birkenwerder/DSC04893.jpg differ diff --git a/static/img/2020/08/birkenwerder/DSC04895.jpg b/static/img/2020/08/birkenwerder/DSC04895.jpg new file mode 100644 index 0000000..481ab45 Binary files /dev/null and b/static/img/2020/08/birkenwerder/DSC04895.jpg differ diff --git a/static/img/2020/08/birkenwerder/DSC04896.jpg b/static/img/2020/08/birkenwerder/DSC04896.jpg new file mode 100644 index 0000000..459e572 Binary files /dev/null and b/static/img/2020/08/birkenwerder/DSC04896.jpg differ diff --git a/static/img/2020/08/birkenwerder/DSC04898.jpg b/static/img/2020/08/birkenwerder/DSC04898.jpg new file mode 100644 index 0000000..4c9c5c1 Binary files /dev/null and b/static/img/2020/08/birkenwerder/DSC04898.jpg differ diff --git a/static/img/2020/08/birkenwerder/DSC04904.jpg b/static/img/2020/08/birkenwerder/DSC04904.jpg new file mode 100644 index 0000000..ea4e6aa Binary files /dev/null and b/static/img/2020/08/birkenwerder/DSC04904.jpg differ diff --git a/static/img/2020/08/flugplatz-rangsdorf/DSC04190.jpg b/static/img/2020/08/flugplatz-rangsdorf/DSC04190.jpg new file mode 100644 index 0000000..a579b0b Binary files /dev/null and b/static/img/2020/08/flugplatz-rangsdorf/DSC04190.jpg differ diff --git a/static/img/2020/08/flugplatz-rangsdorf/DSC04191.jpg b/static/img/2020/08/flugplatz-rangsdorf/DSC04191.jpg new file mode 100644 index 0000000..568db69 Binary files /dev/null and b/static/img/2020/08/flugplatz-rangsdorf/DSC04191.jpg differ diff --git a/static/img/2020/08/flugplatz-rangsdorf/DSC04193.jpg b/static/img/2020/08/flugplatz-rangsdorf/DSC04193.jpg new file mode 100644 index 0000000..bf20047 Binary files /dev/null and b/static/img/2020/08/flugplatz-rangsdorf/DSC04193.jpg differ diff --git a/static/img/2020/08/flugplatz-rangsdorf/DSC04196.jpg b/static/img/2020/08/flugplatz-rangsdorf/DSC04196.jpg new file mode 100644 index 0000000..57e655a Binary files /dev/null and b/static/img/2020/08/flugplatz-rangsdorf/DSC04196.jpg differ diff --git a/static/img/2020/08/flugplatz-rangsdorf/DSC04197.jpg b/static/img/2020/08/flugplatz-rangsdorf/DSC04197.jpg new file mode 100644 index 0000000..d45521f Binary files /dev/null and b/static/img/2020/08/flugplatz-rangsdorf/DSC04197.jpg differ diff --git a/static/img/2020/08/flugplatz-rangsdorf/DSC04202.jpg b/static/img/2020/08/flugplatz-rangsdorf/DSC04202.jpg new file mode 100644 index 0000000..8e9cc1e Binary files /dev/null and b/static/img/2020/08/flugplatz-rangsdorf/DSC04202.jpg differ diff --git a/static/img/2020/08/flugplatz-rangsdorf/DSC04204.jpg b/static/img/2020/08/flugplatz-rangsdorf/DSC04204.jpg new file mode 100644 index 0000000..57bbc2e Binary files /dev/null and b/static/img/2020/08/flugplatz-rangsdorf/DSC04204.jpg differ diff --git a/static/img/2020/08/flugplatz-rangsdorf/DSC04206.jpg b/static/img/2020/08/flugplatz-rangsdorf/DSC04206.jpg new file mode 100644 index 0000000..7b10f90 Binary files /dev/null and b/static/img/2020/08/flugplatz-rangsdorf/DSC04206.jpg differ diff --git a/static/img/2020/08/flugplatz-rangsdorf/DSC04207.jpg b/static/img/2020/08/flugplatz-rangsdorf/DSC04207.jpg new file mode 100644 index 0000000..9c4d354 Binary files /dev/null and b/static/img/2020/08/flugplatz-rangsdorf/DSC04207.jpg differ diff --git a/static/img/2020/08/flugplatz-rangsdorf/DSC04209.jpg b/static/img/2020/08/flugplatz-rangsdorf/DSC04209.jpg new file mode 100644 index 0000000..771e9da Binary files /dev/null and b/static/img/2020/08/flugplatz-rangsdorf/DSC04209.jpg differ diff --git a/static/img/2020/08/flugplatz-rangsdorf/DSC04211.jpg b/static/img/2020/08/flugplatz-rangsdorf/DSC04211.jpg new file mode 100644 index 0000000..cb5bc06 Binary files /dev/null and b/static/img/2020/08/flugplatz-rangsdorf/DSC04211.jpg differ diff --git a/static/img/2020/08/flugplatz-rangsdorf/DSC04217.jpg b/static/img/2020/08/flugplatz-rangsdorf/DSC04217.jpg new file mode 100644 index 0000000..82bbdf2 Binary files /dev/null and b/static/img/2020/08/flugplatz-rangsdorf/DSC04217.jpg differ diff --git a/static/img/2020/08/flugplatz-rangsdorf/DSC04220.jpg b/static/img/2020/08/flugplatz-rangsdorf/DSC04220.jpg new file mode 100644 index 0000000..88b135d Binary files /dev/null and b/static/img/2020/08/flugplatz-rangsdorf/DSC04220.jpg differ diff --git a/static/img/2020/08/flugplatz-rangsdorf/DSC04221.jpg b/static/img/2020/08/flugplatz-rangsdorf/DSC04221.jpg new file mode 100644 index 0000000..e21e238 Binary files /dev/null and b/static/img/2020/08/flugplatz-rangsdorf/DSC04221.jpg differ diff --git a/static/img/2020/08/flugplatz-rangsdorf/DSC04224.jpg b/static/img/2020/08/flugplatz-rangsdorf/DSC04224.jpg new file mode 100644 index 0000000..c5333f7 Binary files /dev/null and b/static/img/2020/08/flugplatz-rangsdorf/DSC04224.jpg differ diff --git a/static/img/2020/08/flugplatz-rangsdorf/DSC04225.jpg b/static/img/2020/08/flugplatz-rangsdorf/DSC04225.jpg new file mode 100644 index 0000000..29a2774 Binary files /dev/null and b/static/img/2020/08/flugplatz-rangsdorf/DSC04225.jpg differ diff --git a/static/img/2020/08/flugplatz-rangsdorf/DSC04228.jpg b/static/img/2020/08/flugplatz-rangsdorf/DSC04228.jpg new file mode 100644 index 0000000..b2e601a Binary files /dev/null and b/static/img/2020/08/flugplatz-rangsdorf/DSC04228.jpg differ diff --git a/static/img/2020/08/flugplatz-rangsdorf/DSC04231.jpg b/static/img/2020/08/flugplatz-rangsdorf/DSC04231.jpg new file mode 100644 index 0000000..a4eb0df Binary files /dev/null and b/static/img/2020/08/flugplatz-rangsdorf/DSC04231.jpg differ diff --git a/static/img/2020/08/flugplatz-rangsdorf/DSC04232.jpg b/static/img/2020/08/flugplatz-rangsdorf/DSC04232.jpg new file mode 100644 index 0000000..297ccbb Binary files /dev/null and b/static/img/2020/08/flugplatz-rangsdorf/DSC04232.jpg differ diff --git a/static/img/2020/08/flugplatz-rangsdorf/DSC04234.jpg b/static/img/2020/08/flugplatz-rangsdorf/DSC04234.jpg new file mode 100644 index 0000000..a20619a Binary files /dev/null and b/static/img/2020/08/flugplatz-rangsdorf/DSC04234.jpg differ diff --git a/static/img/2020/08/flugplatz-rangsdorf/DSC04238.jpg b/static/img/2020/08/flugplatz-rangsdorf/DSC04238.jpg new file mode 100644 index 0000000..be10382 Binary files /dev/null and b/static/img/2020/08/flugplatz-rangsdorf/DSC04238.jpg differ diff --git a/static/img/2020/08/flugplatz-rangsdorf/DSC04239.jpg b/static/img/2020/08/flugplatz-rangsdorf/DSC04239.jpg new file mode 100644 index 0000000..2429790 Binary files /dev/null and b/static/img/2020/08/flugplatz-rangsdorf/DSC04239.jpg differ diff --git a/static/img/2020/08/flugplatz-rangsdorf/DSC04246.jpg b/static/img/2020/08/flugplatz-rangsdorf/DSC04246.jpg new file mode 100644 index 0000000..06d9f7b Binary files /dev/null and b/static/img/2020/08/flugplatz-rangsdorf/DSC04246.jpg differ diff --git a/static/img/2020/08/flugplatz-rangsdorf/DSC04247.jpg b/static/img/2020/08/flugplatz-rangsdorf/DSC04247.jpg new file mode 100644 index 0000000..8c7dc2b Binary files /dev/null and b/static/img/2020/08/flugplatz-rangsdorf/DSC04247.jpg differ diff --git a/static/img/2020/08/flugplatz-rangsdorf/DSC04248.jpg b/static/img/2020/08/flugplatz-rangsdorf/DSC04248.jpg new file mode 100644 index 0000000..40ace44 Binary files /dev/null and b/static/img/2020/08/flugplatz-rangsdorf/DSC04248.jpg differ diff --git a/static/img/2020/08/flugplatz-rangsdorf/DSC04251.jpg b/static/img/2020/08/flugplatz-rangsdorf/DSC04251.jpg new file mode 100644 index 0000000..88f5cc8 Binary files /dev/null and b/static/img/2020/08/flugplatz-rangsdorf/DSC04251.jpg differ diff --git a/static/img/2020/08/flugplatz-rangsdorf/DSC04259.jpg b/static/img/2020/08/flugplatz-rangsdorf/DSC04259.jpg new file mode 100644 index 0000000..38ac99e Binary files /dev/null and b/static/img/2020/08/flugplatz-rangsdorf/DSC04259.jpg differ diff --git a/static/img/2020/08/flugplatz-rangsdorf/DSC04262.jpg b/static/img/2020/08/flugplatz-rangsdorf/DSC04262.jpg new file mode 100644 index 0000000..f5892c0 Binary files /dev/null and b/static/img/2020/08/flugplatz-rangsdorf/DSC04262.jpg differ diff --git a/static/img/2020/08/flugplatz-rangsdorf/DSC04267.jpg b/static/img/2020/08/flugplatz-rangsdorf/DSC04267.jpg new file mode 100644 index 0000000..d53c157 Binary files /dev/null and b/static/img/2020/08/flugplatz-rangsdorf/DSC04267.jpg differ diff --git a/static/img/2020/08/flugplatz-rangsdorf/DSC04292.jpg b/static/img/2020/08/flugplatz-rangsdorf/DSC04292.jpg new file mode 100644 index 0000000..f8c829e Binary files /dev/null and b/static/img/2020/08/flugplatz-rangsdorf/DSC04292.jpg differ diff --git a/static/img/2020/09/fuerstenberg/DSC05404.jpg b/static/img/2020/09/fuerstenberg/DSC05404.jpg new file mode 100644 index 0000000..43a1ecc Binary files /dev/null and b/static/img/2020/09/fuerstenberg/DSC05404.jpg differ diff --git a/static/img/2020/09/fuerstenberg/DSC05595.jpg b/static/img/2020/09/fuerstenberg/DSC05595.jpg new file mode 100644 index 0000000..22eca3b Binary files /dev/null and b/static/img/2020/09/fuerstenberg/DSC05595.jpg differ diff --git a/static/img/2020/09/fuerstenberg/DSC05605.jpg b/static/img/2020/09/fuerstenberg/DSC05605.jpg new file mode 100644 index 0000000..780564c Binary files /dev/null and b/static/img/2020/09/fuerstenberg/DSC05605.jpg differ diff --git a/static/img/2020/09/fuerstenberg/DSC05807.jpg b/static/img/2020/09/fuerstenberg/DSC05807.jpg new file mode 100644 index 0000000..7c05502 Binary files /dev/null and b/static/img/2020/09/fuerstenberg/DSC05807.jpg differ diff --git a/static/img/2020/09/fuerstenberg/DSC05868.jpg b/static/img/2020/09/fuerstenberg/DSC05868.jpg new file mode 100644 index 0000000..55a382a Binary files /dev/null and b/static/img/2020/09/fuerstenberg/DSC05868.jpg differ diff --git a/static/img/2020/09/fuerstenberg/DSC05936.jpg b/static/img/2020/09/fuerstenberg/DSC05936.jpg new file mode 100644 index 0000000..93533e7 Binary files /dev/null and b/static/img/2020/09/fuerstenberg/DSC05936.jpg differ diff --git a/static/img/2020/09/fuerstenberg/DSC05953.jpg b/static/img/2020/09/fuerstenberg/DSC05953.jpg new file mode 100644 index 0000000..fa81599 Binary files /dev/null and b/static/img/2020/09/fuerstenberg/DSC05953.jpg differ diff --git a/static/img/2020/09/fuerstenberg/DSC05986.jpg b/static/img/2020/09/fuerstenberg/DSC05986.jpg new file mode 100644 index 0000000..523664d Binary files /dev/null and b/static/img/2020/09/fuerstenberg/DSC05986.jpg differ diff --git a/static/img/2020/09/fuerstenberg/DSC05990.jpg b/static/img/2020/09/fuerstenberg/DSC05990.jpg new file mode 100644 index 0000000..82a1639 Binary files /dev/null and b/static/img/2020/09/fuerstenberg/DSC05990.jpg differ diff --git a/static/img/2020/09/fuerstenberg/DSC06008.jpg b/static/img/2020/09/fuerstenberg/DSC06008.jpg new file mode 100644 index 0000000..eb25e3b Binary files /dev/null and b/static/img/2020/09/fuerstenberg/DSC06008.jpg differ diff --git a/static/img/2020/09/fuerstenberg/DSC06042.jpg b/static/img/2020/09/fuerstenberg/DSC06042.jpg new file mode 100644 index 0000000..b71952f Binary files /dev/null and b/static/img/2020/09/fuerstenberg/DSC06042.jpg differ diff --git a/static/img/2020/09/fuerstenberg/DSC06047.jpg b/static/img/2020/09/fuerstenberg/DSC06047.jpg new file mode 100644 index 0000000..3263ced Binary files /dev/null and b/static/img/2020/09/fuerstenberg/DSC06047.jpg differ diff --git a/static/img/2020/09/haus-der-offiziere/DSC05613.jpg b/static/img/2020/09/haus-der-offiziere/DSC05613.jpg new file mode 100644 index 0000000..f2c9a28 Binary files /dev/null and b/static/img/2020/09/haus-der-offiziere/DSC05613.jpg differ diff --git a/static/img/2020/09/haus-der-offiziere/DSC05619.jpg b/static/img/2020/09/haus-der-offiziere/DSC05619.jpg new file mode 100644 index 0000000..acff4c3 Binary files /dev/null and b/static/img/2020/09/haus-der-offiziere/DSC05619.jpg differ diff --git a/static/img/2020/09/haus-der-offiziere/DSC05620.jpg b/static/img/2020/09/haus-der-offiziere/DSC05620.jpg new file mode 100644 index 0000000..43d0952 Binary files /dev/null and b/static/img/2020/09/haus-der-offiziere/DSC05620.jpg differ diff --git a/static/img/2020/09/haus-der-offiziere/DSC05629.jpg b/static/img/2020/09/haus-der-offiziere/DSC05629.jpg new file mode 100644 index 0000000..54df509 Binary files /dev/null and b/static/img/2020/09/haus-der-offiziere/DSC05629.jpg differ diff --git a/static/img/2020/09/haus-der-offiziere/DSC05640.jpg b/static/img/2020/09/haus-der-offiziere/DSC05640.jpg new file mode 100644 index 0000000..ee21b28 Binary files /dev/null and b/static/img/2020/09/haus-der-offiziere/DSC05640.jpg differ diff --git a/static/img/2020/09/haus-der-offiziere/DSC05653.jpg b/static/img/2020/09/haus-der-offiziere/DSC05653.jpg new file mode 100644 index 0000000..30405bf Binary files /dev/null and b/static/img/2020/09/haus-der-offiziere/DSC05653.jpg differ diff --git a/static/img/2020/09/haus-der-offiziere/DSC05659.jpg b/static/img/2020/09/haus-der-offiziere/DSC05659.jpg new file mode 100644 index 0000000..3f790f7 Binary files /dev/null and b/static/img/2020/09/haus-der-offiziere/DSC05659.jpg differ diff --git a/static/img/2020/09/haus-der-offiziere/DSC05671.jpg b/static/img/2020/09/haus-der-offiziere/DSC05671.jpg new file mode 100644 index 0000000..27bded1 Binary files /dev/null and b/static/img/2020/09/haus-der-offiziere/DSC05671.jpg differ diff --git a/static/img/2020/09/haus-der-offiziere/DSC05677.jpg b/static/img/2020/09/haus-der-offiziere/DSC05677.jpg new file mode 100644 index 0000000..2072265 Binary files /dev/null and b/static/img/2020/09/haus-der-offiziere/DSC05677.jpg differ diff --git a/static/img/2020/09/haus-der-offiziere/DSC05704.jpg b/static/img/2020/09/haus-der-offiziere/DSC05704.jpg new file mode 100644 index 0000000..bbd7b68 Binary files /dev/null and b/static/img/2020/09/haus-der-offiziere/DSC05704.jpg differ diff --git a/static/img/2020/09/haus-der-offiziere/DSC05722.jpg b/static/img/2020/09/haus-der-offiziere/DSC05722.jpg new file mode 100644 index 0000000..b8a58e7 Binary files /dev/null and b/static/img/2020/09/haus-der-offiziere/DSC05722.jpg differ diff --git a/static/img/2020/09/haus-der-offiziere/DSC05750.jpg b/static/img/2020/09/haus-der-offiziere/DSC05750.jpg new file mode 100644 index 0000000..211d3dd Binary files /dev/null and b/static/img/2020/09/haus-der-offiziere/DSC05750.jpg differ diff --git a/static/img/2020/09/haus-der-offiziere/DSC05754.jpg b/static/img/2020/09/haus-der-offiziere/DSC05754.jpg new file mode 100644 index 0000000..ea99678 Binary files /dev/null and b/static/img/2020/09/haus-der-offiziere/DSC05754.jpg differ diff --git a/static/img/2020/09/haus-der-offiziere/DSC05766.jpg b/static/img/2020/09/haus-der-offiziere/DSC05766.jpg new file mode 100644 index 0000000..1e72b1a Binary files /dev/null and b/static/img/2020/09/haus-der-offiziere/DSC05766.jpg differ diff --git a/static/img/2020/09/haus-der-offiziere/DSC05772.jpg b/static/img/2020/09/haus-der-offiziere/DSC05772.jpg new file mode 100644 index 0000000..46db787 Binary files /dev/null and b/static/img/2020/09/haus-der-offiziere/DSC05772.jpg differ diff --git a/static/img/2020/09/haus-der-offiziere/DSC05778.jpg b/static/img/2020/09/haus-der-offiziere/DSC05778.jpg new file mode 100644 index 0000000..7590a50 Binary files /dev/null and b/static/img/2020/09/haus-der-offiziere/DSC05778.jpg differ diff --git a/static/img/2020/09/haus-der-offiziere/DSC05787.jpg b/static/img/2020/09/haus-der-offiziere/DSC05787.jpg new file mode 100644 index 0000000..f73e10b Binary files /dev/null and b/static/img/2020/09/haus-der-offiziere/DSC05787.jpg differ diff --git a/static/img/2020/09/kraftfuttermischwerk/DSC05409.jpg b/static/img/2020/09/kraftfuttermischwerk/DSC05409.jpg new file mode 100644 index 0000000..1a13795 Binary files /dev/null and b/static/img/2020/09/kraftfuttermischwerk/DSC05409.jpg differ diff --git a/static/img/2020/09/kraftfuttermischwerk/DSC05426.jpg b/static/img/2020/09/kraftfuttermischwerk/DSC05426.jpg new file mode 100644 index 0000000..1bcf283 Binary files /dev/null and b/static/img/2020/09/kraftfuttermischwerk/DSC05426.jpg differ diff --git a/static/img/2020/09/kraftfuttermischwerk/DSC05438.jpg b/static/img/2020/09/kraftfuttermischwerk/DSC05438.jpg new file mode 100644 index 0000000..55109ba Binary files /dev/null and b/static/img/2020/09/kraftfuttermischwerk/DSC05438.jpg differ diff --git a/static/img/2020/09/kraftfuttermischwerk/DSC05441.jpg b/static/img/2020/09/kraftfuttermischwerk/DSC05441.jpg new file mode 100644 index 0000000..1bd9e64 Binary files /dev/null and b/static/img/2020/09/kraftfuttermischwerk/DSC05441.jpg differ diff --git a/static/img/2020/09/kraftfuttermischwerk/DSC05451.jpg b/static/img/2020/09/kraftfuttermischwerk/DSC05451.jpg new file mode 100644 index 0000000..73a8f2a Binary files /dev/null and b/static/img/2020/09/kraftfuttermischwerk/DSC05451.jpg differ diff --git a/static/img/2020/09/kraftfuttermischwerk/DSC05464.jpg b/static/img/2020/09/kraftfuttermischwerk/DSC05464.jpg new file mode 100644 index 0000000..24211e9 Binary files /dev/null and b/static/img/2020/09/kraftfuttermischwerk/DSC05464.jpg differ diff --git a/static/img/2020/09/kraftfuttermischwerk/DSC05468.jpg b/static/img/2020/09/kraftfuttermischwerk/DSC05468.jpg new file mode 100644 index 0000000..f2ddc41 Binary files /dev/null and b/static/img/2020/09/kraftfuttermischwerk/DSC05468.jpg differ diff --git a/static/img/2020/09/kraftfuttermischwerk/DSC05473.jpg b/static/img/2020/09/kraftfuttermischwerk/DSC05473.jpg new file mode 100644 index 0000000..b3896d3 Binary files /dev/null and b/static/img/2020/09/kraftfuttermischwerk/DSC05473.jpg differ diff --git a/static/img/2020/09/kraftfuttermischwerk/DSC05497.jpg b/static/img/2020/09/kraftfuttermischwerk/DSC05497.jpg new file mode 100644 index 0000000..5329a73 Binary files /dev/null and b/static/img/2020/09/kraftfuttermischwerk/DSC05497.jpg differ diff --git a/static/img/2020/09/kraftfuttermischwerk/DSC05500.jpg b/static/img/2020/09/kraftfuttermischwerk/DSC05500.jpg new file mode 100644 index 0000000..c6eadb6 Binary files /dev/null and b/static/img/2020/09/kraftfuttermischwerk/DSC05500.jpg differ diff --git a/static/img/2020/09/kraftfuttermischwerk/DSC05518.jpg b/static/img/2020/09/kraftfuttermischwerk/DSC05518.jpg new file mode 100644 index 0000000..b8c4a52 Binary files /dev/null and b/static/img/2020/09/kraftfuttermischwerk/DSC05518.jpg differ diff --git a/static/img/2020/09/kraftfuttermischwerk/DSC05529.jpg b/static/img/2020/09/kraftfuttermischwerk/DSC05529.jpg new file mode 100644 index 0000000..6a403ab Binary files /dev/null and b/static/img/2020/09/kraftfuttermischwerk/DSC05529.jpg differ diff --git a/static/img/2020/09/kraftfuttermischwerk/DSC05530.jpg b/static/img/2020/09/kraftfuttermischwerk/DSC05530.jpg new file mode 100644 index 0000000..51983cc Binary files /dev/null and b/static/img/2020/09/kraftfuttermischwerk/DSC05530.jpg differ diff --git a/static/img/2020/09/kraftfuttermischwerk/DSC05535.jpg b/static/img/2020/09/kraftfuttermischwerk/DSC05535.jpg new file mode 100644 index 0000000..623885f Binary files /dev/null and b/static/img/2020/09/kraftfuttermischwerk/DSC05535.jpg differ diff --git a/static/img/2020/09/kraftfuttermischwerk/DSC05547.jpg b/static/img/2020/09/kraftfuttermischwerk/DSC05547.jpg new file mode 100644 index 0000000..991a48f Binary files /dev/null and b/static/img/2020/09/kraftfuttermischwerk/DSC05547.jpg differ diff --git a/static/img/2020/09/kraftfuttermischwerk/DSC05562.jpg b/static/img/2020/09/kraftfuttermischwerk/DSC05562.jpg new file mode 100644 index 0000000..9306194 Binary files /dev/null and b/static/img/2020/09/kraftfuttermischwerk/DSC05562.jpg differ diff --git a/static/img/2020/09/kraftfuttermischwerk/DSC05572.jpg b/static/img/2020/09/kraftfuttermischwerk/DSC05572.jpg new file mode 100644 index 0000000..5c9098e Binary files /dev/null and b/static/img/2020/09/kraftfuttermischwerk/DSC05572.jpg differ diff --git a/static/img/2020/10/gruenau/DSC06623.jpg b/static/img/2020/10/gruenau/DSC06623.jpg new file mode 100644 index 0000000..41592bb Binary files /dev/null and b/static/img/2020/10/gruenau/DSC06623.jpg differ diff --git a/static/img/2020/10/gruenau/DSC06633_01.jpg b/static/img/2020/10/gruenau/DSC06633_01.jpg new file mode 100644 index 0000000..19a421c Binary files /dev/null and b/static/img/2020/10/gruenau/DSC06633_01.jpg differ diff --git a/static/img/2020/10/gruenau/DSC06643.jpg b/static/img/2020/10/gruenau/DSC06643.jpg new file mode 100644 index 0000000..89f9955 Binary files /dev/null and b/static/img/2020/10/gruenau/DSC06643.jpg differ diff --git a/static/img/2020/10/gruenau/DSC06647.jpg b/static/img/2020/10/gruenau/DSC06647.jpg new file mode 100644 index 0000000..1f6587b Binary files /dev/null and b/static/img/2020/10/gruenau/DSC06647.jpg differ diff --git a/static/img/2020/10/gruenau/DSC06661.jpg b/static/img/2020/10/gruenau/DSC06661.jpg new file mode 100644 index 0000000..bb76f4c Binary files /dev/null and b/static/img/2020/10/gruenau/DSC06661.jpg differ diff --git a/static/img/2020/10/gruenau/DSC06673.jpg b/static/img/2020/10/gruenau/DSC06673.jpg new file mode 100644 index 0000000..b579fe0 Binary files /dev/null and b/static/img/2020/10/gruenau/DSC06673.jpg differ diff --git a/static/img/2020/10/gruenau/DSC06675.jpg b/static/img/2020/10/gruenau/DSC06675.jpg new file mode 100644 index 0000000..d01c00e Binary files /dev/null and b/static/img/2020/10/gruenau/DSC06675.jpg differ diff --git a/static/img/2020/10/gruenau/DSC06676.jpg b/static/img/2020/10/gruenau/DSC06676.jpg new file mode 100644 index 0000000..c2f86c7 Binary files /dev/null and b/static/img/2020/10/gruenau/DSC06676.jpg differ diff --git a/static/img/2020/10/gruenau/DSC06677.jpg b/static/img/2020/10/gruenau/DSC06677.jpg new file mode 100644 index 0000000..7ed6b4e Binary files /dev/null and b/static/img/2020/10/gruenau/DSC06677.jpg differ diff --git a/static/img/2020/10/gruenau/DSC06680_01.jpg b/static/img/2020/10/gruenau/DSC06680_01.jpg new file mode 100644 index 0000000..2d14154 Binary files /dev/null and b/static/img/2020/10/gruenau/DSC06680_01.jpg differ diff --git a/static/img/2020/10/gruenau/DSC06682_01.jpg b/static/img/2020/10/gruenau/DSC06682_01.jpg new file mode 100644 index 0000000..b90cc61 Binary files /dev/null and b/static/img/2020/10/gruenau/DSC06682_01.jpg differ diff --git a/static/img/2020/10/gruenau/DSC06694_01.jpg b/static/img/2020/10/gruenau/DSC06694_01.jpg new file mode 100644 index 0000000..e5846ac Binary files /dev/null and b/static/img/2020/10/gruenau/DSC06694_01.jpg differ diff --git a/static/img/2020/10/gruenau/DSC06711.jpg b/static/img/2020/10/gruenau/DSC06711.jpg new file mode 100644 index 0000000..bba247b Binary files /dev/null and b/static/img/2020/10/gruenau/DSC06711.jpg differ diff --git a/static/img/2020/10/gruenau/DSC06725.jpg b/static/img/2020/10/gruenau/DSC06725.jpg new file mode 100644 index 0000000..c9eb135 Binary files /dev/null and b/static/img/2020/10/gruenau/DSC06725.jpg differ diff --git a/static/img/2020/10/gruenau/DSC06730.jpg b/static/img/2020/10/gruenau/DSC06730.jpg new file mode 100644 index 0000000..9c58a2e Binary files /dev/null and b/static/img/2020/10/gruenau/DSC06730.jpg differ diff --git a/static/img/2020/10/hugo-shortcodes/test-html.png b/static/img/2020/10/hugo-shortcodes/test-html.png new file mode 100644 index 0000000..26da42c Binary files /dev/null and b/static/img/2020/10/hugo-shortcodes/test-html.png differ diff --git a/static/img/2020/10/ir-remote/plan.png b/static/img/2020/10/ir-remote/plan.png new file mode 100644 index 0000000..7ee05f8 Binary files /dev/null and b/static/img/2020/10/ir-remote/plan.png differ diff --git a/static/img/2020/10/ir-remote/result.jpg b/static/img/2020/10/ir-remote/result.jpg new file mode 100644 index 0000000..a4a605c Binary files /dev/null and b/static/img/2020/10/ir-remote/result.jpg differ diff --git a/static/img/2020/10/ir.png b/static/img/2020/10/ir.png new file mode 100644 index 0000000..d5df1c6 Binary files /dev/null and b/static/img/2020/10/ir.png differ diff --git a/static/img/general/de.png b/static/img/general/de.png new file mode 100644 index 0000000..64f9777 Binary files /dev/null and b/static/img/general/de.png differ diff --git a/static/img/general/en.jpg b/static/img/general/en.jpg new file mode 100644 index 0000000..5c534ea Binary files /dev/null and b/static/img/general/en.jpg differ diff --git a/static/img/general/en.png b/static/img/general/en.png new file mode 100644 index 0000000..624620b Binary files /dev/null and b/static/img/general/en.png differ diff --git a/static/img/general/gb.png b/static/img/general/gb.png new file mode 100644 index 0000000..ef31d2c Binary files /dev/null and b/static/img/general/gb.png differ diff --git a/static/img/general/img.png b/static/img/general/img.png new file mode 100644 index 0000000..df304f2 Binary files /dev/null and b/static/img/general/img.png differ diff --git a/static/js/jquery-3.5.1.min.js b/static/js/jquery-3.5.1.min.js new file mode 100644 index 0000000..b061403 --- /dev/null +++ b/static/js/jquery-3.5.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0'),intervalId:null},this.scrollBarOn=!1,this.checkWidthIntervalId=null,this.galleryWidth=t.width(),this.$gallery=t};r.prototype.getSuffix=function(t,i){var e,s;for(e=i .jg-caption");return 0===i.length?null:i},r.prototype.displayEntry=function(t,i,e,s,n,r){t.width(s),t.height(r),t.css("top",e),t.css("left",i);var o=this.imgFromEntry(t);if(null!==o){o.css("width",s),o.css("height",n),o.css("margin-left",-Math.round(s/2)),o.css("margin-top",-Math.round(n/2));var a=o.data("jg.src");if(a){a=this.newSrc(a,s,n,o[0]),o.one("error",function(){this.resetImgSrc(o)});var h=function(){o.attr("src",a)};"skipped"===t.data("jg.loaded")&&a?this.onImageEvent(a,function(){this.showImg(t,h),t.data("jg.loaded",!0)}.bind(this)):this.showImg(t,h)}}else this.showImg(t);this.displayEntryCaption(t)},r.prototype.displayEntryCaption=function(t){var i=this.imgFromEntry(t);if(null!==i&&this.settings.captions){var e=this.captionFromEntry(t);if(null===e){var s=i.attr("alt");this.isValidCaption(s)||(s=t.attr("title")),this.isValidCaption(s)&&(e=l('
'+s+"
"),t.append(e),t.data("jg.createdCaption",!0))}null!==e&&(this.settings.cssAnimation||e.stop().fadeTo(0,this.settings.captionSettings.nonVisibleOpacity),this.addCaptionEventsHandlers(t))}else this.removeCaptionEventsHandlers(t)},r.prototype.isValidCaption=function(t){return void 0!==t&&0this.settings.justifyThreshold;if(i||t&&"hide"===this.settings.lastRow&&!d){for(e=0;e img, > a > img").fadeTo(0,0));return-1}for(t&&!d&&"justify"!==this.settings.lastRow&&"hide"!==this.settings.lastRow&&(a=!1,0this.settings.justifyThreshold)),e=0;ethis.settings.refreshSensitivity&&(this.galleryWidth=t,this.rewind(),this.rememberGalleryHeight(),this.startImgAnalyzer(!0))}},this),this.settings.refreshTime)},r.prototype.isSpinnerActive=function(){return null!==this.spinner.intervalId},r.prototype.getSpinnerHeight=function(){return this.spinner.$el.innerHeight()},r.prototype.stopLoadingSpinnerAnimation=function(){clearInterval(this.spinner.intervalId),this.spinner.intervalId=null,this.setGalleryTempHeight(this.$gallery.height()-this.getSpinnerHeight()),this.spinner.$el.detach()},r.prototype.startLoadingSpinnerAnimation=function(){var t=this.spinner,i=t.$el.find("span");clearInterval(t.intervalId),this.$gallery.append(t.$el),this.setGalleryTempHeight(this.offY+this.buildingRow.height+this.getSpinnerHeight()),t.intervalId=setInterval(function(){t.phase=this.yield.every))return void this.startImgAnalyzer(t)}else if("error"!==e.data("jg.loaded"))return}0 img, > a > img, > svg, > a > svg",triggerEvent:function(t){this.$gallery.trigger(t)}},l.fn.justifiedGallery=function(n){return this.each(function(t,i){var e=l(i);e.addClass("justified-gallery");var s=e.data("jg.controller");if(void 0===s){if(null!=n&&"object"!==l.type(n)){if("destroy"===n)return;throw"The argument must be an object"}s=new r(e,l.extend({},r.prototype.defaults,n)),e.data("jg.controller",s)}else if("norewind"===n);else{if("destroy"===n)return void s.destroy();s.updateSettings(n),s.rewind()}s.updateEntries("norewind"===n)&&s.init()})}}); \ No newline at end of file diff --git a/static/js/load-photoswipe.js b/static/js/load-photoswipe.js new file mode 100644 index 0000000..978c66d --- /dev/null +++ b/static/js/load-photoswipe.js @@ -0,0 +1,80 @@ +/* +Put this file in /static/js/load-photoswipe.js +Documentation and licence at https://github.com/liwenyip/hugo-easy-gallery/ +*/ + +/* Show an alert if this js file has been loaded twice */ +if (window.loadphotoswipejs) { + window.alert("You've loaded load-photoswipe.js twice. See https://github.com/liwenyip/hugo-easy-gallery/issues/6") +} +var loadphotoswipejs = 1 + +/* TODO: Make the share function work */ +$( document ).ready(function() { + /* + Initialise Photoswipe + */ + var items = []; // array of slide objects that will be passed to PhotoSwipe() + // for every figure element on the page: + $('figure').each( function() { + if ($(this).attr('class') == 'no-photoswipe') return true; // ignore any figures where class="no-photoswipe" + // get properties from child a/img/figcaption elements, + var $figure = $(this), + $a = $figure.find('a'), + $img = $figure.find('img'), + $src = $a.attr('href'), + $title = $img.attr('alt'), + $msrc = $img.attr('src'); + // if data-size on tag is set, read it and create an item + if ($a.data('size')) { + var $size = $a.data('size').split('x'); + var item = { + src : $src, + w : $size[0], + h : $size[1], + title : $title, + msrc : $msrc + }; + console.log("Using pre-defined dimensions for " + $src); + // if not, set temp default size then load the image to check actual size + } else { + var item = { + src : $src, + w : 800, // temp default size + h : 600, // temp default size + title : $title, + msrc : $msrc + }; + console.log("Using default dimensions for " + $src); + // load the image to check its dimensions + // update the item as soon as w and h are known (check every 30ms) + var img = new Image(); + img.src = $src; + var wait = setInterval(function() { + var w = img.naturalWidth, + h = img.naturalHeight; + if (w && h) { + clearInterval(wait); + item.w = w; + item.h = h; + console.log("Got actual dimensions for " + img.src); + } + }, 30); + } + // Save the index of this image then add it to the array + var index = items.length; + items.push(item); + // Event handler for click on a figure + $figure.on('click', function(event) { + event.preventDefault(); // prevent the normal behaviour i.e. load the hyperlink + // Get the PSWP element and initialise it with the desired options + var $pswp = $('.pswp')[0]; + var options = { + index: index, + bgOpacity: 0.8, + showHideOpacity: true + } + new PhotoSwipe($pswp, PhotoSwipeUI_Default, items, options).init(); + }); + }); +}); \ No newline at end of file diff --git a/themes/archie/.github/FUNDING.yml b/themes/archie/.github/FUNDING.yml new file mode 100644 index 0000000..8cb3ec3 --- /dev/null +++ b/themes/archie/.github/FUNDING.yml @@ -0,0 +1,4 @@ +# These are supported funding model platforms + +ko_fi: athulcyriac +custom: read.gift/u/athulcajay diff --git a/themes/archie/LICENSE b/themes/archie/LICENSE new file mode 100644 index 0000000..646ad35 --- /dev/null +++ b/themes/archie/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2020 ATHUL CYRIAC AJAY + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/themes/archie/README.md b/themes/archie/README.md new file mode 100644 index 0000000..87685fe --- /dev/null +++ b/themes/archie/README.md @@ -0,0 +1,106 @@ +# Archie - Hugo theme +Archie is a minimal and clean theme for hugo with a markdown-ish UI. + +Forked from [Ezhil Theme](https://github.com/vividvilla/ezhil) + +## Demo + +[Check the Demo](https://athul.github.io/archie/) hosted on GitHub Pages :smile: . You can find the source code to that in the `site` branch of this repository + +![](/images/theme.png) +![](/images/archie-dark.png) +## Feature +- Google Analytics Script +- Callouts +- Tags +- Auto Dark Mode(based on system theme) +- tl:dr; frontamatter + +## Installation +In your Hugo website directory, create a new folder named theme and clone the repo +```bash +$ mkdir themes +$ cd themes +$ git clone https://github.com/athul/archie.git +``` +Edit the `config.toml` file with `theme="archie"` +For more information read the official [setup guide](https://gohugo.io/overview/installing/) of Hugo. + +## Writing Posts +Create a new `.md` file in the *content/posts* folder +```yml +--- +title: Title of the post +description: +date: +tldr: (optional) +draft: true/false (optional) +tags: [tag names] (optional) +--- +``` + +## Credits +Forked from [Ezhil Theme](https://github.com/vividvilla/ezhil) and Licensed under MIT License +Inspired by design of blog.jse.li + +---- + +## Config of the Demo Site + +```toml +baseURL = "https://athul.github.io/archie/" +languageCode = "en-us" +title = "Archie" +theme="archie" +copyright = "© Athul" +# Code Highlight +pygmentsstyle = "monokai" +pygmentscodefences = true +pygmentscodefencesguesssyntax = true + +paginate=3 # articles per page + +[params] + mode="auto" # color-mode → light,dark or auto + featherIconsCDN=true + subtitle = "Minimal and Clean [blog theme for Hugo](https://github.com/athul/archie)" + +# Social Tags + +[[params.social]] +name = "GitHub" +icon = "github" +url = "https://github.com/athul/archie" + +[[params.social]] +name = "Twitter" +icon = "twitter" +url = "https://twitter.com/athulcajay/" + +[[params.social]] +name = "GitLab" +icon = "gitlab" +url = "https://gitlab.com/athul/" + +# Main menu Items + +[[menu.main]] +name = "Home" +url = "/" +weight = 1 + +[[menu.main]] +name = "All posts" +url = "/posts" +weight = 2 + +[[menu.main]] +name = "About" +url = "/about" +weight = 3 + +[[menu.main]] +name = "Tags" +url = "/tags" +weight = 4 +``` \ No newline at end of file diff --git a/themes/archie/archetypes/default.md b/themes/archie/archetypes/default.md new file mode 100644 index 0000000..ac36e06 --- /dev/null +++ b/themes/archie/archetypes/default.md @@ -0,0 +1,2 @@ ++++ ++++ diff --git a/themes/archie/exampleSite/archetypes/default.md b/themes/archie/exampleSite/archetypes/default.md new file mode 100644 index 0000000..26f317f --- /dev/null +++ b/themes/archie/exampleSite/archetypes/default.md @@ -0,0 +1,5 @@ +--- +title: "{{ replace .Name "-" " " | title }}" +date: {{ .Date }} +draft: true +--- diff --git a/themes/archie/exampleSite/config.toml b/themes/archie/exampleSite/config.toml new file mode 100644 index 0000000..30779eb --- /dev/null +++ b/themes/archie/exampleSite/config.toml @@ -0,0 +1,46 @@ +baseURL = "https://example.com" +languageCode = "en-us" +title = "Archie" +theme="archie" +copyright = "© Athul" +pygmentsstyle = "monokai" +pygmentscodefences = true +pygmentscodefencesguesssyntax = true +[params] + mode="auto" + featherIconsCDN=true + subtitle = "Minimal and Clean [blog theme for Hugo](https://github.com/athul/archie)" + +[[params.social]] +name = "GitHub" +icon = "github" +url = "https://github.com/athul/archie" + +[[params.social]] +name = "Twitter" +icon = "twitter" +url = "https://github.com/athulcajay/" + +[[params.social]] +name = "GitLab" +icon = "gitlab" +url = "https://gitlab.com/athul/" +[[menu.main]] +name = "Home" +url = "/" +weight = 1 + +[[menu.main]] +name = "All posts" +url = "/posts" +weight = 2 + +[[menu.main]] +name = "About" +url = "/about" +weight = 3 + +[[menu.main]] +name = "Tags" +url = "/tags" +weight = 4 \ No newline at end of file diff --git a/themes/archie/exampleSite/content/_index.md b/themes/archie/exampleSite/content/_index.md new file mode 100644 index 0000000..6abc75e --- /dev/null +++ b/themes/archie/exampleSite/content/_index.md @@ -0,0 +1,4 @@ ++++ +author = "Hugo Authors" ++++ + diff --git a/themes/archie/exampleSite/content/about.md b/themes/archie/exampleSite/content/about.md new file mode 100644 index 0000000..a412806 --- /dev/null +++ b/themes/archie/exampleSite/content/about.md @@ -0,0 +1,28 @@ ++++ +title = "About" +description = "Hugo, the world’s fastest framework for building websites" +date = "2019-02-28" +aliases = ["about-us","about-hugo","contact"] +author = "Hugo Authors" ++++ + +Written in Go, Hugo is an open source static site generator available under the [Apache Licence 2.0.](https://github.com/gohugoio/hugo/blob/master/LICENSE) Hugo supports TOML, YAML and JSON data file types, Markdown and HTML content files and uses shortcodes to add rich content. Other notable features are taxonomies, multilingual mode, image processing, custom output formats, HTML/CSS/JS minification and support for Sass SCSS workflows. + +Hugo makes use of a variety of open source projects including: + +* https://github.com/yuin/goldmark +* https://github.com/alecthomas/chroma +* https://github.com/muesli/smartcrop +* https://github.com/spf13/cobra +* https://github.com/spf13/viper + +Hugo is ideal for blogs, corporate websites, creative portfolios, online magazines, single page applications or even a website with thousands of pages. + +Hugo is for people who want to hand code their own website without worrying about setting up complicated runtimes, dependencies and databases. + +Websites built with Hugo are extremelly fast, secure and can be deployed anywhere including, AWS, GitHub Pages, Heroku, Netlify and any other hosting provider. + +Learn more and contribute on [GitHub](https://github.com/gohugoio). + + + diff --git a/themes/archie/exampleSite/content/archives.md b/themes/archie/exampleSite/content/archives.md new file mode 100644 index 0000000..98a1ee9 --- /dev/null +++ b/themes/archie/exampleSite/content/archives.md @@ -0,0 +1,5 @@ +--- +date: 2019-05-28 +type: section +layout: "archives" +--- \ No newline at end of file diff --git a/themes/archie/exampleSite/content/homepage/about.md b/themes/archie/exampleSite/content/homepage/about.md new file mode 100644 index 0000000..c2ba680 --- /dev/null +++ b/themes/archie/exampleSite/content/homepage/about.md @@ -0,0 +1,7 @@ +--- +title: 'Our Difference' +button: 'About us' +weight: 2 +--- + +Lorem ipsum dolor sit amet, et essent mediocritatem quo, choro volumus oporteat an mei. ipsum dolor sit amet, et essent mediocritatem quo, \ No newline at end of file diff --git a/themes/archie/exampleSite/content/homepage/index.md b/themes/archie/exampleSite/content/homepage/index.md new file mode 100644 index 0000000..01ffa31 --- /dev/null +++ b/themes/archie/exampleSite/content/homepage/index.md @@ -0,0 +1,3 @@ +--- +headless : true +--- diff --git a/themes/archie/exampleSite/content/homepage/work.md b/themes/archie/exampleSite/content/homepage/work.md new file mode 100644 index 0000000..f2fee73 --- /dev/null +++ b/themes/archie/exampleSite/content/homepage/work.md @@ -0,0 +1,7 @@ +--- +title: 'We Help Business Grow' +button: 'Our Work' +weight: 1 +--- + +Lorem ipsum dolor sit amet, et essent mediocritatem quo, choro volumus oporteat an mei. Numquam dolores mel eu, mea docendi omittantur et, mea ea duis erat. Elit melius cu ius. Per ex novum tantas putant, ei his nullam aliquam apeirian. Aeterno quaestio constituto sea an, no eum intellegat assueverit. \ No newline at end of file diff --git a/themes/archie/exampleSite/content/posts/post-1.md b/themes/archie/exampleSite/content/posts/post-1.md new file mode 100644 index 0000000..293bdc3 --- /dev/null +++ b/themes/archie/exampleSite/content/posts/post-1.md @@ -0,0 +1,62 @@ +--- +title: "Primer: When You Have Too Much to Do" +date: 2020-04-01T02:01:58+05:30 +description: "You have a to-do list that scrolls on for days. You are managing multiple projects, getting lots of email and messages on different messaging systems, managing finances and personal health habits and so much more." +tags: [Primer, todo] +--- + +You have a to-do list that scrolls on for days. You are managing multiple projects, getting lots of email and messages on different messaging systems, managing finances and personal health habits and so much more. + +It all keeps piling up, and it can feel overwhelming. + +How do you keep up with it all? How do you find focus and peace and get stuff accomplished when you have too much on your plate? + +In this primer, I’ll look at some key strategies and tactics for taking on an overloaded life with an open heart, lots of energy, and a smile on your face. + +## The First Step: Triage + +Whether you’re just starting your day, or you’re in the middle of the chaos and just need to find some sanity … the first step is to get into triage mode. + +Triage, as you probably know, is sorting through the chaos to prioritize: what needs to be done now, what needs to be done today, what needs to be done this week, and what can wait? You’re looking at urgency, but also what’s meaningful and important. + +Here’s what you might do: + +* Pick out the things that need to be done today. Start a Short List for things you’re going to do today. That might be important tasks for big projects, urgent tasks that could result in damage if you don’t act, smaller admin tasks that you really should take care of today, and responding to important messages. I would recommend being ruthless and cutting out as much as you can, having just 5 things on your plate if that’s at all possible. Not everything needs to be done today, and not every email needs to be responded to. +* Push some things to tomorrow and the rest of the week. If you have deadlines that can be pushed back (or renegotiated), do that. Spread the work out over the week, even into next week. What needs to be done tomorrow? What can wait a day or two longer? +* Eliminate what you can. That might mean just not replying to some messages that aren’t that important and don’t really require a reply. It might mean telling some people that you can’t take on this project after all, or that you need to get out of the commitment that you said you’d do. Yes, this is uncomfortable. For now, just put them on a list called, “To Not Do,” and plan to figure out how to get out of them later. + +OK, you have some breathing room and a manageable list now! Let’s shrink that down even further and just pick one thing. + +## Next: Focus on One Thing + +With a lot on your plate, it’s hard to pick one thing to focus on. But that’s exactly what I’m going to ask you to do. + +Pick one thing, and give it your focus. Yes, there are a lot of other things you can focus on. Yes, they’re stressing you out and making it hard to focus. But think about it this way: if you allow it all to be in your head all the time, that will always be your mode of being. You’ll always be thinking about everything, stressing out about it all, with a frazzled mind … unless you start shifting. + +The shift: + +* Pick something to focus on. Look at the triaged list from the first section … if you have 5-6 things on this Short List, you can assess whether there’s any super urgent, time-sensitive things you need to take care of. If there are, pick one of them. If not, pick the most important one — probably the one you have been putting off doing. +* Clear everything else away. Just for a little bit. Close all browser tabs, turn off notifications, close open applications, put your phone away. +* Put that one task before you, and allow yourself to be with it completely. Pour yourself into it. Think of it as a practice, of letting go (of everything else), of focus, of radical simplicity. + +When you’re done (or after 15-20 minutes have gone by at least), you can switch to something else. But don’t allow yourself to switch until then. + +By closing off all exits, by choosing one thing, by giving yourself completely to that thing … you’re now in a different mode that isn’t so stressful or spread thin. You’ve started a shift that will lead to focus and sanity. + +## Third: Schedule Time to Simplify + +Remember the To Not Do list above? Schedule some time this week to start reducing your projects, saying no to people, getting out of commitments, crossing stuff off your task list … so that you can have some sanity back. + +There are lots of little things that you’ve said “yes” to that you probably shouldn’t have. That’s why you’re overloaded. Protect your more important work, and your time off, and your peace of mind, by saying “no” to things that aren’t as important. + +Schedule the time to simplify — you don’t have to do it today, but sometime soon — and you can then not have to worry about the things on your To Not Do list until then. + +## Fourth: Practice Mindful Focus + +Go through the rest of the day with an attitude of “mindful focus.” That means that you are doing one thing at a time, being as present as you can, switching as little as you can. + +Think of it as a settling of the mind. A new mode of being. A mindfulness practice (which means you won’t be perfect at it). + +As you practice mindful focus, you’ll learn to practice doing things with an open heart, with curiosity and gratitude, and even joy. Try these one at a time as you get to do each task on your Short List. + +You’ll find that you’re not so overloaded, but that each task is just perfect for that moment. And that’s a completely new relationship with the work that you do, and a new relationship with life. diff --git a/themes/archie/exampleSite/content/posts/post-2.md b/themes/archie/exampleSite/content/posts/post-2.md new file mode 100644 index 0000000..54f4fde --- /dev/null +++ b/themes/archie/exampleSite/content/posts/post-2.md @@ -0,0 +1,40 @@ +--- +title: "Fearlessness: How to Stop Running from Space" +date: 2018-03-18T12:13:30+05:30 +tags: [Space] +--- + +We spend our days filling in every available space, cramming in more tasks, responding to messages, checking social media and online sites, watching videos. + +We are afraid of empty space in our lives. + +The result is often a continual busyness, constant distraction and avoidance, lack of focus, lack of satisfaction with our lives. + +We run from silence. We run from the spaces between tasks and appointments. We run from solitude and stillness. We try to fill every second with activity, with something useful, as if silence and space are not valuable. + +But what are we afraid of? + +And who would we be if we didn’t have that fear? + +We’re afraid of space and stillness and silence because it highlights the uncertainty, instability, groundlessness, insecurity, shakiness that lie underneath every second of our lives. We’re afraid of having to face this instability and uncertainty, of having to feel the fear of it. + +Without the fear of all of the uncertainty that is highlighted by space … we become free. + +I know in my life, when I allow myself to have stillness, silence, solitude, simplicity and space … it leaves room to face whatever is coming up for me. It gives me room to fully feel any feelings that I’ve been avoiding. It allows me to be more honest with myself, instead of using distractions and busyness to cover up what I don’t want to see. + +And in the end, I develop trust that the space is not something to be feared, but rather something to be treasured. A gift, filled with learning and not knowing and shakiness and beauty. + +You might try allowing more space to be in your day, without filling it: + +* Take some time between tasks for stillness. +* Sit out in nature, in silence, without technology. +* When you notice yourself reaching for your phone, pause. See if you can just be still, just savor some space. +* When you feel uncertainty or instability in your life (hint: it’s always there), let yourself feel it. Be present with it, without needing to run or avoid. +* When you feel fear, be open-hearted with it and allow yourself fully feel it, being friendly with it. Your relationship with fear will change if you become friendly with it. +* Do less, and trust that things won’t fall apart. Or if they do fall apart, you can be present with that instability. +* When you’re in line, driving, eating, walking, exercising … see if you can do those things in silence, without technology, without needing to do something “useful.” Find the value in these spaces. +* Notice who you are without the fear of space. + +Savor these spaces, their deliciousness. Savor the groundlessness, as something filled with freedom if we learn not to fear it. Be present with the fear and uncertainty, as good friends not as enemies. + +Let your heart be open raw tender and vulnerable, and your mind embracing the spaciousness of the vast blue sky of open awareness. diff --git a/themes/archie/exampleSite/content/posts/post-3.md b/themes/archie/exampleSite/content/posts/post-3.md new file mode 100644 index 0000000..2eb633f --- /dev/null +++ b/themes/archie/exampleSite/content/posts/post-3.md @@ -0,0 +1,38 @@ +--- +title: "How I Learned to Stop Procrastinating, & Love Letting Go" +date: 2018-03-18T12:13:32+05:30 +description: "The art of letting go." +tags: [Procrastinating] +--- + +The end of procrastination is the art of letting go. + +I’ve been a lifelong procrastinator, at least until recent years. I would put things off until deadline, because I knew I could come through. I came through on tests after cramming last minute, I turned articles in at the deadline after waiting until the last hour, I got things done. + +Until I didn’t. It turns out procrastinating caused me to miss deadlines, over and over. It stressed me out. My work was less-than-desirable when I did it last minute. Slowly, I started to realize that procrastination wasn’t doing me any favors. In fact, it was causing me a lot of grief. + +But I couldn’t quit. I tried a lot of things. I tried time boxing and goal setting and accountability and the Pomodoro Technique and Getting Things Done. All are great methods, but they only last so long. Nothing really worked over the long term. + +That’s because I wasn’t getting to the root problem. + +I hadn’t figured out the skill that would save me from the procrastination. + +Until I learned about letting go. + +Letting go first came to me when I was quitting smoking. I had to let go of the “need” to smoke, the use of my crutch of cigarettes to deal with stress and problems. + +Then I learned I needed to let go of other false needs that were causing me problems: sugar, junk food, meat, shopping, beer, possessions. I’m not saying I can never do these things again once I let go of these needs, but I let go of the idea that they’re really necessary. I let go of an unhealthy attachment to them. + +Then I learned that distractions and the false need to check my email and news and other things online … were causing me problems. They were causing my procrastination. + +So I learned to let go of those too. + +Here’s the process I used to let go of the distractions and false needs that cause procrastination: + +I paid attention to the pain they cause me, later, instead of only the temporary comfort/pleasure they gave me right away. +I thought about the person I want to be, the life I want to live. I set my intentions to do the good work I think I should do. +I watched my urges to check things, to go to the comfort of distractions. I saw that I wanted to escape discomfort of something hard, and go to the comfort of something familiar and easy. +I realized I didn’t need that comfort. I could be in discomfort and nothing bad would happen. In fact, the best things happen when I’m in discomfort. +And then I smile, and breathe, and let go. + +And one step at a time, become the person I want to be. diff --git a/themes/archie/exampleSite/content/posts/post-4.md b/themes/archie/exampleSite/content/posts/post-4.md new file mode 100644 index 0000000..e6609a7 --- /dev/null +++ b/themes/archie/exampleSite/content/posts/post-4.md @@ -0,0 +1,30 @@ +--- +title: "Getting Started with Traveling Ultralight" +date: 2020-03-18T12:13:35+05:30 +description: "Start by getting a small backpack (less than 20 liters) and then just travel with what fits in that." +--- + +I’m on a trip at the moment, and a friend who generously let me sleep on his couch looked at my small travel backpack and commented on how little I travel with: “That’s impressive,” he said. + +I was a little surprised, because though I’ve gotten that comment before, it’s become normal for me to travel with just a small bag (10 lbs. or less, usually), and I have friends who travel with even less. But then I remembered that I’m far from normal in this way. + +I gave him a tip for getting started, and I recommend it for all of you, who want to travel light — or ultralight, as I call it, because for many people traveling light is taking a carry-on roller luggage. For me, having those roller bags is lugging too much, because you can run up stairs with it with ease, or carry it all over a city without worrying about stowing away your luggage somewhere first. It’s so much easier to travel ultralight. + +Here’s the tip I gave him to get started: start by getting a small backpack (less than 20 liters) and then just travel with what fits in that. + +That’s how to start. But you’ll probably want some guidance on what to put into the bag, and how to travel with so little. Here’s some guidance to get started: + +* I travel with a lightweight laptop (Macbook Air), a few clothes, my phone, earbuds and some charging cords, toiletries, and almost nothing else. A lightweight windbreaker for wind and light rain (Patagonia Houdini). An eye mask and ear plugs. A collapsible water bottle. My passport. That’s about it. No extra shoes. No books. No suit. No travel pillow. No extra camera other than my phone. I’m not sure what else everyone else brings, but none of that. +* I bring clothes that I can wash in the sink or shower and that will dry overnight. Lightweight stuff that I can layer. Often they’re workout-style clothes or things from companies like Outlier or Patagonia that travel well. I don’t bring enough underwear or socks for every day of the trip, because I wash them every couple of days. I only bring one or two extra T-shirts, generally wearing the same two shirts the whole trip, even if it’s a month long. No one has ever once cared what I wear when I’m traveling. +* I bring minimal toiletries: a small shaver for my head, razor, toothbrush, floss small tubes of toothpaste and shaving cream, deodorant, nail clippers, ibuprofen. +* For cold places, I have thermal underwear and a couple long-sleeve layers (generally all Patagonia capilene stuff), and a beanie. I don’t usually go to places where it’s snowing (I don’t know why, maybe snow isn’t my thing), so I don’t have clothes to deal with that weather. +* For warm places, I will bring flip flops and swim trunks, and leave most of the colder layers behind. + +That’s enough for a monthlong trip, which I’ve done multiple times with this kind of setup. For a shorter trip of a few days, I might bring even less. + +I really love traveling this way, and am more than willing to sacrifice bringing extra things for the luxury of traveling lightweight. + +By the way, you don’t need much more than this kind of setup even in everyday life. + +For more info on this, check out my Ultralight ebook, and my friend Tynan has a great book called Forever Nomad. + diff --git a/themes/archie/exampleSite/content/posts/post-5.md b/themes/archie/exampleSite/content/posts/post-5.md new file mode 100644 index 0000000..8623c19 --- /dev/null +++ b/themes/archie/exampleSite/content/posts/post-5.md @@ -0,0 +1,75 @@ +--- +title: "Typography" +date: 2018-03-18T12:13:38+05:30 +--- + +Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits. + +# Heading 1 + +Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits. + +## Heading 2 + +Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits. + +### Heading 3 + +Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits. + +#### Heading 4 + +Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits. + +##### Heading 5 + +Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits. + +###### Heading 6 + +Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits. + +## Typography + +Lid est laborum et dolorum fuga, This is [an example](http://example.com/ "Title") inline link. Et harum quidem rerum facilis, **This is bold** and *emphasis* cumque nihilse impedit quo minus id quod amets untra dolor amet sad. While this is `code block()` and following is a `pre` tag + + print 'this is pre tag' + +Following is the syntax highlighted code block + +```go +func getCookie(name string, r interface{}) (*http.Cookie, error) { + rd := r.(*http.Request) + cookie, err := rd.Cookie(name) + if err != nil { + return nil, err + } + return cookie, nil +} + +func setCookie(cookie *http.Cookie, w interface{}) error { + // Get write interface registered using `Acquire` method in handlers. + wr := w.(http.ResponseWriter) + http.SetCookie(wr, cookie) + return nil +} +``` + +This is blockquote, Will make it *better now* + +> 'I want to do with you what spring does with the cherry trees.' cited ~Pablo Neruda* + + +> Et harum quidem *rerum facilis* est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit + +Unordered list + +* Red +* Green +* Blue + +Ordered list + +1. Red +2. Green +3. Blue diff --git a/themes/archie/exampleSite/content/posts/post-6.md b/themes/archie/exampleSite/content/posts/post-6.md new file mode 100644 index 0000000..0a29764 --- /dev/null +++ b/themes/archie/exampleSite/content/posts/post-6.md @@ -0,0 +1,36 @@ +--- +title: "Hugo shortcodes" +date: 2018-03-18T12:13:36+05:30 +description: Here is a demo of all shortcodes available in Hugo. +--- + +## Images + +{{< figure src="https://images.unsplash.com/photo-1560032779-0a8809186efd?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1350&q=80" title="Dave Herring" >}} + +{{< figure src="https://images.unsplash.com/photo-1560032779-0a8809186efd?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=500&q=80" title="Dave Herring" >}} + + +## Github Gist + +{{< gist spf13 7896402 >}} + +## Youtube video + +{{< youtube w7Ft2ymGmfc >}} + +## Tweet + +{{< tweet 877500564405444608 >}} + +## Vimeo + +{{< vimeo id="146022717" >}} + +## Instagram + +{{< instagram BWNjjyYFxVx >}} + +## Callouts + +{{< callout emoji="⚡️" text="I guess this works" >}} \ No newline at end of file diff --git a/themes/archie/exampleSite/content/posts/post-7.md b/themes/archie/exampleSite/content/posts/post-7.md new file mode 100644 index 0000000..4884040 --- /dev/null +++ b/themes/archie/exampleSite/content/posts/post-7.md @@ -0,0 +1,15 @@ +--- +title: "How to test dark mode?" +summary: "Here is how you can setup dark mode for Ink and test on various OS like iOS, Android, macOS and Windows 10." +date: 2018-03-18T12:13:38+05:30 +tldr: "Wubba lubba dub dub" +--- + +You can set dark mode as default by setting `params.mode` to `dark` in `config.toml` or set it to `auto` which will detect based on your OS and switch to dark mode. For more details [refer documentation](https://github.com/knadh/hugo-ink#configuration) + +Here is how you can switch based on your OS + +* [iOS](https://www.howtogeek.com/440078/how-to-enable-dark-mode-on-your-iphone-and-ipad/) +* [Android](https://9to5google.com/2018/12/17/android-dark-mode-theme-pie/) +* [macOS](https://support.apple.com/en-in/HT208976) +* [Windows 10](https://www.cnet.com/how-to/turn-on-the-dark-mode-in-windows-10/) diff --git a/themes/archie/exampleSite/content/posts/tg-gh.md b/themes/archie/exampleSite/content/posts/tg-gh.md new file mode 100644 index 0000000..4400148 --- /dev/null +++ b/themes/archie/exampleSite/content/posts/tg-gh.md @@ -0,0 +1,382 @@ +--- +title: Telegram Bot for GitHub Actions +date: "2020-04-01" +description: Make a Telegram bot with Node.js and use it with GitHub Actions for sending notifications to you about the repo. +tldr: Making GitHub Actions with Js Code +--- +## Telegram +[Telegram](https://telegram.org/) is a cloud-based mobile and desktop messaging app with a focus on security and speed. It is free to use and extensively hackable. It also has a good bot support system. The API is also easy to implement and has many wrappers for building bots with the API. + +## GitHub Actions +[GitHub Actions](https://github.com/features/actions) is a CI/CD runtime for your GitHub repository. You can run almost anything from scripts to docker containers. You can build, test and deploy your code with GitHub Actions. All these actions are called workflows and workflows differ in the job they're doing. These maybe test workflows, build ones or deployment ones. You can find all the actions on GitHub in the [marketplace](https://github.com/marketplace?type=actions) + +## Building the Bot +### Prerequisites +- Basic JavaScript Knowledge +- Basic GitHub Knowledge +- Telegram Account + +> There are templates for building actions. Here we're gonna start from scratch + +### Environment Setup +- **Node**, You can download node from their [website](https://nodejs.org/en/download/) +- NPM comes with node, so you don't have to worry about it. +- Initialize the Project +```shell +$ git init ## initialize a new git repository for version management +--- +$ npm init +``` +- **dotenv**, Dotenv can be downloaded via +```shell +$ npm i dotenv +--- +$ yarn add dotenv +``` +- **node-telegram-bot-api**, node-telegram-bot-api is a simple wrapper for building telegram bots. You can download it via +```shell +$ npm i node-telegram-bot-api +--- +$ yarn add node-telegram-bot-api +``` +- **@zeit/ncc**, NCC is a Simple CLI for compiling a Node.js module into a single file, together with all its dependencies, GCC-style. It's a dev dependency and can be downloaded +```shell +yarn add --dev @zeit/ncc +--- +npm i -D @zeit/ncc +``` + + +#### Folder Structure +The `dist` folder will be automatically created. `action.yml` will be made + +``` +. +├── dist +│ └── index.js +├── index.js +├── action.yml +├── README.md +└── package.json + +``` +- `index.js` is the file we're defining the bot +- `action.yml` is the file we'll define the action and it's behaviours + +## Making the Bot +We need to get an API bot token from telegram. For that Go to Telegram and Search for `Botfather`. It's a bot. +![](bfather.png) +Create a new bot with the `/newbot` command and get the API key. We'll need that, also talk to `jsondump` bot and get your chat id. The output may be like this, so +```json +{ + "update_id": 143943779, + "message": { + "message_id": 181575, + "from": { + "id": 123456 // this is what we need + "is_bot": false, + "first_name": "Tg Name", + "username": "TG Username", + "language_code": "en" + }, + "chat": { + "id": 123456, + "first_name": "Tg Name", + "username": "TG Username", + "type": "private" + }, + "date": 1584119424, + "text": "message" + } +} +``` +This will be needed for further use and We need to add it to the repo secrets which can be found in the repo settings. Be careful to add it as `token` and `chat` like as shown below +![](scr.png) + +### Writing the Action and Building the Bot +Fire up the terminal/cmd and make a new folder. Install the dependencies. Run the following command +```shell +$ touch index.js action.yml +``` +Open your favourite text editor within the folder or with the file. We'll define the bot in `index.js` + +```javaScript +require("dotenv").config +const Bot = require('node-telegram-bot-api'); +const { + INPUT_STATUS: ipstatus, + INPUT_TOKEN: tgtoken,//Telegram api token + INPUT_CHAT: chatid,// Telegram Chat ID + INPUT_IU_TITLE: ititle,// Issue title + INPUT_IU_NUM: inum,// Issue Number + INPUT_IU_ACTOR: iactor,// Issue made by + INPUT_IU_BODY: ibody,// Issue Body + INPUT_PR_NUM: pnum,// PR Number + INPUT_PR_STATE: prstate,// PR Opened, reponed or closed + INPUT_PR_TITLE: ptitle,// PR Title + INPUT_PR_BODY: pbody,// Body of the PR + GITHUB_EVENT_NAME: ghevent,// Name of the trigger event + GITHUB_REPOSITORY: repo,// Repository the trigger was made from + GITHUB_ACTOR: ghactor,// User who triggered the action + GITHUB_SHA: sha,// Commit ID + GITHUB_WORKFLOW: ghwrkflw// Workflow Name +} = process.env; + +const bot = new Bot(tgtoken) +``` +First, we're defining the dotenv for config and initializing Telegram Bot. Here we're defining the alias variables for the *environment variables*. You might notice an `INPUT_` for almost every environment variable, this is because GitHub Actions pass the env variable with an INPUT prefix. Other env variables are action's default environment variables. Then we initialized the bot with the API token. + +GitHub actions could be triggered with Issues, Pull Request or Pushes. You can find the trigger events [here](https://help.github.com/en/actions/reference/events-that-trigger-workflows). Here we're gonna get a message from the bot when an *Issue* or *Pull Request* or a *Push* event has happened. + +```js +const evresp = (gevent) => { + switch (gevent) { + + case "issues": + return ` +❗️❗️❗️❗️❗️❗️ + +Issue ${prstate} + +Issue Title and Number : ${ititle} | #${inum} + +Commented or Created By : \`${iactor}\` + +Issue Body : *${ibody}* + +[Link to Issue](https://github.com/${repo}/issues/${inum}) +[Link to Repo ](https://github.com/${repo}/) +[Build log here](https://github.com/${repo}/commit/${sha}/checks)` + case "pull_request": + return ` +🔃🔀🔃🔀🔃🔀 +PR ${prstate} + +PR Number: ${pnum} + +PR Title: ${ptitle} + +PR Body: *${pbody}* + +PR By: ${ghactor} + +[Link to Issue](https://github.com/${repo}/pull/${pnum}) +[Link to Repo ](https://github.com/${repo}/) +[Build log here](https://github.com/${repo}/commit/${sha}/checks)` + default: + return ` +⬆️⇅⬆️⇅ + +ID: ${ghwrkflw} + +Action was a *${ipstatus}!* + +\`Repository: ${repo}\` + +On: *${ghevent}* + +By: *${ghactor}* + +Tag: ${process.env.GITHUB_REF} + +[Link to Repo ](https://github.com/${repo}/) + ` + } +} +``` +In these lines of code, we're just initializing a switch statement for the responses. We're also declaring an anonymous function to use the switch responses via a function later. We're using all the defined variables in the switch. You can check the [trigger Events](https://help.github.com/en/actions/reference/events-that-trigger-workflows) to get how the event is triggered and what keyword should be used. + +Now for the last part of the Js file, we just take the response from the switch and assign it to a constant. Then we use the `sendMessage` function of the `node-telegram-bot-api` to send the message to the bot with the chatid and the output as the arguments. +```js +const output = evresp(ghevent) +``` +bot.sendMessage(chatid,output,{parse_mode : "Markdown"}) +## Compiling and Minifying the Js code +Since we have installed `@zeit/ncc` and this is used for the making the whole program with all the APIs to a single file and we need to use NCC for that. We just need to run +```shell +yarn run ncc build index.js -C -m -o dist +``` +or you might wanna add the following to you `package.json` file, and run `npm run test` to compile and minify the code. +```json +"scripts": { + "test": "ncc build index.js -C -m -o dist" + }, +``` +This will create a `dist` folder with and `index.js` file which contains the compiled code. + +## Making it a valid action +For making this Js file a valid action, we need to add an `action.yml` file. The action.yml for this action is like this +```yml +name: 'Action Name' +description: 'Action Descreption' +author: '' +inputs: + chat: + description: 'Chat to send: chat id or @channel_name' + required: true + token: + description: 'Telegram Bot token' + required: true + status: + description: 'Job status' + required: true + iu_title: + description: 'Issue Title' + default: ${{ github.event.issue.title }} + iu_num: + description: 'Issue Number' + default: ${{ github.event.issue.number }} + iu_actor: + description: 'Issue Triggerer' + default: ${{ github.event.issue.user.login }} + iu_com: + description: 'Issue Comment' + default: ${{github.event.comment.body}} + pr_state: + description: 'State of the PR' + default: ${{ github.event.action }} + pr_num: + description: 'PR Number' + default: ${{ github.event.number }} + pr_title: + description: 'Title of the PR' + default: ${{ github.event.pull_request.title }} + pr_body: + description: 'Body/Contents of the PR' + default: ${{ github.event.pull_request.body }} +runs: + using: "node12" + main: "dist/index.js" +branding: + icon: 'repeat' + color: 'green' +``` +Here we're defining the Input variables to be loaded for the action in GitHub's runtime environemt. All these `default` data are taken from the response of the webhooks which are send by GitHub when a trigger event is occured. You can find out more in the [Action Documentation Here](https://help.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#github-context). + +```yml +runs: + using: "node12" + main: "dist/index.js" +``` +Here we are defining that this is a node action and should run in an environment with node, and the file which should be run, here the `index.js` file in the `dist` folder. That should do it. Create a new commit and push it to a repo. **Create a new tag** and this action will appear in the [marketplace](https://github.com/marketplace?type=actions). + +### Defining a workflow to test your action +GitHub Action workflows are defined using the `.yml` syntax. Here is an example of a sample workflow for this action + +```yml +name: + +on: + push: + pull_request: + types: [opened, closed] + issues: + types: [opened, closed, reopened] +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: + uses: /@master + if: always() + with: + chat: ${{ secrets.chat }} + token: ${{ secrets.token }} + status: ${{ job.status }} +``` + + +The Complete code for the bot is +```js +//Initializing dotenv and the bot +require("dotenv").config +const Bot = require('node-telegram-bot-api'); +// aliasing the environment variables +const { + INPUT_STATUS: ipstatus, + INPUT_TOKEN: tgtoken, //Telegram api token + INPUT_CHAT: chatid,// Telegram Chat ID + INPUT_IU_TITLE: ititle,// Issue title + INPUT_IU_NUM: inum,// Issue Number + INPUT_IU_ACTOR: iactor, // Issue made by + INPUT_IU_BODY: ibody, // Issue Body + INPUT_PR_NUM: pnum, // PR Number + INPUT_PR_STATE: prstate, // PR Opened, reponed or closed + INPUT_PR_TITLE: ptitle, // PR Title + INPUT_PR_BODY: pbody, // Body of the PR + GITHUB_EVENT_NAME: ghevent, // Name of the trigger event + GITHUB_REPOSITORY: repo, // Repository the trigger was made from + GITHUB_ACTOR: ghactor, // User who triggered the action + GITHUB_SHA: sha, // Commit ID + GITHUB_WORKFLOW: ghwrkflw // Workflow Name +} = process.env; + +const bot = new Bot(tgtoken) +// Function to return the response for the specific trigger +const evresp = (gevent) => { + switch (gevent) { +//Switch statement for issues + case "issues": + return ` +❗️❗️❗️❗️❗️❗️ + +Issue ${prstate} + +Issue Title and Number : ${ititle} | #${inum} + +Commented or Created By : \`${iactor}\` + +Issue Body : *${ibody}* + +[Link to Issue](https://github.com/${repo}/issues/${inum}) +[Link to Repo ](https://github.com/${repo}/) +[Build log here](https://github.com/${repo}/commit/${sha}/checks)` +// Switch statement for Pull Requests + case "pull_request": + return ` +🔃🔀🔃🔀🔃🔀 +PR ${prstate} + +PR Number: ${pnum} + +PR Title: ${ptitle} + +PR Body: *${pbody}* + +PR By: ${ghactor} + +[Link to Issue](https://github.com/${repo}/pull/${pnum}) +[Link to Repo ](https://github.com/${repo}/) +[Build log here](https://github.com/${repo}/commit/${sha}/checks)` + default: +// switch statement for Pushes + return ` +⬆️⇅⬆️⇅ + +ID: ${ghwrkflw} + +Action was a *${ipstatus}!* + +\`Repository: ${repo}\` + +On: *${ghevent}* + +By: *${ghactor}* + +Tag: ${process.env.GITHUB_REF} + +[Link to Repo ](https://github.com/${repo}/) + ` + } +} +// assigning the output to a variable +const output = evresp(ghevent) +// sending the message +bot.sendMessage(chatid,output,{parse_mode : "Markdown"}) +``` + + +------ + +You can try out many different items using actions and this is just a sample action to get you started. Maybe sending Cat GIFs if the build succeded on the pull request or sending a welcome message to a first time contributor. You imagination is the limit😄 and **Never Stop being ⚡️** \ No newline at end of file diff --git a/themes/archie/images/archie-dark.png b/themes/archie/images/archie-dark.png new file mode 100644 index 0000000..2bff9ed Binary files /dev/null and b/themes/archie/images/archie-dark.png differ diff --git a/themes/archie/images/screenshot.png b/themes/archie/images/screenshot.png new file mode 100644 index 0000000..1a262e7 Binary files /dev/null and b/themes/archie/images/screenshot.png differ diff --git a/themes/archie/images/theme.png b/themes/archie/images/theme.png new file mode 100644 index 0000000..c195540 Binary files /dev/null and b/themes/archie/images/theme.png differ diff --git a/themes/archie/images/tn.png b/themes/archie/images/tn.png new file mode 100644 index 0000000..628ac6c Binary files /dev/null and b/themes/archie/images/tn.png differ diff --git a/themes/archie/layouts/404.html b/themes/archie/layouts/404.html new file mode 100644 index 0000000..e69de29 diff --git a/themes/archie/layouts/_default/baseof.html b/themes/archie/layouts/_default/baseof.html new file mode 100644 index 0000000..b941097 --- /dev/null +++ b/themes/archie/layouts/_default/baseof.html @@ -0,0 +1,11 @@ + + + {{- partial "header.html" . -}} + +
+ {{- partial "head.html" . -}} + {{- block "main" . }}{{- end }} + {{- partial "footer.html" . -}} +
+ + diff --git a/themes/archie/layouts/_default/list.html b/themes/archie/layouts/_default/list.html new file mode 100644 index 0000000..b3dcf6c --- /dev/null +++ b/themes/archie/layouts/_default/list.html @@ -0,0 +1,22 @@ +{{ define "main" }} +{{ if isset .Data "Term" }} +

Entries tagged - "{{ .Data.Term }}"

+{{ else }} +

All articles

+{{ end }} + +
+{{ end }} diff --git a/themes/archie/layouts/_default/single.html b/themes/archie/layouts/_default/single.html new file mode 100644 index 0000000..839bdee --- /dev/null +++ b/themes/archie/layouts/_default/single.html @@ -0,0 +1,35 @@ +{{ define "main" }} +
+
+
+

{{ .Title }}

+ {{ if eq .Params.hideDate nil}} +
Posted on {{ dateFormat "Jan 2, 2006" .Date }}{{ if .Draft }} DRAFT {{ end }}
+ {{ end }} +
+ {{ if isset .Params "tldr" }} +
+ tl;dr: + {{ .Params.tldr }} +
{{ end }} + +
+ {{ .Content }} +
+ + +
+
+{{ end }} diff --git a/themes/archie/layouts/_default/term.html b/themes/archie/layouts/_default/term.html new file mode 100644 index 0000000..d8fd508 --- /dev/null +++ b/themes/archie/layouts/_default/term.html @@ -0,0 +1,32 @@ +{{ define "main" }} +{{ if isset .Data "Term" }} +

Entries tagged - "{{ .Data.Term }}"

+{{ else }} +

All articles

+{{ end }} + +
    + {{- range .Data.Pages -}} + {{- if (not (in (.Site.Params.excludedTypes | default (slice "page")) .Type)) -}} +
  • + + {{.Title}} + + {{ dateFormat "Jan 2, 2006" .Date }} + {{ if .Params.tags }} + + {{ range .Params.tags }} + {{ if ne . "Blog" }} + {{ . }}, + {{ end }} + + {{ end }} + + {{ end }} + {{ if .Draft }} DRAFT {{ end }} + +
  • + {{- end -}} + {{- end -}} +
+{{ end }} diff --git a/themes/archie/layouts/_default/terms.html b/themes/archie/layouts/_default/terms.html new file mode 100644 index 0000000..fea9c2f --- /dev/null +++ b/themes/archie/layouts/_default/terms.html @@ -0,0 +1,20 @@ +{{ define "main" }} +

All tags

+ +{{ $biggest := 1 }} +{{ $smallest := 1 }} +{{ $max := 3 }} +{{ $min := 1 }} +{{ $size := $min }} + +{{ $data := .Data }} +
+
    + {{ range $key, $value := .Data.Terms.ByCount }} + {{ $size := (add (mul (div $value.Count $biggest) (sub $max $min)) $min) }} + {{ $size := (cond (eq $biggest $smallest) $min $size) }} +
  • {{ $value.Name }}
  • + {{ end }} +
+
+{{ end }} diff --git a/themes/archie/layouts/gallery-old/single.html b/themes/archie/layouts/gallery-old/single.html new file mode 100644 index 0000000..96353f1 --- /dev/null +++ b/themes/archie/layouts/gallery-old/single.html @@ -0,0 +1,20 @@ +{{ define "main" }} +
+
+
+

{{ .Title }}

+ +
+ {{ if isset .Params "tldr" }} +
+ tl;dr: + {{ .Params.tldr }} +
{{ end }} + +
+ {{ .Content }} +
+ +
+
+{{ end }} diff --git a/themes/archie/layouts/index.html b/themes/archie/layouts/index.html new file mode 100644 index 0000000..e507d34 --- /dev/null +++ b/themes/archie/layouts/index.html @@ -0,0 +1,41 @@ + + + {{ partial "header.html" . }} + +
+ {{ partial "head.html" . }} + + + +
+
+ {{- if isset .Site.Params "subtitle" -}} +

{{ .Site.Params.Subtitle | markdownify }}

+ {{- end -}} + + +
+

Blog

+ {{ $pages := where (where .Site.RegularPages "Type" "in" .Site.Params.mainSections) ".Params.startpage" "==" true }} + {{ $paginator := .Paginate (where $pages "Params.hidden" "ne" true) }} + {{ range $paginator.Pages }} +
+

{{.Title}}

+ +
+ {{ if isset .Params "description" }} + {{ .Description }} + {{ else }} + {{ .Summary }}… + {{ end }} +
+ Read more ⟶ +
+ {{ end }} + {{ template "partials/paginator.html" . }} +
+ {{ partial "footer.html" . }} +
+ + + diff --git a/themes/archie/layouts/partials/footer.html b/themes/archie/layouts/partials/footer.html new file mode 100644 index 0000000..2f459ec --- /dev/null +++ b/themes/archie/layouts/partials/footer.html @@ -0,0 +1,16 @@ +
+
+{{- range $index, $key := .Site.Params.Social -}} +| +{{- end -}} +kekskurse.de +
+{{ if not .Site.IsServer }} +{{ template "_internal/google_analytics_async.html" . }} +{{ end }} + +{{- if (isset .Site.Params "social") -}} + +{{- end -}} diff --git a/themes/archie/layouts/partials/head.html b/themes/archie/layouts/partials/head.html new file mode 100644 index 0000000..ab3f39d --- /dev/null +++ b/themes/archie/layouts/partials/head.html @@ -0,0 +1,10 @@ +
+ + +
diff --git a/themes/archie/layouts/partials/header.html b/themes/archie/layouts/partials/header.html new file mode 100644 index 0000000..2034c03 --- /dev/null +++ b/themes/archie/layouts/partials/header.html @@ -0,0 +1,54 @@ + + + + {{- $title := ( .Title ) -}} + {{- $siteTitle := ( .Site.Title ) -}} + {{- if .IsHome -}} + {{ $siteTitle }} | Home + {{- else -}} + {{ $title }} - {{ $siteTitle }} + {{- end -}} + + {{- if isset .Site.Params "favicon" -}} + + {{- end -}} + + + + + + + + + + + + + + + + {{ with .OutputFormats.Get "rss" -}} + {{ printf `` .Rel .MediaType.Type .Permalink $.Site.Title | safeHTML }} + {{ end -}} + + {{- template "_internal/opengraph.html" . -}} + {{- template "_internal/twitter_cards.html" . -}} + {{ if and (isset .Site.Params "social") (isset .Site.Params "feathericonscdn") (eq .Site.Params.featherIconsCDN true) -}} + + {{- else if (isset .Site.Params "social") -}} + + {{ end }} + + + + {{- if or (eq .Site.Params.mode "auto") (eq .Site.Params.mode "dark") -}} + + {{- end -}} + {{- range .Site.Params.customJS }} + {{- if or (hasPrefix . "http://") (hasPrefix . "https://") }} + + {{- else }} + + {{- end }} + {{- end }} + \ No newline at end of file diff --git a/themes/archie/layouts/partials/paginator.html b/themes/archie/layouts/partials/paginator.html new file mode 100644 index 0000000..5acc06d --- /dev/null +++ b/themes/archie/layouts/partials/paginator.html @@ -0,0 +1,15 @@ +{{ $pag := $.Paginator }} +{{ if gt $pag.TotalPages 1 }} +
    + + {{ if $pag.HasPrev }} + + {{ end }} + + + {{ if $pag.HasNext }} + + {{ end }} + +
+{{ end }} diff --git a/themes/archie/layouts/shortcodes/callout.html b/themes/archie/layouts/shortcodes/callout.html new file mode 100644 index 0000000..5557aad --- /dev/null +++ b/themes/archie/layouts/shortcodes/callout.html @@ -0,0 +1,6 @@ + +
+
+ 💡 {{ .Get "text" }} +
+
\ No newline at end of file diff --git a/themes/archie/static/css/dark.css b/themes/archie/static/css/dark.css new file mode 100644 index 0000000..f93adf1 --- /dev/null +++ b/themes/archie/static/css/dark.css @@ -0,0 +1,159 @@ +body { + color: white; + background-color: #202124; +} + +::-moz-selection { + background: blue; + color: #fff; + text-shadow: none; +} + +::selection { + background: red; + color: #fff; + text-shadow: none; +} + +hr { + border-top: 3px dotted blue; +} +code { + background-color: lightblue; + color: black; + text-decoration: bold; + padding: 0.1em 0.2em; +} +pre { + background-color: #272822; + line-height: 1.4; + overflow-x: auto; + padding: 1em; +} +blockquote { + border-color: blue; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + color: #ddd; +} +h1::before { + color: var(--darkMaincolor); + content: "# "; +} +h2::before { + color: var(--darkMaincolor); + content: "## "; +} +h3::before { + color: var(--darkMaincolor); + content: "### "; +} +h4::before { + color: var(--darkMaincolor); + content: "#### "; +} +h5::before { + color: var(--darkMaincolor); + content: "##### "; +} +h6::before { + color: var(--darkMaincolor); + content: "###### "; +} + +a { + border-bottom: 3px solid var(--darkMaincolor); + color: inherit; +} +a:hover { + background-color: var(--darkMaincolor); + color: black; +} + +.site-description a { + color: #ddd; +} +.site-description a:hover { + color: black; +} + +.tags a { + border-bottom: 3px solid var(--darkMaincolor); +} +.tags a:hover { + background-color: var(--darkMaincolor); + color: black; +} + +.site-title a { + color: white; + text-decoration: none !important; +} + +.header nav, +.footer { + border-color: #333; +} + +.highlight { + background-color: #333; +} +.soc:hover { + color: black; +} +.draft-label { + color: var(--darkMaincolor); + background-color: blue; +} +.highlight pre code[class=language-javaScript]::before, +.highlight pre code[class="language-js"]::before { + content: "js"; + background: #f7df1e; + color: black; +} +.highlight pre code[class*='language-yml']::before, +.highlight pre code[class*='language-yaml']::before { + content: 'yaml'; + background: #f71e6a; + color: white; +} +.highlight pre code[class*='language-shell']::before, +.highlight pre code[class*='language-bash']::before, +.highlight pre code[class*='language-sh']::before { + content: 'shell'; + background: green; + color:white +} +.highlight pre code[class*='language-json']::before{ + content: 'json'; + background: dodgerblue; + color: #000000 +} +.highlight pre code[class*='language-python']::before, +.highlight pre code[class*='language-py']::before { + content: 'py'; + background: blue; + color: yellow ; +} +.highlight pre code[class*='language-css']::before{ + content: 'css'; + background: cyan; + color: black ; +} +.highlight pre code[class*='language-go']::before{ + content: 'Go'; + background: cyan; + color: royalblue ; +} +.highlight pre code[class*='language-md']::before, +.highlight pre code[class*='language-md']::before{ + content: 'Markdown'; + background: royalblue; + color: whitesmoke ; +} \ No newline at end of file diff --git a/themes/archie/static/css/main.css b/themes/archie/static/css/main.css new file mode 100644 index 0000000..3e6c953 --- /dev/null +++ b/themes/archie/static/css/main.css @@ -0,0 +1,295 @@ +/* Fonts */ +@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@1,500&display=swap'); +/* Markdown */ +:root{ +--maincolor: red; +--bordercl:rebeccapurple; +--callouctcolor:dodgerblue; +--hovercolor:navy; +--darkMaincolor: #50fa7b; +} +html { + color: #232333; + font-family: 'Roboto Mono', monospace; + font-size: 15px; + line-height: 1.6em; +} +body{ + display: block; + margin: 8px; +} +* { + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +::selection { + background: var(--maincolor); + color: #fff; +} + +p { + font-family: 'IBM Plex Sans', sans-serif; + line-height: 1.5; +} + +hr { + border: 0; + border-top: 3px dotted var(--bordercl); + margin: 1em 0; +} + +blockquote { + border-left: 3px solid var(--bordercl); + color: #737373; + margin: 0; + padding-left: 1em; +} + +a { + border-bottom: 3px solid var(--maincolor); + color: inherit; + text-decoration: none; +} +a:hover { + background-color: var(--hovercolor); + color: #fff; +} + +ul { + list-style: none; + padding-left: 2ch; +} +ul li { + text-indent: -2ch; +} +ul li::before { + content: '* '; + font-weight: bold; +} + +/* Images */ +img { + border: 3px solid #ececec; + max-width: 100%; +} + +figure { + box-sizing: border-box; + display: inline-block; + margin: 0; + max-width: 100%; +} + +figure img { + max-height: 500px; +} + +@media screen and (min-width: 600px) { + figure { + padding: 0 40px; + } +} + +figure h4 { + font-size: 1rem; + margin: 0; + margin-bottom: 1em; +} +figure h4::before { + content: '↳ '; +} + +/* Code blocks */ +code { + background-color: #f1f1f1; + padding: .1em .2em; +} + +pre { + background-color: #ececec; + line-height: 1.4; + overflow-x: auto; + padding: 1em; +} + +.highlight pre ::selection { + background: rgba(255, 255, 255, 0.2); + color: inherit; +} + +pre code { + background-color: transparent; + color: inherit; + font-size: 100%; + padding: 0; +} + +/* Containers */ +.content { + margin-bottom: 4em; + margin-left: auto; + margin-right: auto; + max-width: 800px; + padding: 0 1ch; + word-wrap: break-word; +} + +/* Header */ +header { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + margin: 1em 0; +} + +header .main { + font-size: 1.5rem; +} +h1, h2, h3, h4, h5, h6 { + font-size: 1.2rem; + margin-top: 2em; +} + +h1::before { color: var(--maincolor); content: '# '; } +h2::before { color: var(--maincolor); content: '## '; } +h3::before { color: var(--maincolor); content: '### '; } +h4::before { color: var(--maincolor); content: '#### '; } +h5::before { color: var(--maincolor); content: '##### '; } +h6::before { color: var(--maincolor); content: '###### '; } + +/* Footer */ +footer { + margin-top: 1em; +} + +/* Common */ +.title h1 { + margin-bottom: 0; +} + +time { + color: grey; +} + +/* Posts */ +article .title { + margin-bottom: 1em; +} + + +/* Callout */ +.callout { + background-color: var(--callouctcolor); + color: #fff; + padding: 1em; +} + +.callout p { + font-family: 'IBM Plex Mono', monospace; + margin: 0; +} + +.callout a { + border-bottom: 3px solid #fff; +} + +.callout a:hover { + background-color: #fff; + color: var(--callouctcolor); +} + +.site-description { +display: flex; +justify-content: space-between; +} +.tags li::before{ + content: "🏷 "; +} +.tags a{ + border-bottom: 3px solid var(--maincolor); +} +.tags a:hover{ + color:white; + background-color: var(--hovercolor); +} +svg{ + max-height: 15px; +} +.soc:hover{ + color: white; +} +.draft-label{ + color: var(--bordercl); + text-decoration: none; + padding: 2px 4px; + border-radius: 4px; + margin-left: 6px; + background-color: #f9f2f4; +} +.highlight { + position: relative; + -webkit-overflow-scrolling: touch; +} +.highlight pre code[class*="language-"] { + -webkit-overflow-scrolling: touch; +} +.highlight pre code[class*="language-"]::before { + background: black; + border-radius: 0 0 0.25rem 0.25rem; + color: white; + font-size: 12px; + letter-spacing: 0.025rem; + padding: 0.1rem 0.5rem; + position: absolute; + right: 1rem; + text-align: right; + text-transform: uppercase; + top: 0; +} + +.highlight pre code[class=language-javaScript]::before, +.highlight pre code[class="language-js"]::before { +content: "js"; +background: #f7df1e; +color: black; +} +.highlight pre code[class*='language-yml']::before, +.highlight pre code[class*='language-yaml']::before { +content: 'yaml'; +background: #f71e6a; +color: white; +} +.highlight pre code[class*='language-shell']::before, +.highlight pre code[class*='language-bash']::before, +.highlight pre code[class*='language-sh']::before { +content: 'shell'; +background: green; +color:white +} +.highlight pre code[class*='language-json']::before{ +content: 'json'; +background: dodgerblue; + color: #000000 +} +.highlight pre code[class*='language-python']::before, +.highlight pre code[class*='language-py']::before { +content: 'py'; +background: blue; +color: yellow ; +} +.highlight pre code[class*='language-css']::before{ +content: 'css'; +background: cyan; +color: black ; +} +.highlight pre code[class*='language-go']::before{ +content: 'Go'; +background: cyan; +color: royalblue ; +} +.highlight pre code[class*='language-md']::before, +.highlight pre code[class*='language-md']::before{ +content: 'Markdown'; +background: royalblue; +color: whitesmoke ; +} \ No newline at end of file diff --git a/themes/archie/static/js/feather.min.js b/themes/archie/static/js/feather.min.js new file mode 100644 index 0000000..d229492 --- /dev/null +++ b/themes/archie/static/js/feather.min.js @@ -0,0 +1,13 @@ +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.feather=n():e.feather=n()}("undefined"!=typeof self?self:this,function(){return function(e){var n={};function i(l){if(n[l])return n[l].exports;var t=n[l]={i:l,l:!1,exports:{}};return e[l].call(t.exports,t,t.exports,i),t.l=!0,t.exports}return i.m=e,i.c=n,i.d=function(e,n,l){i.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:l})},i.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},i.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(n,"a",n),n},i.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},i.p="",i(i.s=61)}([function(e,n,i){var l=i(20)("wks"),t=i(11),r=i(1).Symbol,o="function"==typeof r;(e.exports=function(e){return l[e]||(l[e]=o&&r[e]||(o?r:t)("Symbol."+e))}).store=l},function(e,n){var i=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=i)},function(e,n){var i=e.exports={version:"2.5.6"};"number"==typeof __e&&(__e=i)},function(e,n){var i={}.hasOwnProperty;e.exports=function(e,n){return i.call(e,n)}},function(e,n,i){e.exports=!i(27)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,n,i){var l=i(13);e.exports=function(e){if(!l(e))throw TypeError(e+" is not an object!");return e}},function(e,n,i){var l=i(5),t=i(56),r=i(55),o=Object.defineProperty;n.f=i(4)?Object.defineProperty:function(e,n,i){if(l(e),n=r(n,!0),l(i),t)try{return o(e,n,i)}catch(e){}if("get"in i||"set"in i)throw TypeError("Accessors not supported!");return"value"in i&&(e[n]=i.value),e}},function(e,n,i){var l=i(6),t=i(12);e.exports=i(4)?function(e,n,i){return l.f(e,n,t(1,i))}:function(e,n,i){return e[n]=i,e}},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var l=o(i(35)),t=o(i(33)),r=o(i(32));function o(e){return e&&e.__esModule?e:{default:e}}n.default=Object.keys(t.default).map(function(e){return new l.default(e,t.default[e],r.default[e])}).reduce(function(e,n){return e[n.name]=n,e},{})},function(e,n,i){var l=i(20)("keys"),t=i(11);e.exports=function(e){return l[e]||(l[e]=t(e))}},function(e,n){e.exports={}},function(e,n){var i=0,l=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++i+l).toString(36))}},function(e,n){e.exports=function(e,n){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:n}}},function(e,n){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,n){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,n){var i=Math.ceil,l=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?l:i)(e)}},function(e,n,i){var l; +/*! + Copyright (c) 2016 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames +*/ +/*! + Copyright (c) 2016 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames +*/ +!function(){"use strict";var i=function(){function e(){}function n(e,n){for(var i=n.length,l=0;l0?t(l(e),9007199254740991):0}},function(e,n){var i={}.toString;e.exports=function(e){return i.call(e).slice(8,-1)}},function(e,n,i){var l=i(48),t=i(14);e.exports=function(e){return l(t(e))}},function(e,n,i){var l=i(54);e.exports=function(e,n,i){if(l(e),void 0===n)return e;switch(i){case 1:return function(i){return e.call(n,i)};case 2:return function(i,l){return e.call(n,i,l)};case 3:return function(i,l,t){return e.call(n,i,l,t)}}return function(){return e.apply(n,arguments)}}},function(e,n,i){var l=i(1),t=i(7),r=i(3),o=i(11)("src"),a=Function.toString,c=(""+a).split("toString");i(2).inspectSource=function(e){return a.call(e)},(e.exports=function(e,n,i,a){var y="function"==typeof i;y&&(r(i,"name")||t(i,"name",n)),e[n]!==i&&(y&&(r(i,o)||t(i,o,e[n]?""+e[n]:c.join(String(n)))),e===l?e[n]=i:a?e[n]?e[n]=i:t(e,n,i):(delete e[n],t(e,n,i)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[o]||a.call(this)})},function(e,n,i){var l=i(13),t=i(1).document,r=l(t)&&l(t.createElement);e.exports=function(e){return r?t.createElement(e):{}}},function(e,n){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,n,i){var l=i(1),t=i(2),r=i(7),o=i(25),a=i(24),c=function(e,n,i){var y,p,h,x,s=e&c.F,u=e&c.G,d=e&c.S,f=e&c.P,v=e&c.B,g=u?l:d?l[n]||(l[n]={}):(l[n]||{}).prototype,m=u?t:t[n]||(t[n]={}),M=m.prototype||(m.prototype={});for(y in u&&(i=n),i)h=((p=!s&&g&&void 0!==g[y])?g:i)[y],x=v&&p?a(h,l):f&&"function"==typeof h?a(Function.call,h):h,g&&o(g,y,h,e&c.U),m[y]!=h&&r(m,y,x),f&&M[y]!=h&&(M[y]=h)};l.core=t,c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,e.exports=c},function(e,n){e.exports=!1},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var l=Object.assign||function(e){for(var n=1;n0&&void 0!==arguments[0]?arguments[0]:{};if("undefined"==typeof document)throw new Error("`feather.replace()` only works in a browser environment.");var n=document.querySelectorAll("[data-feather]");Array.from(n).forEach(function(n){return function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=function(e){return Array.from(e.attributes).reduce(function(e,n){return e[n.name]=n.value,e},{})}(e),o=i["data-feather"];delete i["data-feather"];var a=r.default[o].toSvg(l({},n,i,{class:(0,t.default)(n.class,i.class)})),c=(new DOMParser).parseFromString(a,"image/svg+xml").querySelector("svg");e.parentNode.replaceChild(c,e)}(n,e)})}},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var l,t=i(8),r=(l=t)&&l.__esModule?l:{default:l};n.default=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(console.warn("feather.toSvg() is deprecated. Please use feather.icons[name].toSvg() instead."),!e)throw new Error("The required `key` (icon name) parameter is missing.");if(!r.default[e])throw new Error("No icon matching '"+e+"'. See the complete list of icons at https://feathericons.com");return r.default[e].toSvg(n)}},function(e){e.exports={activity:["pulse","health","action","motion"],airplay:["stream","cast","mirroring"],"alert-circle":["warning"],"alert-octagon":["warning"],"alert-triangle":["warning"],"at-sign":["mention"],award:["achievement","badge"],aperture:["camera","photo"],bell:["alarm","notification"],"bell-off":["alarm","notification","silent"],bluetooth:["wireless"],"book-open":["read"],book:["read","dictionary","booklet","magazine"],bookmark:["read","clip","marker","tag"],briefcase:["work","bag","baggage","folder"],clipboard:["copy"],clock:["time","watch","alarm"],"cloud-drizzle":["weather","shower"],"cloud-lightning":["weather","bolt"],"cloud-rain":["weather"],"cloud-snow":["weather","blizzard"],cloud:["weather"],codepen:["logo"],codesandbox:["logo"],coffee:["drink","cup","mug","tea","cafe","hot","beverage"],command:["keyboard","cmd"],compass:["navigation","safari","travel"],copy:["clone","duplicate"],"corner-down-left":["arrow"],"corner-down-right":["arrow"],"corner-left-down":["arrow"],"corner-left-up":["arrow"],"corner-right-down":["arrow"],"corner-right-up":["arrow"],"corner-up-left":["arrow"],"corner-up-right":["arrow"],"credit-card":["purchase","payment","cc"],crop:["photo","image"],crosshair:["aim","target"],database:["storage"],delete:["remove"],disc:["album","cd","dvd","music"],"dollar-sign":["currency","money","payment"],droplet:["water"],edit:["pencil","change"],"edit-2":["pencil","change"],"edit-3":["pencil","change"],eye:["view","watch"],"eye-off":["view","watch"],"external-link":["outbound"],facebook:["logo"],"fast-forward":["music"],figma:["logo","design","tool"],film:["movie","video"],"folder-minus":["directory"],"folder-plus":["directory"],folder:["directory"],frown:["emoji","face","bad","sad","emotion"],gift:["present","box","birthday","party"],"git-branch":["code","version control"],"git-commit":["code","version control"],"git-merge":["code","version control"],"git-pull-request":["code","version control"],github:["logo","version control"],gitlab:["logo","version control"],global:["world","browser","language","translate"],"hard-drive":["computer","server"],hash:["hashtag","number","pound"],headphones:["music","audio"],heart:["like","love"],"help-circle":["question mark"],hexagon:["shape","node.js","logo"],home:["house"],image:["picture"],inbox:["email"],instagram:["logo","camera"],key:["password","login","authentication"],"life-bouy":["help","life ring","support"],linkedin:["logo"],lock:["security","password"],"log-in":["sign in","arrow"],"log-out":["sign out","arrow"],mail:["email"],"map-pin":["location","navigation","travel","marker"],map:["location","navigation","travel"],maximize:["fullscreen"],"maximize-2":["fullscreen","arrows"],meh:["emoji","face","neutral","emotion"],menu:["bars","navigation","hamburger"],"message-circle":["comment","chat"],"message-square":["comment","chat"],"mic-off":["record"],mic:["record"],minimize:["exit fullscreen"],"minimize-2":["exit fullscreen","arrows"],monitor:["tv"],moon:["dark","night"],"more-horizontal":["ellipsis"],"more-vertical":["ellipsis"],"mouse-pointer":["arrow","cursor"],move:["arrows"],navigation:["location","travel"],"navigation-2":["location","travel"],octagon:["stop"],package:["box"],paperclip:["attachment"],pause:["music","stop"],"pause-circle":["music","stop"],"pen-tool":["vector","drawing"],play:["music","start"],"play-circle":["music","start"],plus:["add","new"],"plus-circle":["add","new"],"plus-square":["add","new"],pocket:["logo","save"],power:["on","off"],radio:["signal"],rewind:["music"],rss:["feed","subscribe"],save:["floppy disk"],search:["find","magnifier","magnifying glass"],send:["message","mail","paper airplane"],settings:["cog","edit","gear","preferences"],shield:["security"],"shield-off":["security"],"shopping-bag":["ecommerce","cart","purchase","store"],"shopping-cart":["ecommerce","cart","purchase","store"],shuffle:["music"],"skip-back":["music"],"skip-forward":["music"],slash:["ban","no"],sliders:["settings","controls"],smile:["emoji","face","happy","good","emotion"],speaker:["music"],star:["bookmark","favorite","like"],sun:["brightness","weather","light"],sunrise:["weather"],sunset:["weather"],tag:["label"],target:["bullseye"],terminal:["code","command line"],"thumbs-down":["dislike","bad"],"thumbs-up":["like","good"],"toggle-left":["on","off","switch"],"toggle-right":["on","off","switch"],trash:["garbage","delete","remove"],"trash-2":["garbage","delete","remove"],triangle:["delta"],truck:["delivery","van","shipping"],twitter:["logo"],umbrella:["rain","weather"],"video-off":["camera","movie","film"],video:["camera","movie","film"],voicemail:["phone"],volume:["music","sound","mute"],"volume-1":["music","sound"],"volume-2":["music","sound"],"volume-x":["music","sound","mute"],watch:["clock","time"],wind:["weather","air"],"x-circle":["cancel","close","delete","remove","times"],"x-octagon":["delete","stop","alert","warning","times"],"x-square":["cancel","close","delete","remove","times"],x:["cancel","close","delete","remove","times"],youtube:["logo","video","play"],"zap-off":["flash","camera","lightning"],zap:["flash","camera","lightning"]}},function(e){e.exports={activity:'',airplay:'',"alert-circle":'',"alert-octagon":'',"alert-triangle":'',"align-center":'',"align-justify":'',"align-left":'',"align-right":'',anchor:'',aperture:'',archive:'',"arrow-down-circle":'',"arrow-down-left":'',"arrow-down-right":'',"arrow-down":'',"arrow-left-circle":'',"arrow-left":'',"arrow-right-circle":'',"arrow-right":'',"arrow-up-circle":'',"arrow-up-left":'',"arrow-up-right":'',"arrow-up":'',"at-sign":'',award:'',"bar-chart-2":'',"bar-chart":'',"battery-charging":'',battery:'',"bell-off":'',bell:'',bluetooth:'',bold:'',"book-open":'',book:'',bookmark:'',box:'',briefcase:'',calendar:'',"camera-off":'',camera:'',cast:'',"check-circle":'',"check-square":'',check:'',"chevron-down":'',"chevron-left":'',"chevron-right":'',"chevron-up":'',"chevrons-down":'',"chevrons-left":'',"chevrons-right":'',"chevrons-up":'',chrome:'',circle:'',clipboard:'',clock:'',"cloud-drizzle":'',"cloud-lightning":'',"cloud-off":'',"cloud-rain":'',"cloud-snow":'',cloud:'',code:'',codepen:'',codesandbox:'',coffee:'',columns:'',command:'',compass:'',copy:'',"corner-down-left":'',"corner-down-right":'',"corner-left-down":'',"corner-left-up":'',"corner-right-down":'',"corner-right-up":'',"corner-up-left":'',"corner-up-right":'',cpu:'',"credit-card":'',crop:'',crosshair:'',database:'',delete:'',disc:'',"dollar-sign":'',"download-cloud":'',download:'',droplet:'',"edit-2":'',"edit-3":'',edit:'',"external-link":'',"eye-off":'',eye:'',facebook:'',"fast-forward":'',feather:'',figma:'',"file-minus":'',"file-plus":'',"file-text":'',file:'',film:'',filter:'',flag:'',"folder-minus":'',"folder-plus":'',folder:'',frown:'',gift:'',"git-branch":'',"git-commit":'',"git-merge":'',"git-pull-request":'',github:'',gitlab:'',globe:'',grid:'',"hard-drive":'',hash:'',headphones:'',heart:'',"help-circle":'',hexagon:'',home:'',image:'',inbox:'',info:'',instagram:'',italic:'',key:'',layers:'',layout:'',"life-buoy":'',"link-2":'',link:'',linkedin:'',list:'',loader:'',lock:'',"log-in":'',"log-out":'',mail:'',"map-pin":'',map:'',"maximize-2":'',maximize:'',meh:'',menu:'',"message-circle":'',"message-square":'',"mic-off":'',mic:'',"minimize-2":'',minimize:'',"minus-circle":'',"minus-square":'',minus:'',monitor:'',moon:'',"more-horizontal":'',"more-vertical":'',"mouse-pointer":'',move:'',music:'',"navigation-2":'',navigation:'',octagon:'',package:'',paperclip:'',"pause-circle":'',pause:'',"pen-tool":'',percent:'',"phone-call":'',"phone-forwarded":'',"phone-incoming":'',"phone-missed":'',"phone-off":'',"phone-outgoing":'',phone:'',"pie-chart":'',"play-circle":'',play:'',"plus-circle":'',"plus-square":'',plus:'',pocket:'',power:'',printer:'',radio:'',"refresh-ccw":'',"refresh-cw":'',repeat:'',rewind:'',"rotate-ccw":'',"rotate-cw":'',rss:'',save:'',scissors:'',search:'',send:'',server:'',settings:'',"share-2":'',share:'',"shield-off":'',shield:'',"shopping-bag":'',"shopping-cart":'',shuffle:'',sidebar:'',"skip-back":'',"skip-forward":'',slack:'',slash:'',sliders:'',smartphone:'',smile:'',speaker:'',square:'',star:'',"stop-circle":'',sun:'',sunrise:'',sunset:'',tablet:'',tag:'',target:'',terminal:'',thermometer:'',"thumbs-down":'',"thumbs-up":'',"toggle-left":'',"toggle-right":'',"trash-2":'',trash:'',trello:'',"trending-down":'',"trending-up":'',triangle:'',truck:'',tv:'',twitter:'',type:'',umbrella:'',underline:'',unlock:'',"upload-cloud":'',upload:'',"user-check":'',"user-minus":'',"user-plus":'',"user-x":'',user:'',users:'',"video-off":'',video:'',voicemail:'',"volume-1":'',"volume-2":'',"volume-x":'',volume:'',watch:'',"wifi-off":'',wifi:'',wind:'',"x-circle":'',"x-octagon":'',"x-square":'',x:'',youtube:'',"zap-off":'',zap:'',"zoom-in":'',"zoom-out":''}},function(e){e.exports={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"}},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var l=Object.assign||function(e){for(var n=1;n2&&void 0!==arguments[2]?arguments[2]:[];!function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}(this,e),this.name=n,this.contents=i,this.tags=t,this.attrs=l({},o.default,{class:"feather feather-"+n})}return t(e,[{key:"toSvg",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return""+this.contents+""}},{key:"toString",value:function(){return this.contents}}]),e}();n.default=c},function(e,n,i){"use strict";var l=o(i(8)),t=o(i(31)),r=o(i(30));function o(e){return e&&e.__esModule?e:{default:e}}e.exports={icons:l.default,toSvg:t.default,replace:r.default}},function(e,n,i){var l=i(0)("iterator"),t=!1;try{var r=[7][l]();r.return=function(){t=!0},Array.from(r,function(){throw 2})}catch(e){}e.exports=function(e,n){if(!n&&!t)return!1;var i=!1;try{var r=[7],o=r[l]();o.next=function(){return{done:i=!0}},r[l]=function(){return o},e(r)}catch(e){}return i}},function(e,n,i){var l=i(22),t=i(0)("toStringTag"),r="Arguments"==l(function(){return arguments}());e.exports=function(e){var n,i,o;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(i=function(e,n){try{return e[n]}catch(e){}}(n=Object(e),t))?i:r?l(n):"Object"==(o=l(n))&&"function"==typeof n.callee?"Arguments":o}},function(e,n,i){var l=i(38),t=i(0)("iterator"),r=i(10);e.exports=i(2).getIteratorMethod=function(e){if(void 0!=e)return e[t]||e["@@iterator"]||r[l(e)]}},function(e,n,i){"use strict";var l=i(6),t=i(12);e.exports=function(e,n,i){n in e?l.f(e,n,t(0,i)):e[n]=i}},function(e,n,i){var l=i(10),t=i(0)("iterator"),r=Array.prototype;e.exports=function(e){return void 0!==e&&(l.Array===e||r[t]===e)}},function(e,n,i){var l=i(5);e.exports=function(e,n,i,t){try{return t?n(l(i)[0],i[1]):n(i)}catch(n){var r=e.return;throw void 0!==r&&l(r.call(e)),n}}},function(e,n,i){"use strict";var l=i(24),t=i(28),r=i(17),o=i(42),a=i(41),c=i(21),y=i(40),p=i(39);t(t.S+t.F*!i(37)(function(e){Array.from(e)}),"Array",{from:function(e){var n,i,t,h,x=r(e),s="function"==typeof this?this:Array,u=arguments.length,d=u>1?arguments[1]:void 0,f=void 0!==d,v=0,g=p(x);if(f&&(d=l(d,u>2?arguments[2]:void 0,2)),void 0==g||s==Array&&a(g))for(i=new s(n=c(x.length));n>v;v++)y(i,v,f?d(x[v],v):x[v]);else for(h=g.call(x),i=new s;!(t=h.next()).done;v++)y(i,v,f?o(h,d,[t.value,v],!0):t.value);return i.length=v,i}})},function(e,n,i){var l=i(3),t=i(17),r=i(9)("IE_PROTO"),o=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=t(e),l(e,r)?e[r]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?o:null}},function(e,n,i){var l=i(1).document;e.exports=l&&l.documentElement},function(e,n,i){var l=i(15),t=Math.max,r=Math.min;e.exports=function(e,n){return(e=l(e))<0?t(e+n,0):r(e,n)}},function(e,n,i){var l=i(23),t=i(21),r=i(46);e.exports=function(e){return function(n,i,o){var a,c=l(n),y=t(c.length),p=r(o,y);if(e&&i!=i){for(;y>p;)if((a=c[p++])!=a)return!0}else for(;y>p;p++)if((e||p in c)&&c[p]===i)return e||p||0;return!e&&-1}}},function(e,n,i){var l=i(22);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==l(e)?e.split(""):Object(e)}},function(e,n,i){var l=i(3),t=i(23),r=i(47)(!1),o=i(9)("IE_PROTO");e.exports=function(e,n){var i,a=t(e),c=0,y=[];for(i in a)i!=o&&l(a,i)&&y.push(i);for(;n.length>c;)l(a,i=n[c++])&&(~r(y,i)||y.push(i));return y}},function(e,n,i){var l=i(49),t=i(19);e.exports=Object.keys||function(e){return l(e,t)}},function(e,n,i){var l=i(6),t=i(5),r=i(50);e.exports=i(4)?Object.defineProperties:function(e,n){t(e);for(var i,o=r(n),a=o.length,c=0;a>c;)l.f(e,i=o[c++],n[i]);return e}},function(e,n,i){var l=i(5),t=i(51),r=i(19),o=i(9)("IE_PROTO"),a=function(){},c=function(){var e,n=i(26)("iframe"),l=r.length;for(n.style.display="none",i(45).appendChild(n),n.src="javascript:",(e=n.contentWindow.document).open(),e.write("