From ca9defd8ab4ce6395137eb84df55bcb7c79bab5a Mon Sep 17 00:00:00 2001 From: christopher-besch Date: Wed, 17 Apr 2024 07:52:23 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20pages=20from=20@=20christopher?= =?UTF-8?q?-besch/homepage@99c2984efac76ed67dbe3be93eef5cab7a011fc1=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 404.html | 4 +- 404/index.html | 4 +- _gatsby/slices/_gatsby-scripts-1.html | 4 +- about/index.html | 4 +- app-5dbf3959725da9267ec3.js | 3 + ...=> app-5dbf3959725da9267ec3.js.LICENSE.txt | 0 ....js.map => app-5dbf3959725da9267ec3.js.map | 2 +- app-9d8349539d1a53475fba.js | 3 - articles/bash_cmds/mp3_tag/index.html | 4 +- articles/compare_view_example/index.html | 4 +- articles/index.html | 4 +- articles/installing_gentoo/index.html | 4 +- articles/lvim_in_distrobox/index.html | 4 +- .../maki_atoms_and_time_travel/index.html | 4 +- articles/manim_intro/index.html | 4 +- articles/revealjs/index.html | 4 +- ...4db44e41913c869de7-2c42feaa3017eda97d1c.js | 2 + ...4e41913c869de7-2c42feaa3017eda97d1c.js.map | 1 + chunk-map.json | 2 +- ...ages-index-tsx-9ee5b786a2e7b89276c9.js.map | 1 - ...rc-pages-index-tsx-ad7c035d82f1d9159f1c.js | 4 +- ...ages-index-tsx-ad7c035d82f1d9159f1c.js.map | 1 + ...pages-projects-tsx-6913816ab911269673c3.js | 2 - ...s-projects-tsx-6913816ab911269673c3.js.map | 1 - ...pages-projects-tsx-cf9175c85e5ff3d0840f.js | 2 + ...s-projects-tsx-cf9175c85e5ff3d0840f.js.map | 1 + ...jects-language-tsx-0097dee73f39d18c6125.js | 2 + ...s-language-tsx-0097dee73f39d18c6125.js.map | 1 + ...jects-language-tsx-cad086841d9502611b71.js | 2 - ...s-language-tsx-cad086841d9502611b71.js.map | 1 - icons/c.svg | 56 +++++++++++++++++ index.html | 6 +- page-data/app-data.json | 2 +- page-data/index/page-data.json | 2 +- page-data/projects/c/page-data.json | 1 + page-data/projects/page-data.json | 2 +- photography/index.html | 4 +- photography/leaving_home/index.html | 4 +- photography/to_vanish/index.html | 4 +- photography/transient/index.html | 4 +- privacy/index.html | 4 +- projects/c/index.html | 57 ++++++++++++++++++ projects/cpp/index.html | 4 +- projects/index.html | 6 +- projects/java/index.html | 4 +- projects/python/index.html | 4 +- projects/rust/index.html | 4 +- projects/typescript/index.html | 4 +- .../05bc9/mold_detect.png | Bin 0 -> 96242 bytes .../0f691/mold_detect.webp | Bin 0 -> 11780 bytes .../20203/mold_detect.webp | Bin 0 -> 4410 bytes .../44573/mold_detect.webp | Bin 0 -> 28890 bytes .../5c8e9/mold_detect.png | Bin 0 -> 11048 bytes .../f8232/mold_detect.png | Bin 0 -> 32670 bytes webpack-runtime-3f948c29a210e4747687.js | 2 + webpack-runtime-3f948c29a210e4747687.js.map | 1 + webpack-runtime-fb877d2ab59b330d26bb.js | 2 - webpack-runtime-fb877d2ab59b330d26bb.js.map | 1 - webpack.stats.json | 2 +- 59 files changed, 188 insertions(+), 71 deletions(-) create mode 100644 app-5dbf3959725da9267ec3.js rename app-9d8349539d1a53475fba.js.LICENSE.txt => app-5dbf3959725da9267ec3.js.LICENSE.txt (100%) rename app-9d8349539d1a53475fba.js.map => app-5dbf3959725da9267ec3.js.map (99%) delete mode 100644 app-9d8349539d1a53475fba.js create mode 100644 c804ae579c3e2b4740c8c44db44e41913c869de7-2c42feaa3017eda97d1c.js create mode 100644 c804ae579c3e2b4740c8c44db44e41913c869de7-2c42feaa3017eda97d1c.js.map delete mode 100644 component---src-pages-index-tsx-9ee5b786a2e7b89276c9.js.map rename component---src-pages-index-tsx-9ee5b786a2e7b89276c9.js => component---src-pages-index-tsx-ad7c035d82f1d9159f1c.js (75%) create mode 100644 component---src-pages-index-tsx-ad7c035d82f1d9159f1c.js.map delete mode 100644 component---src-pages-projects-tsx-6913816ab911269673c3.js delete mode 100644 component---src-pages-projects-tsx-6913816ab911269673c3.js.map create mode 100644 component---src-pages-projects-tsx-cf9175c85e5ff3d0840f.js create mode 100644 component---src-pages-projects-tsx-cf9175c85e5ff3d0840f.js.map create mode 100644 component---src-templates-projects-language-tsx-0097dee73f39d18c6125.js create mode 100644 component---src-templates-projects-language-tsx-0097dee73f39d18c6125.js.map delete mode 100644 component---src-templates-projects-language-tsx-cad086841d9502611b71.js delete mode 100644 component---src-templates-projects-language-tsx-cad086841d9502611b71.js.map create mode 100644 icons/c.svg create mode 100644 page-data/projects/c/page-data.json create mode 100644 projects/c/index.html create mode 100644 static/e3a1143657c343da032639c75f73878a/05bc9/mold_detect.png create mode 100644 static/e3a1143657c343da032639c75f73878a/0f691/mold_detect.webp create mode 100644 static/e3a1143657c343da032639c75f73878a/20203/mold_detect.webp create mode 100644 static/e3a1143657c343da032639c75f73878a/44573/mold_detect.webp create mode 100644 static/e3a1143657c343da032639c75f73878a/5c8e9/mold_detect.png create mode 100644 static/e3a1143657c343da032639c75f73878a/f8232/mold_detect.png create mode 100644 webpack-runtime-3f948c29a210e4747687.js create mode 100644 webpack-runtime-3f948c29a210e4747687.js.map delete mode 100644 webpack-runtime-fb877d2ab59b330d26bb.js delete mode 100644 webpack-runtime-fb877d2ab59b330d26bb.js.map diff --git a/404.html b/404.html index d3781400..1c2cabf0 100644 --- a/404.html +++ b/404.html @@ -52,6 +52,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/404/index.html b/404/index.html index fa61daba..8356bcbb 100644 --- a/404/index.html +++ b/404/index.html @@ -52,6 +52,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/_gatsby/slices/_gatsby-scripts-1.html b/_gatsby/slices/_gatsby-scripts-1.html index 1b4af056..787910d1 100644 --- a/_gatsby/slices/_gatsby-scripts-1.html +++ b/_gatsby/slices/_gatsby-scripts-1.html @@ -2,6 +2,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/about/index.html b/about/index.html index ae678253..d450767a 100644 --- a/about/index.html +++ b/about/index.html @@ -202,6 +202,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app-5dbf3959725da9267ec3.js b/app-5dbf3959725da9267ec3.js new file mode 100644 index 00000000..bced3978 --- /dev/null +++ b/app-5dbf3959725da9267ec3.js @@ -0,0 +1,3 @@ +/*! For license information please see app-5dbf3959725da9267ec3.js.LICENSE.txt */ +(self.webpackChunkhomepage=self.webpackChunkhomepage||[]).push([[143],{4506:function(e,t){"use strict";t.H=void 0;t.H=(e,t="always")=>{const n=e.endsWith(".html"),r=e.endsWith(".xml"),o=e.endsWith(".pdf");return"/"===e?e:((n||r||o)&&(t="never"),"always"===t?e.endsWith("/")?e:`${e}/`:"never"===t&&e.endsWith("/")?e.slice(0,-1):e)}},9679:function(e,t,n){"use strict";t.$C=void 0;var r=n(1432);t.$C=r.ScrollHandler,n(4855).useScrollRestoration},1432:function(e,t,n){"use strict";var r=n(4836);t.__esModule=!0,t.ScrollHandler=t.ScrollContext=void 0;var o=r(n(6115)),a=r(n(7867)),s=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=l(t);if(n&&n.has(e))return n.get(e);var r={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var s=o?Object.getOwnPropertyDescriptor(e,a):null;s&&(s.get||s.set)?Object.defineProperty(r,a,s):r[a]=e[a]}r.default=e,n&&n.set(e,r);return r}(n(7294)),i=r(n(5697)),c=n(1142);function l(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(l=function(e){return e?n:t})(e)}var u=s.createContext(new c.SessionStorage);t.ScrollContext=u,u.displayName="GatsbyScrollContext";var p=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a{}},7730:function(e,t){"use strict";t.__esModule=!0,t.getForwards=function(e){return null==e?void 0:e.flatMap((e=>(null==e?void 0:e.forward)||[]))}},2731:function(e,t,n){"use strict";t.__esModule=!0,t.injectPartytownSnippet=function(e){if(!e.length)return;const t=document.querySelector("script[data-partytown]"),n=document.querySelector('iframe[src*="~partytown/partytown-sandbox-sw"]');t&&t.remove();n&&n.remove();const a=(0,o.getForwards)(e),s=document.createElement("script");s.dataset.partytown="",s.innerHTML=(0,r.partytownSnippet)({forward:a}),document.head.appendChild(s)};var r=n(2911),o=n(7730)},5418:function(e,t,n){t.components={"component---src-pages-404-tsx":()=>Promise.all([n.e(532),n.e(218)]).then(n.bind(n,2513)),"component---src-pages-about-tsx":()=>Promise.all([n.e(532),n.e(49)]).then(n.bind(n,3317)),"component---src-pages-articles-tsx":()=>Promise.all([n.e(532),n.e(821),n.e(339)]).then(n.bind(n,42)),"component---src-pages-index-tsx":()=>Promise.all([n.e(532),n.e(821),n.e(691)]).then(n.bind(n,4329)),"component---src-pages-photography-index-tsx":()=>Promise.all([n.e(532),n.e(821),n.e(412)]).then(n.bind(n,7081)),"component---src-pages-photography-leaving-home-tsx":()=>Promise.all([n.e(532),n.e(821),n.e(370)]).then(n.bind(n,7733)),"component---src-pages-photography-to-vanish-tsx":()=>Promise.all([n.e(532),n.e(821),n.e(488)]).then(n.bind(n,4319)),"component---src-pages-photography-transient-tsx":()=>Promise.all([n.e(532),n.e(821),n.e(398)]).then(n.bind(n,2601)),"component---src-pages-privacy-tsx":()=>Promise.all([n.e(532),n.e(831)]).then(n.bind(n,9858)),"component---src-pages-projects-tsx":()=>Promise.all([n.e(532),n.e(821),n.e(9),n.e(317)]).then(n.bind(n,7166)),"component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md":()=>Promise.all([n.e(532),n.e(566),n.e(129)]).then(n.bind(n,9925)),"component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md":()=>Promise.all([n.e(532),n.e(566),n.e(248)]).then(n.bind(n,2906)),"component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md":()=>Promise.all([n.e(532),n.e(566),n.e(964)]).then(n.bind(n,3502)),"component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md":()=>Promise.all([n.e(532),n.e(566),n.e(657)]).then(n.bind(n,2285)),"component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md":()=>Promise.all([n.e(532),n.e(566),n.e(994)]).then(n.bind(n,6201)),"component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md":()=>Promise.all([n.e(532),n.e(566),n.e(63)]).then(n.bind(n,4013)),"component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md":()=>Promise.all([n.e(532),n.e(566),n.e(144)]).then(n.bind(n,8533)),"component---src-templates-projects-language-tsx":()=>Promise.all([n.e(532),n.e(821),n.e(9),n.e(18)]).then(n.bind(n,3983))}},4741:function(e,t,n){e.exports=[{plugin:n(2154),options:{plugins:[],maxWidth:8e3,linkImagesToOriginal:!0,showCaptions:!1,markdownCaptions:!1,backgroundColor:"white",quality:50,withWebp:!1,withAvif:!1,loading:"lazy",decoding:"async",disableBgImageOnAlpha:!1,disableBgImage:!1}},{plugin:n(9650),options:{plugins:[],isIconAfterHeader:!1,offsetY:0,className:"anchor"}},{plugin:n(4094),options:{plugins:[]}}]},3092:function(e,t,n){const r=n(4741),{getResourceURLsForPathname:o,loadPage:a,loadPageSync:s}=n(1975).jN;t.h=function(e,t,n,i){void 0===t&&(t={});let c=r.map((n=>{if(!n.plugin[e])return;t.getResourceURLsForPathname=o,t.loadPage=a,t.loadPageSync=s;const r=n.plugin[e](t,n.options);return r&&i&&(t=i({args:t,result:r,plugin:n})),r}));return c=c.filter((e=>void 0!==e)),c.length>0?c:n?[n]:[]},t.I=(e,t,n)=>r.reduce(((n,r)=>r.plugin[e]?n.then((()=>r.plugin[e](t,r.options))):n),Promise.resolve())},4004:function(e,t){},8299:function(e,t,n){"use strict";n.d(t,{Z:function(){return r}});var r=function(e){return e=e||Object.create(null),{on:function(t,n){(e[t]||(e[t]=[])).push(n)},off:function(t,n){e[t]&&e[t].splice(e[t].indexOf(n)>>>0,1)},emit:function(t,n){(e[t]||[]).slice().map((function(e){e(n)})),(e["*"]||[]).slice().map((function(e){e(t,n)}))}}}()},7802:function(e,t,n){"use strict";n.d(t,{UD:function(){return d},Cj:function(){return f},GA:function(){return h},DS:function(){return p}});var r=n(7896),o=n(1505),a=e=>{if(void 0===e)return e;let[t,n=""]=e.split("?");return n&&(n="?"+n),"/"===t?"/"+n:"/"===t.charAt(t.length-1)?t.slice(0,-1)+n:t+n},s=n(6073);const i=new Map;let c=[];const l=e=>{let t=e;if(-1!==e.indexOf("?")){const[n,r]=e.split("?");t=n+"?"+encodeURIComponent(r)}const n=decodeURIComponent(t);return(0,o.Z)(n,decodeURIComponent("")).split("#")[0]};function u(e){return e.startsWith("/")||e.startsWith("https://")||e.startsWith("http://")?e:new URL(e,window.location.href+(window.location.href.endsWith("/")?"":"/")).pathname}const p=e=>{c=e},d=e=>{const t=m(e),n=c.map((e=>{let{path:t,matchPath:n}=e;return{path:n,originalPath:t}})),o=(0,r.pick)(n,t);return o?a(o.route.originalPath):null},h=e=>{const t=m(e),n=c.map((e=>{let{path:t,matchPath:n}=e;return{path:n,originalPath:t}})),o=(0,r.pick)(n,t);return o?o.params:{}},f=e=>{const t=l(u(e));if(i.has(t))return i.get(t);const n=(0,s.J)(e);if(n)return f(n.toPath);let r=d(t);return r||(r=m(e)),i.set(t,r),r},m=e=>{let t=l(u(e));return"/index.html"===t&&(t="/"),t=a(t),t}},4160:function(e,t,n){"use strict";n.d(t,{rU:function(){return o.rU},B9:function(){return a.B9},K2:function(){return a.K2}});var r=n(1975),o=(n(2743),n(9679),n(1562)),a=n(1757);n(7294),n(4004),n(8995);r.ZP.enqueue},1975:function(e,t,n){"use strict";n.d(t,{uQ:function(){return p},kL:function(){return E},ZP:function(){return R},Nt:function(){return S},hs:function(){return C},jN:function(){return _},N1:function(){return P}});var r=n(1721),o=n(5785),a=n(904);const s=function(e){if("undefined"==typeof document)return!1;const t=document.createElement("link");try{if(t.relList&&"function"==typeof t.relList.supports)return t.relList.supports(e)}catch(n){return!1}return!1}("prefetch")?function(e,t){return new Promise(((n,r)=>{if("undefined"==typeof document)return void r();const o=document.createElement("link");o.setAttribute("rel","prefetch"),o.setAttribute("href",e),Object.keys(t).forEach((e=>{o.setAttribute(e,t[e])})),o.onload=n,o.onerror=r;(document.getElementsByTagName("head")[0]||document.getElementsByName("script")[0].parentNode).appendChild(o)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.onload=()=>{200===r.status?t():n()},r.send(null)}))},i={};var c=function(e,t){return new Promise((n=>{i[e]?n():s(e,t).then((()=>{n(),i[e]=!0})).catch((()=>{}))}))},l=n(8299),u=n(7802);const p={Error:"error",Success:"success"},d=e=>{const[t,n]=e.split("?");var r;return"/page-data/"+("/"===t?"index":(r="/"===(r=t)[0]?r.slice(1):r).endsWith("/")?r.slice(0,-1):r)+"/page-data.json"+(n?"?"+n:"")},h=e=>e.startsWith("//");function f(e,t){return void 0===t&&(t="GET"),new Promise((n=>{const r=new XMLHttpRequest;r.open(t,e,!0),r.onreadystatechange=()=>{4==r.readyState&&n(r)},r.send(null)}))}const m=/bot|crawler|spider|crawling/i,g=function(e,t,n){var r;void 0===t&&(t=null);const o={componentChunkName:e.componentChunkName,path:e.path,webpackCompilationHash:e.webpackCompilationHash,matchPath:e.matchPath,staticQueryHashes:e.staticQueryHashes,getServerDataError:e.getServerDataError,slicesMap:null!==(r=e.slicesMap)&&void 0!==r?r:{}};return{component:t,head:n,json:e.result,page:o}};function v(e){return new Promise((t=>{try{const n=e.readRoot();t(n)}catch(n){if(!Object.hasOwnProperty.call(n,"_response")||!Object.hasOwnProperty.call(n,"_status"))throw n;setTimeout((()=>{v(e).then(t)}),200)}}))}let y=function(){function e(e,t){this.inFlightNetworkRequests=new Map,this.pageDb=new Map,this.inFlightDb=new Map,this.staticQueryDb={},this.pageDataDb=new Map,this.partialHydrationDb=new Map,this.slicesDataDb=new Map,this.sliceInflightDb=new Map,this.slicesDb=new Map,this.isPrefetchQueueRunning=!1,this.prefetchQueued=[],this.prefetchTriggered=new Set,this.prefetchCompleted=new Set,this.loadComponent=e,(0,u.DS)(t)}var t=e.prototype;return t.memoizedGet=function(e){let t=this.inFlightNetworkRequests.get(e);return t||(t=f(e,"GET"),this.inFlightNetworkRequests.set(e,t)),t.then((t=>(this.inFlightNetworkRequests.delete(e),t))).catch((t=>{throw this.inFlightNetworkRequests.delete(e),t}))},t.setApiRunner=function(e){this.apiRunner=e,this.prefetchDisabled=e("disableCorePrefetching").some((e=>e))},t.fetchPageDataJson=function(e){const{pagePath:t,retries:n=0}=e,r=d(t);return this.memoizedGet(r).then((r=>{const{status:o,responseText:a}=r;if(200===o)try{const n=JSON.parse(a);if(void 0===n.path)throw new Error("not a valid pageData response");const r=t.split("?")[1];return r&&!n.path.includes(r)&&(n.path+="?"+r),Object.assign(e,{status:p.Success,payload:n})}catch(s){}return 404===o||200===o?"/404.html"===t||"/500.html"===t?Object.assign(e,{status:p.Error}):this.fetchPageDataJson(Object.assign(e,{pagePath:"/404.html",notFound:!0})):500===o?this.fetchPageDataJson(Object.assign(e,{pagePath:"/500.html",internalServerError:!0})):n<3?this.fetchPageDataJson(Object.assign(e,{retries:n+1})):Object.assign(e,{status:p.Error})}))},t.fetchPartialHydrationJson=function(e){const{pagePath:t,retries:n=0}=e,r=d(t).replace(".json","-rsc.json");return this.memoizedGet(r).then((r=>{const{status:o,responseText:a}=r;if(200===o)try{return Object.assign(e,{status:p.Success,payload:a})}catch(s){}return 404===o||200===o?"/404.html"===t||"/500.html"===t?Object.assign(e,{status:p.Error}):this.fetchPartialHydrationJson(Object.assign(e,{pagePath:"/404.html",notFound:!0})):500===o?this.fetchPartialHydrationJson(Object.assign(e,{pagePath:"/500.html",internalServerError:!0})):n<3?this.fetchPartialHydrationJson(Object.assign(e,{retries:n+1})):Object.assign(e,{status:p.Error})}))},t.loadPageDataJson=function(e){const t=(0,u.Cj)(e);if(this.pageDataDb.has(t)){const e=this.pageDataDb.get(t);return Promise.resolve(e)}return this.fetchPageDataJson({pagePath:t}).then((e=>(this.pageDataDb.set(t,e),e)))},t.loadPartialHydrationJson=function(e){const t=(0,u.Cj)(e);if(this.partialHydrationDb.has(t)){const e=this.partialHydrationDb.get(t);return Promise.resolve(e)}return this.fetchPartialHydrationJson({pagePath:t}).then((e=>(this.partialHydrationDb.set(t,e),e)))},t.loadSliceDataJson=function(e){if(this.slicesDataDb.has(e)){const t=this.slicesDataDb.get(e);return Promise.resolve({sliceName:e,jsonPayload:t})}return f("/slice-data/"+e+".json","GET").then((t=>{const n=JSON.parse(t.responseText);return this.slicesDataDb.set(e,n),{sliceName:e,jsonPayload:n}}))},t.findMatchPath=function(e){return(0,u.UD)(e)},t.loadPage=function(e){const t=(0,u.Cj)(e);if(this.pageDb.has(t)){const e=this.pageDb.get(t);return e.error?Promise.resolve({error:e.error,status:e.status}):Promise.resolve(e.payload)}if(this.inFlightDb.has(t))return this.inFlightDb.get(t);const n=[this.loadAppData(),this.loadPageDataJson(t)];const r=Promise.all(n).then((e=>{const[n,r,s]=e;if(r.status===p.Error||(null==s?void 0:s.status)===p.Error)return{status:p.Error};let i=r.payload;const{componentChunkName:c,staticQueryHashes:u=[],slicesMap:d={}}=i,h={},f=Array.from(new Set(Object.values(d))),m=e=>{if(this.slicesDb.has(e.name))return this.slicesDb.get(e.name);if(this.sliceInflightDb.has(e.name))return this.sliceInflightDb.get(e.name);const t=this.loadComponent(e.componentChunkName).then((t=>{return{component:(n=t,n&&n.default||n),sliceContext:e.result.sliceContext,data:e.result.data};var n}));return this.sliceInflightDb.set(e.name,t),t.then((t=>{this.slicesDb.set(e.name,t),this.sliceInflightDb.delete(e.name)})),t};return Promise.all(f.map((e=>this.loadSliceDataJson(e)))).then((e=>{const d=[],f=(0,o.Z)(u);for(const{jsonPayload:t,sliceName:n}of Object.values(e)){d.push({name:n,...t});for(const e of t.staticQueryHashes)f.includes(e)||f.push(e)}const y=[Promise.all(d.map(m)),this.loadComponent(c,"head")];y.push(this.loadComponent(c));const w=Promise.all(y).then((e=>{const[t,o,c]=e;h.createdAt=new Date;for(const n of t)(!n||n instanceof Error)&&(h.status=p.Error,h.error=n);let l;if((!c||c instanceof Error)&&(h.status=p.Error,h.error=c),h.status!==p.Error){if(h.status=p.Success,!0!==r.notFound&&!0!==(null==s?void 0:s.notFound)||(h.notFound=!0),i=Object.assign(i,{webpackCompilationHash:n?n.webpackCompilationHash:""}),"string"==typeof(null==s?void 0:s.payload)){l=g(i,null,o),l.partialHydration=s.payload;const e=new ReadableStream({start(e){const t=new TextEncoder;e.enqueue(t.encode(s.payload))},pull(e){e.close()},cancel(){}});return v((0,a.createFromReadableStream)(e)).then((e=>(l.partialHydration=e,l)))}l=g(i,c,o)}return l})),b=Promise.all(f.map((e=>{if(this.staticQueryDb[e]){const t=this.staticQueryDb[e];return{staticQueryHash:e,jsonPayload:t}}return this.memoizedGet("/page-data/sq/d/"+e+".json").then((t=>{const n=JSON.parse(t.responseText);return{staticQueryHash:e,jsonPayload:n}})).catch((()=>{throw new Error("We couldn't load \"/page-data/sq/d/"+e+'.json"')}))}))).then((e=>{const t={};return e.forEach((e=>{let{staticQueryHash:n,jsonPayload:r}=e;t[n]=r,this.staticQueryDb[n]=r})),t}));return Promise.all([w,b]).then((e=>{let n,[r,o]=e;return r&&(n={...r,staticQueryResults:o},h.payload=n,l.Z.emit("onPostLoadPageResources",{page:n,pageResources:n})),this.pageDb.set(t,h),h.error?{error:h.error,status:h.status}:n})).catch((e=>({error:e,status:p.Error})))}))}));return r.then((()=>{this.inFlightDb.delete(t)})).catch((e=>{throw this.inFlightDb.delete(t),e})),this.inFlightDb.set(t,r),r},t.loadPageSync=function(e,t){void 0===t&&(t={});const n=(0,u.Cj)(e);if(this.pageDb.has(n)){var r;const e=this.pageDb.get(n);if(e.payload)return e.payload;if(null!==(r=t)&&void 0!==r&&r.withErrorDetails)return{error:e.error,status:e.status}}},t.shouldPrefetch=function(e){return!!(()=>{if("connection"in navigator&&void 0!==navigator.connection){if((navigator.connection.effectiveType||"").includes("2g"))return!1;if(navigator.connection.saveData)return!1}return!0})()&&((!navigator.userAgent||!m.test(navigator.userAgent))&&!this.pageDb.has(e))},t.prefetch=function(e){if(!this.shouldPrefetch(e))return{then:e=>e(!1),abort:()=>{}};if(this.prefetchTriggered.has(e))return{then:e=>e(!0),abort:()=>{}};const t={resolve:null,reject:null,promise:null};t.promise=new Promise(((e,n)=>{t.resolve=e,t.reject=n})),this.prefetchQueued.push([e,t]);const n=new AbortController;return n.signal.addEventListener("abort",(()=>{const t=this.prefetchQueued.findIndex((t=>{let[n]=t;return n===e}));-1!==t&&this.prefetchQueued.splice(t,1)})),this.isPrefetchQueueRunning||(this.isPrefetchQueueRunning=!0,setTimeout((()=>{this._processNextPrefetchBatch()}),3e3)),{then:(e,n)=>t.promise.then(e,n),abort:n.abort.bind(n)}},t._processNextPrefetchBatch=function(){(window.requestIdleCallback||(e=>setTimeout(e,0)))((()=>{const e=this.prefetchQueued.splice(0,4),t=Promise.all(e.map((e=>{let[t,n]=e;return this.prefetchTriggered.has(t)||(this.apiRunner("onPrefetchPathname",{pathname:t}),this.prefetchTriggered.add(t)),this.prefetchDisabled?n.resolve(!1):this.doPrefetch((0,u.Cj)(t)).then((()=>{this.prefetchCompleted.has(t)||(this.apiRunner("onPostPrefetchPathname",{pathname:t}),this.prefetchCompleted.add(t)),n.resolve(!0)}))})));this.prefetchQueued.length?t.then((()=>{setTimeout((()=>{this._processNextPrefetchBatch()}),3e3)})):this.isPrefetchQueueRunning=!1}))},t.doPrefetch=function(e){const t=d(e);return c(t,{crossOrigin:"anonymous",as:"fetch"}).then((()=>this.loadPageDataJson(e)))},t.hovering=function(e){this.loadPage(e)},t.getResourceURLsForPathname=function(e){const t=(0,u.Cj)(e),n=this.pageDataDb.get(t);if(n){const e=g(n.payload);return[].concat((0,o.Z)(w(e.page.componentChunkName)),[d(t)])}return null},t.isPageNotFound=function(e){const t=(0,u.Cj)(e),n=this.pageDb.get(t);return!n||n.notFound},t.loadAppData=function(e){return void 0===e&&(e=0),this.memoizedGet("/page-data/app-data.json").then((t=>{const{status:n,responseText:r}=t;let o;if(200!==n&&e<3)return this.loadAppData(e+1);if(200===n)try{const e=JSON.parse(r);if(void 0===e.webpackCompilationHash)throw new Error("not a valid app-data response");o=e}catch(a){}return o}))},e}();const w=e=>(window.___chunkMapping[e]||[]).map((e=>""+e));let b,E=function(e){function t(t,n,r){var o;return o=e.call(this,(function(e,n){if(void 0===n&&(n="components"),!t[n="components"][e])throw new Error("We couldn't find the correct component chunk with the name \""+e+'"');return t[n][e]().catch((e=>e))}),n)||this,r&&o.pageDataDb.set((0,u.Cj)(r.path),{pagePath:r.path,payload:r,status:"success"}),o}(0,r.Z)(t,e);var n=t.prototype;return n.doPrefetch=function(t){return e.prototype.doPrefetch.call(this,t).then((e=>{if(e.status!==p.Success)return Promise.resolve();const t=e.payload,n=t.componentChunkName,r=w(n);return Promise.all(r.map(c)).then((()=>t))}))},n.loadPageDataJson=function(t){return e.prototype.loadPageDataJson.call(this,t).then((e=>e.notFound?h(t)?e:f(t,"HEAD").then((t=>200===t.status?{status:p.Error}:e)):e))},n.loadPartialHydrationJson=function(t){return e.prototype.loadPartialHydrationJson.call(this,t).then((e=>e.notFound?h(t)?e:f(t,"HEAD").then((t=>200===t.status?{status:p.Error}:e)):e))},t}(y);const P=e=>{b=e},_={enqueue:e=>b.prefetch(e),getResourceURLsForPathname:e=>b.getResourceURLsForPathname(e),loadPage:e=>b.loadPage(e),loadPageSync:function(e,t){return void 0===t&&(t={}),b.loadPageSync(e,t)},prefetch:e=>b.prefetch(e),isPageNotFound:e=>b.isPageNotFound(e),hovering:e=>b.hovering(e),loadAppData:()=>b.loadAppData()};var R=_;function C(){return b?b.staticQueryDb:{}}function S(){return b?b.slicesDb:{}}},4779:function(e,t,n){"use strict";n.d(t,{Z:function(){return R}});var r=n(7294),o=n(5697),a=n.n(o),s=n(3092),i=n(7802),c=n(5785),l=n(4160),u=n(7896),p=n(4941);function d(e){let{children:t,callback:n}=e;return(0,r.useEffect)((()=>{n()})),t}const h=["link","meta","style","title","base","noscript","script","html","body"];function f(e,t){if(e instanceof HTMLElement&&t instanceof HTMLElement){const n=t.getAttribute("nonce");if(n&&!e.getAttribute("nonce")){const r=t.cloneNode(!0);return r.setAttribute("nonce",""),r.nonce=n,n===e.nonce&&e.isEqualNode(r)}}return e.isEqualNode(t)}function m(e,t){void 0===t&&(t={html:{},body:{}});const n=new Map,r=[];for(const l of e.childNodes){var o,a;const e=l.nodeName.toLowerCase(),u=null===(o=l.attributes)||void 0===o||null===(a=o.id)||void 0===a?void 0:a.value;if(y(l)){if(v(e))if("html"===e||"body"===e)for(const n of l.attributes){const r="style"===n.name;var s;if(t[e]={...t[e]},r||(t[e][n.name]=n.value),r)t[e].style=""+(null!==(s=t[e])&&void 0!==s&&s.style?t[e].style:"")+n.value+" "}else{let e=l.cloneNode(!0);if(e.setAttribute("data-gatsby-head",!0),"script"===e.nodeName.toLowerCase()&&(e=g(e)),u)if(n.has(u)){var i;const t=n.get(u);null===(i=r[t].parentNode)||void 0===i||i.removeChild(r[t]),r[t]=e}else r.push(e),n.set(u,r.length-1);else r.push(e)}l.childNodes.length&&r.push.apply(r,(0,c.Z)(m(l,t).validHeadNodes))}}return{validHeadNodes:r,htmlAndBodyAttributes:t}}function g(e){const t=document.createElement("script");for(const n of e.attributes)t.setAttribute(n.name,n.value);return t.innerHTML=e.innerHTML,t}function v(e){return h.includes(e)}function y(e){return 1===e.nodeType}const w=document.createElement("div"),b={html:[],body:[]},E=()=>{var e;const{validHeadNodes:t,htmlAndBodyAttributes:n}=m(w);b.html=Object.keys(n.html),b.body=Object.keys(n.body),function(e){if(!e)return;const{html:t,body:n}=e,r=document.querySelector("html");r&&Object.entries(t).forEach((e=>{let[t,n]=e;r.setAttribute(t,n)}));const o=document.querySelector("body");o&&Object.entries(n).forEach((e=>{let[t,n]=e;o.setAttribute(t,n)}))}(n);const r=document.querySelectorAll("[data-gatsby-head]");var o;if(0===r.length)return void(o=document.head).append.apply(o,(0,c.Z)(t));const a=[];!function(e){let{oldNodes:t,newNodes:n,onStale:r,onNew:o}=e;for(const a of t){const e=n.findIndex((e=>f(e,a)));-1===e?r(a):n.splice(e,1)}for(const a of n)o(a)}({oldNodes:r,newNodes:t,onStale:e=>e.parentNode.removeChild(e),onNew:e=>a.push(e)}),(e=document.head).append.apply(e,a)};function P(e){let{pageComponent:t,staticQueryResults:n,pageComponentProps:o}=e;(0,r.useEffect)((()=>{if(null!=t&&t.Head){!function(e){if("function"!=typeof e)throw new Error('Expected "Head" export to be a function got "'+typeof e+'".')}(t.Head);const{render:a}=(0,p.U)(),i=r.createElement(t.Head,{location:{pathname:(e=o).location.pathname},params:e.params,data:e.data||{},serverData:e.serverData,pageContext:e.pageContext}),c=(0,s.h)("wrapRootElement",{element:i},i,(e=>{let{result:t}=e;return{element:t}})).pop();a(r.createElement(d,{callback:E},r.createElement(l.B9.Provider,{value:n},r.createElement(u.LocationProvider,null,c))),w)}var e;return()=>{!function(){const e=document.querySelectorAll("[data-gatsby-head]");for(const t of e)t.parentNode.removeChild(t)}(),function(e){if(!e)return;const{html:t,body:n}=e;if(t){const e=document.querySelector("html");t.forEach((t=>{e&&e.removeAttribute(t)}))}if(n){const e=document.querySelector("body");n.forEach((t=>{e&&e.removeAttribute(t)}))}}(b)}}))}function _(e){const t={...e,params:{...(0,i.GA)(e.location.pathname),...e.pageResources.json.pageContext.__params}};let n;var o;n=e.pageResources.partialHydration?e.pageResources.partialHydration:(0,r.createElement)((o=e.pageResources.component)&&o.default||o,{...t,key:e.path||e.pageResources.page.path});P({pageComponent:e.pageResources.head,staticQueryResults:e.pageResources.staticQueryResults,pageComponentProps:t});return(0,s.h)("wrapPageElement",{element:n,props:t},n,(e=>{let{result:n}=e;return{element:n,props:t}})).pop()}_.propTypes={location:a().object.isRequired,pageResources:a().object.isRequired,data:a().object,pageContext:a().object.isRequired};var R=_},5824:function(e,t,n){"use strict";var r=n(1721),o=n(3092),a=n(7294),s=n(7896),i=n(9679),c=n(1757),l=n(8995),u=n(1975),p=n(6073),d=n(8299);const h={id:"gatsby-announcer",style:{position:"absolute",top:0,width:1,height:1,padding:0,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",border:0},"aria-live":"assertive","aria-atomic":"true"};var f=n(1562);function m(e){const t=(0,p.J)(e),{hash:n,search:r}=window.location;return null!=t&&(window.___replace(t.toPath+r+n),!0)}let g="";window.addEventListener("unhandledrejection",(e=>{/loading chunk \d* failed./i.test(e.reason)&&g&&(window.location.pathname=g)}));const v=(e,t)=>{m(e.pathname)||(g=e.pathname,(0,o.h)("onPreRouteUpdate",{location:e,prevLocation:t}))},y=(e,t)=>{m(e.pathname)||(0,o.h)("onRouteUpdate",{location:e,prevLocation:t})},w=function(e,t){if(void 0===t&&(t={}),"number"==typeof e)return void s.globalHistory.navigate(e);const{pathname:n,search:r,hash:a}=(0,f.cP)(e),i=(0,p.J)(n);if(i&&(e=i.toPath+r+a),window.___swUpdated)return void(window.location=n+r+a);const c=setTimeout((()=>{d.Z.emit("onDelayedLoadPageResources",{pathname:n}),(0,o.h)("onRouteUpdateDelayed",{location:window.location})}),1e3);u.ZP.loadPage(n+r).then((o=>{if(!o||o.status===u.uQ.Error)return window.history.replaceState({},"",location.href),window.location=n,void clearTimeout(c);o&&o.page.webpackCompilationHash!==window.___webpackCompilationHash&&("serviceWorker"in navigator&&null!==navigator.serviceWorker.controller&&"activated"===navigator.serviceWorker.controller.state&&navigator.serviceWorker.controller.postMessage({gatsbyApi:"clearPathResources"}),window.location=n+r+a),(0,s.navigate)(e,t),clearTimeout(c)}))};function b(e,t){let{location:n}=t;const{pathname:r,hash:a}=n,s=(0,o.h)("shouldUpdateScroll",{prevRouterProps:e,pathname:r,routerProps:{location:n},getSavedScrollPosition:e=>[0,this._stateStorage.read(e,e.key)]});if(s.length>0)return s[s.length-1];if(e){const{location:{pathname:t}}=e;if(t===r)return a?decodeURI(a.slice(1)):[0,0]}return!0}let E=function(e){function t(t){var n;return(n=e.call(this,t)||this).announcementRef=a.createRef(),n}(0,r.Z)(t,e);var n=t.prototype;return n.componentDidUpdate=function(e,t){requestAnimationFrame((()=>{let e="new page at "+this.props.location.pathname;document.title&&(e=document.title);const t=document.querySelectorAll("#gatsby-focus-wrapper h1");t&&t.length&&(e=t[0].textContent);const n="Navigated to "+e;if(this.announcementRef.current){this.announcementRef.current.innerText!==n&&(this.announcementRef.current.innerText=n)}}))},n.render=function(){return a.createElement("div",Object.assign({},h,{ref:this.announcementRef}))},t}(a.Component);const P=(e,t)=>{var n,r;return e.href!==t.href||(null==e||null===(n=e.state)||void 0===n?void 0:n.key)!==(null==t||null===(r=t.state)||void 0===r?void 0:r.key)};let _=function(e){function t(t){var n;return n=e.call(this,t)||this,v(t.location,null),n}(0,r.Z)(t,e);var n=t.prototype;return n.componentDidMount=function(){y(this.props.location,null)},n.shouldComponentUpdate=function(e){return!!P(this.props.location,e.location)&&(v(e.location,this.props.location),!0)},n.componentDidUpdate=function(e){P(e.location,this.props.location)&&y(this.props.location,e.location)},n.render=function(){return a.createElement(a.Fragment,null,this.props.children,a.createElement(E,{location:location}))},t}(a.Component);var R=n(4779),C=n(5418);function S(e,t){for(var n in e)if(!(n in t))return!0;for(var r in t)if(e[r]!==t[r])return!0;return!1}var k=function(e){function t(t){var n;n=e.call(this)||this;const{location:r,pageResources:o}=t;return n.state={location:{...r},pageResources:o||u.ZP.loadPageSync(r.pathname+r.search,{withErrorDetails:!0})},n}(0,r.Z)(t,e),t.getDerivedStateFromProps=function(e,t){let{location:n}=e;if(t.location.href!==n.href){return{pageResources:u.ZP.loadPageSync(n.pathname+n.search,{withErrorDetails:!0}),location:{...n}}}return{location:{...n}}};var n=t.prototype;return n.loadResources=function(e){u.ZP.loadPage(e).then((t=>{t&&t.status!==u.uQ.Error?this.setState({location:{...window.location},pageResources:t}):(window.history.replaceState({},"",location.href),window.location=e)}))},n.shouldComponentUpdate=function(e,t){return t.pageResources?this.state.pageResources!==t.pageResources||(this.state.pageResources.component!==t.pageResources.component||(this.state.pageResources.json!==t.pageResources.json||(!(this.state.location.key===t.location.key||!t.pageResources.page||!t.pageResources.page.matchPath&&!t.pageResources.page.path)||function(e,t,n){return S(e.props,t)||S(e.state,n)}(this,e,t)))):(this.loadResources(e.location.pathname+e.location.search),!1)},n.render=function(){return this.props.children(this.state)},t}(a.Component),x=n(1505),O=n(4941);const T=new u.kL(C,[],window.pageData);(0,u.N1)(T),T.setApiRunner(o.h);const{render:j,hydrate:D}=(0,O.U)();window.asyncRequires=C,window.___emitter=d.Z,window.___loader=u.jN,s.globalHistory.listen((e=>{e.location.action=e.action})),window.___push=e=>w(e,{replace:!1}),window.___replace=e=>w(e,{replace:!0}),window.___navigate=(e,t)=>w(e,t);const N="gatsby-reload-compilation-hash-match";(0,o.I)("onClientEntry").then((()=>{(0,o.h)("registerServiceWorker").filter(Boolean).length>0&&n(9939);const e=e=>a.createElement(s.BaseContext.Provider,{value:{baseuri:"/",basepath:"/"}},a.createElement(R.Z,e)),t=a.createContext({}),p={renderEnvironment:"browser"};let d=function(e){function n(){return e.apply(this,arguments)||this}return(0,r.Z)(n,e),n.prototype.render=function(){const{children:e}=this.props;return a.createElement(s.Location,null,(n=>{let{location:r}=n;return a.createElement(k,{location:r},(n=>{let{pageResources:r,location:o}=n;const s=(0,u.hs)(),i=(0,u.Nt)();return a.createElement(c.B9.Provider,{value:s},a.createElement(l.Bs.Provider,{value:p},a.createElement(l.m3.Provider,{value:i},a.createElement(l.u0.Provider,{value:r.page.slicesMap},a.createElement(t.Provider,{value:{pageResources:r,location:o}},e)))))}))}))},n}(a.Component),h=function(n){function o(){return n.apply(this,arguments)||this}return(0,r.Z)(o,n),o.prototype.render=function(){return a.createElement(t.Consumer,null,(t=>{let{pageResources:n,location:r}=t;return a.createElement(_,{location:r},a.createElement(i.$C,{location:r,shouldUpdateScroll:b},a.createElement(s.Router,{basepath:"",location:r,id:"gatsby-focus-wrapper"},a.createElement(e,Object.assign({path:"/404.html"===n.page.path||"/500.html"===n.page.path?(0,x.Z)(r.pathname,""):encodeURI((n.page.matchPath||n.page.path).split("?")[0])},this.props,{location:r,pageResources:n},n.json)))))}))},o}(a.Component);const{pagePath:f,location:m}=window;f&&""+f!==m.pathname+(f.includes("?")?m.search:"")&&!(T.findMatchPath((0,x.Z)(m.pathname,""))||f.match(/^\/(404|500)(\/?|.html)$/)||f.match(/^\/offline-plugin-app-shell-fallback\/?$/))&&(0,s.navigate)(""+f+(f.includes("?")?"":m.search)+m.hash,{replace:!0});const g=()=>{try{return sessionStorage}catch{return null}};u.jN.loadPage(m.pathname+m.search).then((e=>{var t;const n=g();if(null!=e&&null!==(t=e.page)&&void 0!==t&&t.webpackCompilationHash&&e.page.webpackCompilationHash!==window.___webpackCompilationHash&&("serviceWorker"in navigator&&null!==navigator.serviceWorker.controller&&"activated"===navigator.serviceWorker.controller.state&&navigator.serviceWorker.controller.postMessage({gatsbyApi:"clearPathResources"}),n)){if(!("1"===n.getItem(N)))return n.setItem(N,"1"),void window.location.reload(!0)}if(n&&n.removeItem(N),!e||e.status===u.uQ.Error){const t="page resources for "+m.pathname+" not found. Not rendering React";if(e&&e.error)throw console.error(t),e.error;throw new Error(t)}const r=(0,o.h)("wrapRootElement",{element:a.createElement(h,null)},a.createElement(h,null),(e=>{let{result:t}=e;return{element:t}})).pop(),s=function(){const e=a.useRef(!1);return a.useEffect((()=>{e.current||(e.current=!0,performance.mark&&performance.mark("onInitialClientRender"),(0,o.h)("onInitialClientRender"))}),[]),a.createElement(d,null,r)},i=document.getElementById("gatsby-focus-wrapper");let c=j;i&&i.children.length&&(c=D);const l=(0,o.h)("replaceHydrateFunction",void 0,c)[0];function p(){const e="undefined"!=typeof window?document.getElementById("___gatsby"):null;l(a.createElement(s,null),e)}const f=document;if("complete"===f.readyState||"loading"!==f.readyState&&!f.documentElement.doScroll)setTimeout((function(){p()}),0);else{const e=function(){f.removeEventListener("DOMContentLoaded",e,!1),window.removeEventListener("load",e,!1),p()};f.addEventListener("DOMContentLoaded",e,!1),window.addEventListener("load",e,!1)}}))}))},224:function(e,t,n){"use strict";n.r(t);var r=n(7294),o=n(1975),a=n(4779);t.default=e=>{let{location:t}=e;const n=o.ZP.loadPageSync(t.pathname);return n?r.createElement(a.Z,{location:t,pageResources:n,...n.json}):null}},2743:function(e,t,n){var r;e.exports=(r=n(224))&&r.default||r},4941:function(e,t,n){"use strict";n.d(t,{U:function(){return o}});const r=new WeakMap;function o(){const e=n(745);return{render:(t,n)=>{let o=r.get(n);o||r.set(n,o=e.createRoot(n)),o.render(t)},hydrate:(t,n)=>e.hydrateRoot(n,t)}}},6073:function(e,t,n){"use strict";n.d(t,{J:function(){return a}});const r=new Map,o=new Map;function a(e){let t=r.get(e);return t||(t=o.get(e.toLowerCase())),t}[].forEach((e=>{e.ignoreCase?o.set(e.fromPath,e):r.set(e.fromPath,e)}))},9939:function(e,t,n){"use strict";n.r(t);var r=n(3092);"https:"!==window.location.protocol&&"localhost"!==window.location.hostname?console.error("Service workers can only be used over HTTPS, or on localhost for development"):"serviceWorker"in navigator&&navigator.serviceWorker.register("/sw.js").then((function(e){e.addEventListener("updatefound",(()=>{(0,r.h)("onServiceWorkerUpdateFound",{serviceWorker:e});const t=e.installing;console.log("installingWorker",t),t.addEventListener("statechange",(()=>{switch(t.state){case"installed":navigator.serviceWorker.controller?(window.___swUpdated=!0,(0,r.h)("onServiceWorkerUpdateReady",{serviceWorker:e}),window.___failedResources&&(console.log("resources failed, SW updated - reloading"),window.location.reload())):(console.log("Content is now available offline!"),(0,r.h)("onServiceWorkerInstalled",{serviceWorker:e}));break;case"redundant":console.error("The installing service worker became redundant."),(0,r.h)("onServiceWorkerRedundant",{serviceWorker:e});break;case"activated":(0,r.h)("onServiceWorkerActive",{serviceWorker:e})}}))}))})).catch((function(e){console.error("Error during service worker registration:",e)}))},8995:function(e,t,n){"use strict";n.d(t,{Bs:function(){return a},m3:function(){return o},u0:function(){return s}});var r=n(7294);const o=r.createContext({}),a=r.createContext({}),s=r.createContext({})},1757:function(e,t,n){"use strict";n.d(t,{B9:function(){return o},K2:function(){return i}});var r=n(7294);const o=(a="StaticQuery",s={},r.createServerContext?function(e,t){return void 0===t&&(t=null),globalThis.__SERVER_CONTEXT||(globalThis.__SERVER_CONTEXT={}),globalThis.__SERVER_CONTEXT[e]||(globalThis.__SERVER_CONTEXT[e]=r.createServerContext(e,t)),globalThis.__SERVER_CONTEXT[e]}(a,s):r.createContext(s));var a,s;const i=e=>{var t;r.useContext;const n=r.useContext(o);if(isNaN(Number(e)))throw new Error("useStaticQuery was called with a string but expects to be called using `graphql`. Try this:\n\nimport { useStaticQuery, graphql } from 'gatsby';\n\nuseStaticQuery(graphql`"+e+"`);\n");if(null!==(t=n[e])&&void 0!==t&&t.data)return n[e].data;throw new Error("The result of this StaticQuery could not be fetched.\n\nThis is likely a bug in Gatsby and if refreshing the page does not fix it, please open an issue in https://github.com/gatsbyjs/gatsby/issues")}},1505:function(e,t,n){"use strict";function r(e,t){return void 0===t&&(t=""),t?e===t?"/":e.startsWith(t+"/")?e.slice(t.length):e:e}n.d(t,{Z:function(){return r}})},9650:function(e,t){"use strict";var n=0,r=function(e){var t=window.decodeURI(e.replace("#",""));if(""!==t){var r=document.getElementById(t);if(r){var o=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop,a=document.documentElement.clientTop||document.body.clientTop||0,s=window.getComputedStyle(r),i=s.getPropertyValue("scroll-margin-top")||s.getPropertyValue("scroll-snap-margin-top")||"0px";return r.getBoundingClientRect().top+o-parseInt(i,10)-a-n}}return null};t.onInitialClientRender=function(e,t){t.offsetY&&(n=t.offsetY),requestAnimationFrame((function(){var e=r(window.location.hash);null!==e&&window.scrollTo(0,e)}))},t.shouldUpdateScroll=function(e){var t=e.routerProps.location,n=r(t.hash);return null===n||[0,n]}},855:function(e,t){"use strict";t.DEFAULT_OPTIONS={maxWidth:650,wrapperStyle:"",backgroundColor:"white",linkImagesToOriginal:!0,showCaptions:!1,markdownCaptions:!1,withWebp:!1,withAvif:!1,tracedSVG:!1,loading:"lazy",decoding:"async",disableBgImageOnAlpha:!1,disableBgImage:!1},t.EMPTY_ALT="GATSBY_EMPTY_ALT",t.imageClass="gatsby-resp-image-image",t.imageWrapperClass="gatsby-resp-image-wrapper",t.imageBackgroundClass="gatsby-resp-image-background-image"},2154:function(e,t,n){"use strict";var r=n(855),o=r.DEFAULT_OPTIONS,a=r.imageClass,s=r.imageBackgroundClass,i=r.imageWrapperClass;t.onRouteUpdate=function(e,t){for(var n=Object.assign({},o,t),r=document.querySelectorAll("."+i),c=function(){var e=r[l],t=e.querySelector("."+s),o=e.querySelector("."+a),i=function(){t.style.transition="opacity 0.5s 0.5s",o.style.transition="opacity 0.5s",c()},c=function e(){t.style.opacity=0,o.style.opacity=1,o.style.color="inherit",o.style.boxShadow="inset 0px 0px 0px 400px "+n.backgroundColor,o.removeEventListener("load",i),o.removeEventListener("error",e)};o.style.opacity=0,o.addEventListener("load",i),o.addEventListener("error",c),o.complete&&c()},l=0;l((e,t)=>{const{forward:n=[],...r}=e||{},o=JSON.stringify(r,((e,t)=>("function"==typeof t&&(t=String(t)).startsWith(e+"(")&&(t="function "+t),t)));return["!(function(w,p,f,c){",Object.keys(r).length>0?`c=w[p]=Object.assign(w[p]||{},${o});`:"c=w[p]=w[p]||{};","c[f]=(c[f]||[])",n.length>0?`.concat(${JSON.stringify(n)})`:"","})(window,'partytown','forward');",t].join("")})(e,'/* Partytown 0.7.6 - MIT builder.io */\n!function(t,e,n,i,r,o,a,d,s,c,p,l){function u(){l||(l=1,"/"==(a=(o.lib||"/~partytown/")+(o.debug?"debug/":""))[0]&&(s=e.querySelectorAll(\'script[type="text/partytown"]\'),i!=t?i.dispatchEvent(new CustomEvent("pt1",{detail:t})):(d=setTimeout(f,1e4),e.addEventListener("pt0",w),r?h(1):n.serviceWorker?n.serviceWorker.register(a+(o.swPath||"partytown-sw.js"),{scope:a}).then((function(t){t.active?h():t.installing&&t.installing.addEventListener("statechange",(function(t){"activated"==t.target.state&&h()}))}),console.error):f())))}function h(t){c=e.createElement(t?"script":"iframe"),t||(c.setAttribute("style","display:block;width:0;height:0;border:0;visibility:hidden"),c.setAttribute("aria-hidden",!0)),c.src=a+"partytown-"+(t?"atomics.js?v=0.7.6":"sandbox-sw.html?"+Date.now()),e.body.appendChild(c)}function f(n,r){for(w(),i==t&&(o.forward||[]).map((function(e){delete t[e.split(".")[0]]})),n=0;ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(o[n]=e[n]);return o}const l=e=>{const{search:t,hash:n,href:r,origin:o,protocol:a,host:s,hostname:i,port:c}=e.location;let{pathname:l}=e.location;return!l&&r&&d&&(l=new URL(r).pathname),{pathname:encodeURI(decodeURI(l)),search:t,hash:n,href:r,origin:o,protocol:a,host:s,hostname:i,port:c,state:e.history.state,key:e.history.state&&e.history.state.key||"initial"}},u=(e,t)=>{let n=[],r=l(e),o=!1,a=()=>{};return{get location(){return r},get transitioning(){return o},_onTransitionComplete(){o=!1,a()},listen(t){n.push(t);const o=()=>{r=l(e),t({location:r,action:"POP"})};return e.addEventListener("popstate",o),()=>{e.removeEventListener("popstate",o),n=n.filter((e=>e!==t))}},navigate(t,{state:s,replace:c=!1}={}){if("number"==typeof t)e.history.go(t);else{s=i({},s,{key:Date.now()+""});try{o||c?e.history.replaceState(s,null,t):e.history.pushState(s,null,t)}catch(n){e.location[c?"replace":"assign"](t)}}r=l(e),o=!0;const u=new Promise((e=>a=e));return n.forEach((e=>e({location:r,action:"PUSH"}))),u}}},p=(e="/")=>{const t=e.indexOf("?"),n={pathname:t>-1?e.substr(0,t):e,search:t>-1?e.substr(t):""};let r=0;const o=[n],a=[null];return{get location(){return o[r]},addEventListener(e,t){},removeEventListener(e,t){},history:{get entries(){return o},get index(){return r},get state(){return a[r]},pushState(e,t,n){const[s,i=""]=n.split("?");r++,o.push({pathname:s,search:i.length?`?${i}`:i}),a.push(e)},replaceState(e,t,n){const[s,i=""]=n.split("?");o[r]={pathname:s,search:i},a[r]=e},go(e){const t=r+e;t<0||t>a.length-1||(r=t)}}}},d=!("undefined"==typeof window||!window.document||!window.document.createElement),h=u(d?window:p()),{navigate:f}=h;function m(e,t){return o.createServerContext?((e,t=null)=>(globalThis.__SERVER_CONTEXT||(globalThis.__SERVER_CONTEXT={}),globalThis.__SERVER_CONTEXT[e]||(globalThis.__SERVER_CONTEXT[e]=o.createServerContext(e,t)),globalThis.__SERVER_CONTEXT[e]))(e,t):o.createContext(t)}const g=m("Base",{baseuri:"/",basepath:"/"}),v=m("Location"),y=()=>o.useContext(g),w=()=>o.useContext(v);function b(e){this.uri=e}const E=e=>e instanceof b,P=e=>{throw new b(e)};function _(e){const{to:t,replace:n=!0,state:r,noThrow:a,baseuri:s}=e;o.useEffect((()=>{Promise.resolve().then((()=>{const o=x(t,s);f(O(o,e),{replace:n,state:r})}))}),[]);const i=x(t,s);return a||P(O(i,e)),null}const R=e=>{const t=w(),{baseuri:n}=y();return o.createElement(_,i({},t,{baseuri:n},e))};R.propTypes={from:a.string,to:a.string.isRequired};const C=(e,t)=>e.substr(0,t.length)===t,S=(e,t)=>{let n,r;const[o]=t.split("?"),a=I(o),i=""===a[0],c=M(e);for(let l=0,u=c.length;l dynamic segment "${r[1]}" is a reserved name. Please use a different name in path "${o.path}".`);const t=decodeURIComponent(n);p[r[1]]=t}else if(t!==n){e=!0;break}}if(!e){n={route:o,params:p,uri:"/"+a.slice(0,h).join("/")};break}}return n||r||null},k=(e,t)=>S([{path:e}],t),x=(e,t)=>{if(C(e,"/"))return e;const[n,r]=e.split("?"),[o]=t.split("?"),a=I(n),s=I(o);if(""===a[0])return A(o,r);if(!C(a[0],".")){const e=s.concat(a).join("/");return A(("/"===o?"":"/")+e,r)}const i=s.concat(a),c=[];for(let l=0,u=i.length;l{const[n,r=""]=e.split("?");let o="/"+I(n).map((e=>{const n=j.exec(e);return n?t[n[1]]:e})).join("/");const{location:{search:a=""}={}}=t,s=a.split("?")[1]||"";return o=A(o,r,s),o},T=(e,t)=>{const n=e=>D(e);return I(e).filter(n).sort().join("/")===I(t).filter(n).sort().join("/")},j=/^:(.+)/,D=e=>j.test(e),N=e=>e&&"*"===e[0],L=(e,t)=>({route:e,score:e.default?0:I(e.path).reduce(((e,t)=>(e+=4,(e=>""===e)(t)?e+=1:D(t)?e+=2:N(t)?e-=5:e+=3,e)),0),index:t}),M=e=>e.map(L).sort(((e,t)=>e.scoret.score?-1:e.index-t.index)),I=e=>e.replace(/(^\/+|\/+$)/g,"").split("/"),A=(e,...t)=>e+((t=t.filter((e=>e&&e.length>0)))&&t.length>0?`?${t.join("&")}`:""),H=["uri","path"],U=(e,t)=>{const n=Object.keys(e);return n.length===Object.keys(t).length&&n.every((n=>t.hasOwnProperty(n)&&e[n]===t[n]))},W=e=>e.replace(/(^\/+|\/+$)/g,""),q=e=>t=>{if(!t)return null;if(t.type===o.Fragment&&t.props.children)return o.Children.map(t.props.children,q(e));if(s(t.props.path||t.props.default||t.type===R,`: Children of must have a \`path\` or \`default\` prop, or be a \`\`. None found on element type \`${t.type}\``),s(!!(t.type!==R||t.props.from&&t.props.to),` requires both "from" and "to" props when inside a .`),s(!(t.type===R&&!T(t.props.from,t.props.to)),` has mismatched dynamic segments, ensure both paths have the exact same dynamic segments.`),t.props.default)return{value:t,default:!0};const n=t.type===R?t.props.from:t.props.path,r="/"===n?e:`${W(e)}/${W(n)}`;return{value:t,default:t.props.default,path:t.props.children?`${W(r)}/*`:r}},F=["innerRef"],J=["to","state","replace","getProps"],$=["key"];let{forwardRef:B}=r||(r=n.t(o,2));void 0===B&&(B=e=>e);const Q=()=>{},Z=B(((e,t)=>{let{innerRef:n}=e,r=c(e,F);const{baseuri:a}=y(),{location:s}=w(),{to:l,state:u,replace:p,getProps:d=Q}=r,h=c(r,J),m=x(l,a),g=encodeURI(m),v=s.pathname===g,b=C(s.pathname,g);return o.createElement("a",i({ref:t||n,"aria-current":v?"page":void 0},h,d({isCurrent:v,isPartiallyCurrent:b,href:m,location:s}),{href:m,onClick:e=>{if(h.onClick&&h.onClick(e),(e=>!e.defaultPrevented&&0===e.button&&!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey))(e)){e.preventDefault();let t=p;if("boolean"!=typeof p&&v){const e=c(i({},s.state),$);t=U(i({},u),e)}f(m,{state:u,replace:t})}}}))}));Z.displayName="Link",Z.propTypes={to:a.string.isRequired};class G extends o.Component{constructor(...e){super(...e),this.displayName="ReactUseErrorBoundary"}componentDidCatch(...e){this.setState({}),this.props.onError(...e)}render(){return this.props.children}}const K=o.createContext({componentDidCatch:{current:void 0},error:void 0,setError:()=>!1});function V({children:e}){const[t,n]=o.useState(),r=o.useRef(),a=o.useMemo((()=>({componentDidCatch:r,error:t,setError:n})),[t]);return o.createElement(K.Provider,{value:a},o.createElement(G,{error:t,onError:(e,t)=>{n(e),null==r.current||r.current(e,t)}},e))}V.displayName="ReactUseErrorBoundaryContext";const Y=function(e){var t,n;function r(t){return o.createElement(V,null,o.createElement(e,i({key:"WrappedComponent"},t)))}return r.displayName=`WithErrorBoundary(${null!=(t=null!=(n=e.displayName)?n:e.name)?t:"Component"})`,r}((({history:e=h,children:t})=>{const{location:n}=e,[r,a]=o.useState({location:n}),[s]=function(e){const t=o.useContext(K);t.componentDidCatch.current=void 0;const n=o.useCallback((()=>{t.setError(void 0)}),[]);return[t.error,n]}();if(o.useEffect((()=>{e._onTransitionComplete()}),[r.location]),o.useEffect((()=>{let t=!1;const n=e.listen((({location:e})=>{Promise.resolve().then((()=>{requestAnimationFrame((()=>{t||a({location:e})}))}))}));return()=>{t=!0,n()}}),[]),s){if(!E(s))throw s;f(s.uri,{replace:!0})}return o.createElement(v.Provider,{value:r},"function"==typeof t?t(r):t||null)})),X=({children:e})=>{const t=w();return t?e(t):o.createElement(Y,null,e)},z=({url:e,children:t})=>{const n=e.indexOf("?");let r,a="";return n>-1?(r=e.substring(0,n),a=e.substring(n)):r=e,o.createElement(v.Provider,{value:{location:{pathname:r,search:a,hash:""}}},t)},ee=({path:e,children:t})=>{const{baseuri:n}=y(),{location:r}=w(),o=x(e,n),a=k(o,r.pathname);return t({location:r,match:a?i({},a.params,{uri:a.uri,path:e}):null})},te=["uri","location","component"],ne=["children","style","component","uri","location"],re=e=>{let{uri:t,location:n,component:r}=e,a=c(e,te);return o.createElement(ae,i({},a,{component:r,uri:t,location:n}))};let oe=0;const ae=e=>{let{children:t,style:n,component:r="div",uri:a,location:s}=e,l=c(e,ne);const u=o.useRef(),p=o.useRef(!0),d=o.useRef(a),h=o.useRef(s.pathname),f=o.useRef(!1);o.useEffect((()=>(oe++,m(),()=>{oe--,0===oe&&(p.current=!0)})),[]),o.useEffect((()=>{let e=!1,t=!1;a!==d.current&&(d.current=a,e=!0),s.pathname!==h.current&&(h.current=s.pathname,t=!0),f.current=e||t&&s.pathname===a,f.current&&m()}),[a,s]);const m=o.useCallback((()=>{var e;p.current?p.current=!1:(e=u.current,f.current&&e&&e.focus())}),[]);return o.createElement(r,i({style:i({outline:"none"},n),tabIndex:"-1",ref:u},l),t)},se=["location","primary","children","basepath","baseuri","component"],ie=e=>{const t=y(),n=w();return o.createElement(ce,i({},t,n,e))};function ce(e){const{location:t,primary:n=!0,children:r,basepath:a,component:s="div"}=e,l=c(e,se),u=o.Children.toArray(r).reduce(((e,t)=>{const n=q(a)(t);return e.concat(n)}),[]),{pathname:p}=t,d=S(u,p);if(d){const{params:e,uri:r,route:c,route:{value:u}}=d,p=c.default?a:c.path.replace(/\*$/,""),h=i({},e,{uri:r,location:t}),f=o.cloneElement(u,h,u.props.children?o.createElement(ie,{location:t,primary:n},u.props.children):void 0),m=n?re:s,v=n?i({uri:r,location:t,component:s},l):l;return o.createElement(g.Provider,{value:{baseuri:r,basepath:p}},o.createElement(m,v,f))}return null}const le=()=>{const e=w();if(!e)throw new Error("useLocation hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router");return e.location},ue=()=>{throw new Error("useNavigate is removed. Use import { navigate } from 'gatsby' instead")},pe=()=>{const e=y();if(!e)throw new Error("useParams hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router");const t=le(),n=k(e.basepath,t.pathname);return n?n.params:null},de=e=>{if(!e)throw new Error("useMatch(path: string) requires an argument of a string to match against");const t=y();if(!t)throw new Error("useMatch hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router");const n=le(),r=x(e,t.baseuri),o=k(r,n.pathname);return o?i({},o.params,{uri:o.uri,path:e}):null}},1562:function(e,t,n){"use strict";n.d(t,{cP:function(){return c},rU:function(){return E}});var r=n(5697),o=n(7294),a=n(7896),s=n(4506);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t{if("string"==typeof e)return!(e=>l.test(e))(e)},p=()=>"",d=()=>"";function h(e,t=p()){var n;if(!u(e))return e;if(e.startsWith("./")||e.startsWith("../"))return e;const r=null!=(n=null!=t?t:d())?n:"/";return`${null!=r&&r.endsWith("/")?r.slice(0,-1):r}${e.startsWith("/")?e:`/${e}`}`}const f=e=>null==e?void 0:e.startsWith("/");function m(e,t){const{pathname:n,search:r,hash:o}=c(e);return`${(0,s.H)(n,t)}${r}${o}`}const g=(e,t)=>"number"==typeof e?e:u(e)?f(e)?function(e){const t=h(e),n="always";return m(t,n)}(e):function(e,t){if(f(e))return e;const n="always",r=(0,a.resolve)(e,t);return m(r,n)}(e,t):e,v=["to","getProps","onClick","onMouseEnter","activeClassName","activeStyle","innerRef","partiallyActive","state","replace","_location"];const y={activeClassName:r.string,activeStyle:r.object,partiallyActive:r.bool};function w(e){return o.createElement(a.Location,null,(({location:t})=>o.createElement(b,i({},e,{_location:t}))))}class b extends o.Component{constructor(e){super(e),this.defaultGetProps=({isPartiallyCurrent:e,isCurrent:t})=>(this.props.partiallyActive?e:t)?{className:[this.props.className,this.props.activeClassName].filter(Boolean).join(" "),style:i({},this.props.style,this.props.activeStyle)}:null;let t=!1;"undefined"!=typeof window&&window.IntersectionObserver&&(t=!0),this.state={IOSupported:t},this.abortPrefetch=null,this.handleRef=this.handleRef.bind(this)}_prefetch(){let e=window.location.pathname+window.location.search;this.props._location&&this.props._location.pathname&&(e=this.props._location.pathname+this.props._location.search);const t=c(g(this.props.to,e)),n=t.pathname+t.search;if(e!==n)return ___loader.enqueue(n)}componentWillUnmount(){if(!this.io)return;const{instance:e,el:t}=this.io;this.abortPrefetch&&this.abortPrefetch.abort(),e.unobserve(t),e.disconnect()}handleRef(e){this.props.innerRef&&Object.prototype.hasOwnProperty.call(this.props.innerRef,"current")?this.props.innerRef.current=e:this.props.innerRef&&this.props.innerRef(e),this.state.IOSupported&&e&&(this.io=((e,t)=>{const n=new window.IntersectionObserver((n=>{n.forEach((n=>{e===n.target&&t(n.isIntersecting||n.intersectionRatio>0)}))}));return n.observe(e),{instance:n,el:e}})(e,(e=>{e?this.abortPrefetch=this._prefetch():this.abortPrefetch&&this.abortPrefetch.abort()})))}render(){const e=this.props,{to:t,getProps:n=this.defaultGetProps,onClick:r,onMouseEnter:s,state:l,replace:p,_location:d}=e,h=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,v),f=g(t,d.pathname);return u(f)?o.createElement(a.Link,i({to:f,state:l,getProps:n,innerRef:this.handleRef,onMouseEnter:e=>{s&&s(e);const t=c(f);___loader.hovering(t.pathname+t.search)},onClick:e=>{if(r&&r(e),!(0!==e.button||this.props.target||e.defaultPrevented||e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)){e.preventDefault();let t=p;const n=encodeURI(f)===d.pathname;"boolean"!=typeof p&&n&&(t=!0),window.___navigate(f,{state:l,replace:t})}return!0}},h)):o.createElement("a",i({href:f},h))}}b.propTypes=i({},y,{onClick:r.func,to:r.string.isRequired,replace:r.bool,state:r.object});const E=o.forwardRef(((e,t)=>o.createElement(w,i({innerRef:t},e))))},3521:function(e,t,n){"use strict";n.r(t),n.d(t,{Script:function(){return f},ScriptStrategy:function(){return l},collectedScriptsByPage:function(){return i},scriptCache:function(){return d},scriptCallbackCache:function(){return h}});var r=n(7294),o=n(7896);function a(){return a=Object.assign?Object.assign.bind():function(e){for(var t=1;ts.get(e)||[],set(e,t){const n=s.get(e)||[];n.push(t),s.set(e,n)},delete(e){s.delete(e)}},c="undefined"!=typeof self&&self.requestIdleCallback&&self.requestIdleCallback.bind(window)||function(e){const t=Date.now();return setTimeout((function(){e({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-t))}})}),1)};var l,u;(u=l||(l={})).postHydrate="post-hydrate",u.idle="idle",u.offMainThread="off-main-thread";const p=new Set(["src","strategy","dangerouslySetInnerHTML","children","onLoad","onError"]),d=new Set,h=new Map;function f(e){return r.createElement(o.Location,null,(()=>r.createElement(m,e)))}function m(e){const{src:t,strategy:n=l.postHydrate}=e||{},{pathname:s}=(0,o.useLocation)();if((0,r.useEffect)((()=>{let t;switch(n){case l.postHydrate:t=g(e);break;case l.idle:c((()=>{t=g(e)}));break;case l.offMainThread:{const t=y(e);i.set(s,t)}}return()=>{const{script:e,loadCallback:n,errorCallback:r}=t||{};n&&(null==e||e.removeEventListener("load",n)),r&&(null==e||e.removeEventListener("error",r)),null==e||e.remove()}}),[]),n===l.offMainThread){const o=v(e),c=y(e);return"undefined"==typeof window&&i.set(s,c),r.createElement("script",o?a({type:"text/partytown","data-strategy":n,crossOrigin:"anonymous"},c,{dangerouslySetInnerHTML:{__html:v(e)}}):a({type:"text/partytown",src:w(t),"data-strategy":n,crossOrigin:"anonymous"},c))}return null}function g(e){const{id:t,src:n,strategy:r=l.postHydrate,onLoad:o,onError:s}=e||{},i=t||n,c=["load","error"],u={load:o,error:s};if(i){for(const e of c)if(null!=u&&u[e]){var p;const t=h.get(i)||{},{callbacks:n=[]}=(null==t?void 0:t[e])||{};var f,m;n.push(null==u?void 0:u[e]),null!=t&&null!=(p=t[e])&&p.event?null==u||null==(f=u[e])||f.call(u,null==t||null==(m=t[e])?void 0:m.event):h.set(i,a({},t,{[e]:{callbacks:n}}))}if(d.has(i))return null}const g=v(e),w=y(e),E=document.createElement("script");t&&(E.id=t),E.dataset.strategy=r;for(const[a,l]of Object.entries(w))E.setAttribute(a,l);g&&(E.textContent=g),n&&(E.src=n);const P={};if(i){for(const e of c){const t=t=>b(t,i,e);E.addEventListener(e,t),P[`${e}Callback`]=t}d.add(i)}return document.body.appendChild(E),{script:E,loadCallback:P.loadCallback,errorCallback:P.errorCallback}}function v(e){const{dangerouslySetInnerHTML:t,children:n=""}=e||{},{__html:r=""}=t||{};return r||n}function y(e){const t={};for(const[n,r]of Object.entries(e))p.has(n)||(t[n]=r);return t}function w(e){if(e)return`/__third-party-proxy?url=${encodeURIComponent(e)}`}function b(e,t,n){const r=h.get(t)||{};for(const a of(null==r||null==(o=r[n])?void 0:o.callbacks)||[]){var o;a(e)}h.set(t,{[n]:{event:e}})}}},function(e){e.O(0,[774],(function(){return t=5824,e(e.s=t);var t}));e.O()}]); +//# sourceMappingURL=app-5dbf3959725da9267ec3.js.map \ No newline at end of file diff --git a/app-9d8349539d1a53475fba.js.LICENSE.txt b/app-5dbf3959725da9267ec3.js.LICENSE.txt similarity index 100% rename from app-9d8349539d1a53475fba.js.LICENSE.txt rename to app-5dbf3959725da9267ec3.js.LICENSE.txt diff --git a/app-9d8349539d1a53475fba.js.map b/app-5dbf3959725da9267ec3.js.map similarity index 99% rename from app-9d8349539d1a53475fba.js.map rename to app-5dbf3959725da9267ec3.js.map index 604ade44..24663bf1 100644 --- a/app-9d8349539d1a53475fba.js.map +++ b/app-5dbf3959725da9267ec3.js.map @@ -1 +1 @@ -{"version":3,"file":"app-9d8349539d1a53475fba.js","mappings":";uGAGAA,EAAQ,OAA2B,EAiBnCA,EAAQ,EAhByB,CAACC,EAAOC,EAAS,YAChD,MAAMC,EAAgBF,EAAMG,SAAS,SAC/BC,EAAeJ,EAAMG,SAAS,QAC9BE,EAAeL,EAAMG,SAAS,QACpC,MAAc,MAAVH,EAAsBA,IACtBE,GAAiBE,GAAgBC,KACnCJ,EAAS,SAEI,WAAXA,EACKD,EAAMG,SAAS,KAAOH,EAAQ,GAAGA,KAE3B,UAAXC,GACKD,EAAMG,SAAS,KAAOH,EAAMM,MAAM,GAAI,GAExCN,EAAK,qCCfiBD,EAAQ,QAAgB,EACvD,IAAIQ,EAAiB,EAAQ,MAC7BR,EAAQ,GAAgBQ,EAAeC,cACX,EAAQ,MACiBC,wDCLrD,IAAIC,EAAyB,EAAQ,MACrCX,EAAQY,YAAa,EACrBZ,EAAQS,cAAgBT,EAAQa,mBAAgB,EAChD,IAAIC,EAA0BH,EAAuB,EAAQ,OACzDI,EAAkBJ,EAAuB,EAAQ,OACjDK,EAIJ,SAAiCC,EAAKC,GAAe,IAAKA,GAAeD,GAAOA,EAAIL,WAAc,OAAOK,EAAO,GAAY,OAARA,GAA+B,iBAARA,GAAmC,mBAARA,EAAsB,MAAO,CAAEE,QAASF,GAAS,IAAIG,EAAQC,EAAyBH,GAAc,GAAIE,GAASA,EAAME,IAAIL,GAAQ,OAAOG,EAAMG,IAAIN,GAAQ,IAAIO,EAAS,CAAC,EAAOC,EAAwBC,OAAOC,gBAAkBD,OAAOE,yBAA0B,IAAK,IAAIC,KAAOZ,EAAO,GAAY,YAARY,GAAqBH,OAAOI,UAAUC,eAAeC,KAAKf,EAAKY,GAAM,CAAE,IAAII,EAAOR,EAAwBC,OAAOE,yBAAyBX,EAAKY,GAAO,KAAUI,IAASA,EAAKV,KAAOU,EAAKC,KAAQR,OAAOC,eAAeH,EAAQK,EAAKI,GAAgBT,EAAOK,GAAOZ,EAAIY,EAAQ,CAAIL,EAAOL,QAAUF,EAASG,GAASA,EAAMc,IAAIjB,EAAKO,GAAW,OAAOA,CAAQ,CAJvxBW,CAAwB,EAAQ,OACxCC,EAAazB,EAAuB,EAAQ,OAC5C0B,EAAkB,EAAQ,MAC9B,SAAShB,EAAyBH,GAAe,GAAuB,mBAAZoB,QAAwB,OAAO,KAAM,IAAIC,EAAoB,IAAID,QAAeE,EAAmB,IAAIF,QAAW,OAAQjB,EAA2B,SAAkCH,GAAe,OAAOA,EAAcsB,EAAmBD,CAAmB,GAAGrB,EAAc,CAE9U,IAAIL,EAA6BG,EAAMyB,cAAc,IAAIJ,EAAgBK,gBACzE1C,EAAQa,cAAgBA,EACxBA,EAAc8B,YAAc,sBAC5B,IAAIlC,EAA6B,SAAUmC,GAEzC,SAASnC,IAEP,IADA,IAAIoC,EACKC,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAiCzB,OA/BAN,EAAQD,EAAiBZ,KAAKoB,MAAMR,EAAkB,CAACS,MAAMC,OAAOL,KAAUI,MACxEE,cAAgB,IAAIlB,EAAgBK,eAC1CG,EAAMW,YAAa,EACnBX,EAAMY,oBAAsB,EAC5BZ,EAAMa,eAAiB,WACrBb,EAAMY,oBAAsBE,OAAOC,QAC9Bf,EAAMW,aACTX,EAAMW,YAAa,EACnBK,sBAAsBhB,EAAMiB,YAAYC,MAAK,EAAIjD,EAAwBK,SAAS0B,KAEtF,EACAA,EAAMmB,aAAe,SAAUC,EAAUC,GACnCrB,EAAMsB,mBAAmBD,EAAWrB,EAAMuB,QAC5CT,OAAOU,SAAS,EAAGJ,EAEvB,EACApB,EAAMyB,aAAe,SAAUC,EAAML,GACnC,IAAIM,EAAOC,SAASC,eAAeH,EAAKI,UAAU,IAC9CH,GAAQ3B,EAAMsB,mBAAmBD,EAAWrB,EAAMuB,QACpDI,EAAKI,gBAET,EACA/B,EAAMsB,mBAAqB,SAAUU,EAAiBC,GACpD,IAAIX,EAAqBtB,EAAMuB,MAAMD,mBACrC,OAAKA,GAKEA,EAAmBnC,MAAK,EAAIlB,EAAwBK,SAAS0B,GAAQgC,EAAiBC,EAC/F,EACOjC,CACT,EAtCA,EAAI9B,EAAgBI,SAASV,EAAemC,GAuC5C,IAAImC,EAAStE,EAAcqB,UA2D3B,OA1DAiD,EAAOjB,YAAc,WACnB,IAAIjC,EAAMwB,KAAKe,MAAMY,SAASnD,KAAO,KACjCA,GACFwB,KAAKE,cAAc0B,KAAK5B,KAAKe,MAAMY,SAAUnD,EAAKwB,KAAKI,qBAEzDJ,KAAKG,YAAa,CACpB,EACAuB,EAAOG,kBAAoB,WAEzB,IAAIC,EADJxB,OAAOyB,iBAAiB,SAAU/B,KAAKK,gBAEvC,IAAI2B,EAAuBhC,KAAKe,MAAMY,SACpCnD,EAAMwD,EAAqBxD,IAC3B0C,EAAOc,EAAqBd,KAC1B1C,IACFsD,EAAiB9B,KAAKE,cAAc+B,KAAKjC,KAAKe,MAAMY,SAAUnD,IAM5D0C,EACFlB,KAAKiB,aAAaiB,UAAUhB,QAAOiB,GAC1BL,GACT9B,KAAKW,aAAamB,OAAgBK,EAEtC,EACAT,EAAOU,qBAAuB,WAC5B9B,OAAO+B,oBAAoB,SAAUrC,KAAKK,eAC5C,EACAqB,EAAOY,mBAAqB,SAA4BzB,GACtD,IAGIiB,EAHAS,EAAwBvC,KAAKe,MAAMY,SACrCT,EAAOqB,EAAsBrB,KAC7B1C,EAAM+D,EAAsB/D,IAE1BA,IACFsD,EAAiB9B,KAAKE,cAAc+B,KAAKjC,KAAKe,MAAMY,SAAUnD,IAY5D0C,EACFlB,KAAKiB,aAAaiB,UAAUhB,GAAOL,GAEnCb,KAAKW,aAAamB,EAAgBjB,EAEtC,EACAa,EAAOc,OAAS,WACd,OAAoB7E,EAAM8E,cAAcjF,EAAckF,SAAU,CAC9DC,MAAO3C,KAAKE,eACXF,KAAKe,MAAM6B,SAChB,EACOxF,CACT,CApGiC,CAoG/BO,EAAMkF,WACRlG,EAAQS,cAAgBA,EACxBA,EAAc0F,UAAY,CACxBhC,mBAAoB/B,EAAWjB,QAAQiF,KACvCH,SAAU7D,EAAWjB,QAAQkF,QAAQC,WACrCtB,SAAU5C,EAAWjB,QAAQoF,OAAOD,6CCtHtCtG,EAAQY,YAAa,EACrBZ,EAAQ0C,oBAAiB,EACzB,IACI8D,EAA6B,gCAC7B9D,EAA8B,WAChC,SAASA,IAAkB,CAC3B,IAAIqC,EAASrC,EAAeZ,UAqC5B,OApCAiD,EAAOO,KAAO,SAAcN,EAAUnD,GACpC,IAAI4E,EAAWpD,KAAKqD,YAAY1B,EAAUnD,GAC1C,IACE,IAAImE,EAAQrC,OAAOgD,eAAeC,QAAQH,GAC1C,OAAOT,EAAQa,KAAKC,MAAMd,GAAS,CACrC,CAAE,MAAOe,GAIP,OAAIpD,QAAUA,OAAO6C,IAA+B7C,OAAO6C,GAA4BC,GAC9E9C,OAAO6C,GAA4BC,GAErC,CACT,CACF,EACA1B,EAAOE,KAAO,SAAcD,EAAUnD,EAAKmE,GACzC,IAAIS,EAAWpD,KAAKqD,YAAY1B,EAAUnD,GACtCmF,EAAcH,KAAKI,UAAUjB,GACjC,IACErC,OAAOgD,eAAeO,QAAQT,EAAUO,EAC1C,CAAE,MAAOD,GACHpD,QAAUA,OAAO6C,KAGnB7C,OAAO6C,GAA8B,CAAC,GAFtC7C,OAAO6C,GAA4BC,GAAYI,KAAKC,MAAME,EAQ9D,CACF,EACAjC,EAAO2B,YAAc,SAAqB1B,EAAUnD,GAClD,IAAIsF,EAtCe,YAsCwBnC,EAASoC,SACpD,OAAOvF,QAA6CsF,EAAeA,EAAe,IAAMtF,CAC1F,EACOa,CACT,CAxCkC,GAyClC1C,EAAQ0C,eAAiBA,qCC7CzB1C,EAAQY,YAAa,EACrBZ,EAAQU,qBAIR,SAA8B2G,GAC5B,IAAIrC,GAAW,EAAIsC,EAAaC,eAC5BC,GAAQ,EAAIC,EAAOC,YAAYlH,EAAeK,eAC9C8G,GAAM,EAAIF,EAAOG,QAAQ,MAO7B,OANA,EAAIH,EAAOI,kBAAiB,WAC1B,GAAIF,EAAIG,QAAS,CACf,IAAI7D,EAAWuD,EAAMlC,KAAKN,EAAUqC,GACpCM,EAAIG,QAAQzD,SAAS,EAAGJ,GAAY,EACtC,CACF,GAAG,CAACe,EAASnD,MACN,CACL8F,IAAKA,EACLI,SAAU,WACJJ,EAAIG,SACNN,EAAMvC,KAAKD,EAAUqC,EAAYM,EAAIG,QAAQE,UAEjD,EAEJ,EArBA,IAAIxH,EAAiB,EAAQ,MACzBiH,EAAS,EAAQ,MACjBH,EAAe,EAAQ,yCCJ3BtH,EAAQY,YAAa,EACrBZ,EAAQiI,2BAAwB,EACZ,EAAQ,MACE,EAAQ,MAgBtCjI,EAAQiI,sBAdsB,KAOyC,mCCZvEjI,EAAQY,YAAa,EACrBZ,EAAQkI,YACR,SAAqBC,GACnB,OAAOA,aAA2D,EAASA,EAAiBC,SAAQC,IAAWA,aAAuC,EAASA,EAAOC,UAAY,IACpL,qCCJAtI,EAAQY,YAAa,EACrBZ,EAAQuI,uBAIR,SAAgCJ,GAC9B,IAAKA,EAAiBnF,OACpB,OAEF,MAAMwF,EAAkB/D,SAASgE,cAAc,0BACzCC,EAAkBjE,SAASgE,cAAc,kDAC3CD,GACFA,EAAgBG,SAEdD,GACFA,EAAgBC,SAElB,MAAMC,GAAW,EAAIC,EAAaX,aAAaC,GACzCW,EAAUrE,SAASqB,cAAc,UACvCgD,EAAQC,QAAQC,UAAY,GAC5BF,EAAQG,WAAY,EAAIC,EAAaC,kBAAkB,CACrDb,QAASM,IAEXnE,SAAS2E,KAAKC,YAAYP,EAC5B,EAtBA,IAAII,EAAe,EAAQ,MACvBL,EAAe,EAAQ,4BCL3B7I,EAAQsJ,WAAa,CACnB,gCAAiCC,IAAM,sDACvC,kCAAmCC,IAAM,qDACzC,qCAAsCC,IAAM,6DAC5C,kCAAmCC,IAAM,+DACzC,8CAA+CC,IAAM,+DACrD,qDAAsDC,IAAM,+DAC5D,kDAAmDC,IAAM,+DACzD,kDAAmDC,IAAM,+DACzD,oCAAqCC,IAAM,sDAC3C,qCAAsCC,IAAM,+DAC5C,qGAAsGC,IAAM,+DAC5G,mIAAoIC,IAAM,+DAC1I,iHAAkHC,IAAM,+DACxH,+FAAgGC,IAAM,+DACtG,uHAAwHC,IAAM,+DAC9H,mGAAoGC,IAAM,8DAC1G,iHAAkHC,IAAM,+DACxH,kDAAmDC,IAAM,qFClB3DC,EAAOzK,QAAU,CAAC,CACZ0K,OAAQC,EAAQ,MAChBC,QAAS,CAAC,QAAU,GAAG,SAAW,IAAK,sBAAuB,EAAK,cAAe,EAAM,kBAAmB,EAAM,gBAAkB,QAAQ,QAAU,GAAG,UAAW,EAAM,UAAW,EAAM,QAAU,OAAO,SAAW,QAAQ,uBAAwB,EAAM,gBAAiB,IAC7Q,CACAF,OAAQC,EAAQ,MAChBC,QAAS,CAAC,QAAU,GAAG,mBAAoB,EAAM,QAAU,EAAE,UAAY,WACzE,CACAF,OAAQC,EAAQ,MAChBC,QAAS,CAAC,QAAU,4BCR1B,MAAMC,EAAUF,EAAQ,OAClB,2BAAEG,EAA0B,SAAEC,EAAQ,aAAEC,GAC5CL,EAAAA,MAAAA,GAEF3K,EAAQ,EAAY,SAACiL,EAAKhI,EAAWiI,EAAeC,QAAtB,IAAJlI,IAAAA,EAAO,CAAC,GAYhC,IAAImI,EAAUP,EAAQQ,KAAIX,IACxB,IAAKA,EAAOA,OAAOO,GACjB,OAGFhI,EAAK6H,2BAA6BA,EAClC7H,EAAK8H,SAAWA,EAChB9H,EAAK+H,aAAeA,EAEpB,MAAMM,EAASZ,EAAOA,OAAOO,GAAKhI,EAAMyH,EAAOE,SAI/C,OAHIU,GAAUH,IACZlI,EAAOkI,EAAa,CAAElI,OAAMqI,SAAQZ,YAE/BY,CAAM,IAMf,OAFAF,EAAUA,EAAQG,QAAOD,QAAuB,IAANA,IAEtCF,EAAQpI,OAAS,EACZoI,EACEF,EACF,CAACA,GAED,EAEX,EAEAlL,EAAQ,EAAiB,CAACiL,EAAKhI,EAAMiI,IACnCL,EAAQW,QACN,CAACC,EAAUC,IACTA,EAAKhB,OAAOO,GACRQ,EAASE,MAAK,IAAMD,EAAKhB,OAAOO,GAAKhI,EAAMyI,EAAKd,WAChDa,GACNG,QAAQC,mGC/CZ,MCgBA,SAAcC,GAGb,OAFAA,EAAMA,GAAOpK,OAAOqK,OAAO,MAEpB,CAQNC,GAAI,SAAYC,EAAcC,IAC5BJ,EAAIG,KAAUH,EAAIG,GAAQ,KAAKE,KAAKD,EACtC,EASAE,IAAK,SAAaH,EAAcC,GAC3BJ,EAAIG,IACPH,EAAIG,GAAMI,OAAOP,EAAIG,GAAMK,QAAQJ,KAAa,EAAG,EAErD,EAUAK,KAAM,SAAcN,EAAcO,IAChCV,EAAIG,IAAS,IAAI1L,QAAQ8K,KAAI,SAAUa,GAAWA,EAAQM,EAAM,KAChEV,EAAI,MAAQ,IAAIvL,QAAQ8K,KAAI,SAAUa,GAAWA,EAAQD,EAAMO,EAAM,GACvE,EAEF,CD1DgBC,uKEFhB,EAAeC,IACb,QAAsBlH,IAAlBkH,EACF,OAAOA,EAET,IAAKC,EAAMC,EAAM,IAASF,EAAcG,MAAM,KAK9C,OAJID,IACFA,EAAS,IAAMA,GAGT,MAAJD,EACK,IAAMC,EAEiB,MAA5BD,EAAKG,OAAOH,EAAK3J,OAAS,GACrB2J,EAAKpM,MAAM,GAAI,GAAKqM,EAEtBD,EAAOC,CACf,YCXD,MAAMG,EAAY,IAAIC,IACtB,IAAIC,EAAa,GAEjB,MAAMC,EAAeC,IACnB,IAAIC,EAAiBD,EAGrB,IAAoB,IAFDA,EAAYb,QAAQ,KAEhB,CACrB,MAAOK,EAAMU,GAAMF,EAAYN,MAAM,KACrCO,EAAoBT,EAAI,IAAIW,mBAAmBD,EACjD,CAEA,MAAMjG,EAAWmG,mBAAmBH,GAUpC,OAPwBI,EAAAA,EAAAA,GACtBpG,EACAmG,mBAAmBE,KAGlBZ,MAAM,KAAK,EAEQ,EAGxB,SAASa,EAAWf,GAElB,OACEA,EAAKgB,WAAW,MAChBhB,EAAKgB,WAAW,aAChBhB,EAAKgB,WAAW,WAEThB,EAIF,IAAIiB,IACTjB,EACAhJ,OAAOqB,SAAS6I,MAAQlK,OAAOqB,SAAS6I,KAAKzN,SAAS,KAAI,SAC1DgH,QACJ,CAOO,MAAM0G,EAAgB9H,IAC3BiH,EAAajH,CAAK,EAWP+H,EAAgBZ,IAC3B,MAAMa,EAAkBC,EAAUd,GAE5Be,EAAYjB,EAAW5B,KAAI8C,IAA0B,IAAzB,KAAExB,EAAI,UAAEyB,GAAWD,EACnD,MAAO,CACLxB,KAAMyB,EACNC,aAAc1B,EACf,IAGGA,GAAO2B,EAAAA,EAAAA,MAAKJ,EAAWF,GAE7B,OAAIrB,EACK4B,EAAkB5B,EAAK6B,MAAMH,cAG/B,IAAI,EAYAI,EAAkBtB,IAC7B,MAAMa,EAAkBC,EAAUd,GAE5Be,EAAYjB,EAAW5B,KAAIqD,IAA0B,IAAzB,KAAE/B,EAAI,UAAEyB,GAAWM,EACnD,MAAO,CACL/B,KAAMyB,EACNC,aAAc1B,EACf,IAGGA,GAAO2B,EAAAA,EAAAA,MAAKJ,EAAWF,GAE7B,OAAIrB,EACKA,EAAKgC,OAGP,CAAC,CAAC,EAWEC,EAAWzB,IACtB,MAAMa,EAAkBd,EAAaQ,EAAWP,IAChD,GAAIJ,EAAUzL,IAAI0M,GAChB,OAAOjB,EAAUxL,IAAIyM,GAGvB,MAAMa,GAAWC,EAAAA,EAAAA,GAAwB3B,GACzC,GAAI0B,EACF,OAAOD,EAASC,EAASE,QAG3B,IAAIC,EAAYjB,EAAcC,GAQ9B,OANKgB,IACHA,EAAYf,EAAUd,IAGxBJ,EAAU7K,IAAI8L,EAAiBgB,GAExBA,CAAS,EAULf,EAAYd,IAGvB,IAAI6B,EAFoB9B,EAAaQ,EAAWP,IAShD,MANa,gBAAT6B,IACFA,EAAS,KAGXA,EAAYT,EAAkBS,GAEvBA,CAAS,2MC5JOC,EAAAA,GAAOC,6PCFhC,MAyDMC,EAzDU,SAAUC,GACxB,GAAmB,oBAAR3K,SACT,OAAO,EAET,MAAM4K,EAAW5K,SAASqB,cAAc,QACxC,IACE,GAAIuJ,EAASC,SAA2C,mBAAzBD,EAASC,QAAQC,SAC9C,OAAOF,EAASC,QAAQC,SAASH,EAErC,CAAE,MAAOI,GACP,OAAO,CACT,CACA,OAAO,CACT,CA4CkCC,CAAQ,YA1Cb,SAAUC,EAAK9E,GAC1C,OAAO,IAAIgB,SAAQ,CAACC,EAAS8D,KAC3B,GAAmB,oBAARlL,SAET,YADAkL,IAIF,MAAMC,EAAOnL,SAASqB,cAAc,QACpC8J,EAAKC,aAAa,MAAD,YACjBD,EAAKC,aAAa,OAAQH,GAE1BhO,OAAOoO,KAAKlF,GAASmF,SAAQlO,IAC3B+N,EAAKC,aAAahO,EAAK+I,EAAQ/I,GAAK,IAGtC+N,EAAKI,OAASnE,EACd+D,EAAKK,QAAUN,GAGblL,SAASyL,qBAAqB,QAAQ,IACtCzL,SAAS0L,kBAAkB,UAAU,GAAGC,YAC5B/G,YAAYuG,EAAK,GAEnC,EAE4B,SAAUF,GACpC,OAAO,IAAI9D,SAAQ,CAACC,EAAS8D,KAC3B,MAAMU,EAAM,IAAIC,eAChBD,EAAIE,KAAK,MAAOb,GAAK,GAErBW,EAAIL,OAAS,KACQ,MAAfK,EAAIG,OACN3E,IAEA8D,GACF,EAGFU,EAAII,KAAK,KAAK,GAElB,EAMMC,EAAa,CAAC,EAkBpB,MAhBiB,SAAUhB,EAAK9E,GAC9B,OAAO,IAAIgB,SAAQC,IACb6E,EAAWhB,GACb7D,IAIFsD,EAA0BO,EAAK9E,GAC5Be,MAAK,KACJE,IACA6E,EAAWhB,IAAO,CAAI,IAEvBiB,OAAM,QAAS,GAEtB,sBCrEO,MAAMC,EAAqB,CAIhCC,MAAM,QAINC,QAAQ,WAWJC,EAAoBC,IACxB,MAAOrE,EAAMsE,GAAeD,EAAQnE,MAAM,KAPZqE,MAS9B,MAAyB,eADH,MAAJvE,EAAY,SAP9BuE,EAAQ,OADsBA,EAQqCvE,GAP7D,GAAauE,EAAE3Q,MAAM,GAAK2Q,GAC1B9Q,SAAS,KAAO8Q,EAAE3Q,MAAM,GAAI,GAAK2Q,GAOS,mBAC9CD,EAAW,IAAOA,EAAW,GAAO,EAQlCE,EAAmBH,GAAWA,EAAQrD,WAAW,MAEvD,SAASyD,EAAQ1B,EAAK2B,GACpB,YAD0B,IAANA,IAAAA,EAAM,OACnB,IAAIzF,SAAQC,IACjB,MAAMwE,EAAM,IAAIC,eAChBD,EAAIE,KAAKc,EAAQ3B,GAAK,GACtBW,EAAIiB,mBAAqB,KACD,GAAlBjB,EAAIkB,YACN1F,EAAQwE,EACV,EAEFA,EAAII,KAAK,KAAK,GAElB,CAEA,MAgBMe,EAAY,+BAEZC,EAAkB,SAACC,EAAUC,EAAkBvI,GAAU,IAADwI,OAAlB,IAATD,IAAAA,EAAY,MAC7C,MAAME,EAAO,CACXC,mBAAoBJ,EAASI,mBAC7BnF,KAAM+E,EAAS/E,KACfoF,uBAAwBL,EAASK,uBACjC3D,UAAWsD,EAAStD,UACpB4D,kBAAmBN,EAASM,kBAC5BC,mBAAoBP,EAASO,mBAC7BC,UAA6B,QAApBN,EAAEF,EAASQ,iBAAS,IAAAN,EAAAA,EAAI,CAAC,GAGpC,MAAO,CACLD,YACAvI,OACA+I,KAAMT,EAASpG,OACfuG,OAEJ,EAEA,SAASO,EAAgBC,GACvB,OAAO,IAAIzG,SAAQC,IACjB,IACE,MAAMP,EAAS+G,EAASC,WACxBzG,EAAQP,EACV,CAAE,MAAOkE,GACP,IACE9N,OAAOK,eAAeC,KAAKwN,EAAI,eAC/B9N,OAAOK,eAAeC,KAAKwN,EAAI,WAM/B,MAAMA,EAJN+C,YAAW,KACTH,EAAgBC,GAAU1G,KAAKE,EAAQ,GACtC,IAIP,IAEJ,CAEO,IAAM2G,EAAU,WACrB,SAAAA,EAAYC,EAAexF,GAAa,KAgCxCyF,wBAA0B,IAAI1F,IAhB5B3J,KAAKsP,OAAS,IAAI3F,IAClB3J,KAAKuP,WAAa,IAAI5F,IACtB3J,KAAKwP,cAAgB,CAAC,EACtBxP,KAAKyP,WAAa,IAAI9F,IACtB3J,KAAK0P,mBAAqB,IAAI/F,IAC9B3J,KAAK2P,aAAe,IAAIhG,IACxB3J,KAAK4P,gBAAkB,IAAIjG,IAC3B3J,KAAK6P,SAAW,IAAIlG,IACpB3J,KAAK8P,wBAAyB,EAC9B9P,KAAK+P,eAAiB,GACtB/P,KAAKgQ,kBAAoB,IAAIC,IAC7BjQ,KAAKkQ,kBAAoB,IAAID,IAC7BjQ,KAAKoP,cAAgBA,GACrB3E,EAAAA,EAAAA,IAAcb,EAChB,CAAC,IAAAlI,EAAAyN,EAAA1Q,UAgrBA,OAhrBAiD,EAIDyO,YAAA,SAAY9D,GACV,IAAI+D,EAAkBpQ,KAAKqP,wBAAwBnR,IAAImO,GAQvD,OANK+D,IACHA,EAAkBrC,EAAQ1B,EAAI,OAC9BrM,KAAKqP,wBAAwBxQ,IAAIwN,EAAK+D,IAIjCA,EACJ9H,MAAK0G,IACJhP,KAAKqP,wBAAwBgB,OAAOhE,GAC7B2C,KAER1B,OAAMnB,IAEL,MADAnM,KAAKqP,wBAAwBgB,OAAOhE,GAC9BF,CAAG,GAEf,EAACzK,EAED4O,aAAA,SAAaC,GACXvQ,KAAKuQ,UAAYA,EACjBvQ,KAAKwQ,iBAAmBD,EAAU,0BAA0BE,MAAKC,GAAKA,GACxE,EAAChP,EAEDiP,kBAAA,SAAkBC,GAChB,MAAM,SAAEC,EAAQ,QAAEC,EAAU,GAAMF,EAC5BvE,EAAMqB,EAAkBmD,GAC9B,OAAO7Q,KAAKmQ,YAAY9D,GAAK/D,MAAK0E,IAChC,MAAM,OAAEG,EAAM,aAAE4D,GAAiB/D,EAGjC,GAAe,MAAXG,EACF,IACE,MAAM6D,EAAcxN,KAAKC,MAAMsN,GAC/B,QAAyB5O,IAArB6O,EAAY1H,KACd,MAAM,IAAIkE,MAAM,iCAGlB,MAAMI,EAAciD,EAASrH,MAAM,KAAK,GAKxC,OAJIoE,IAAgBoD,EAAY1H,KAAK2H,SAASrD,KAC5CoD,EAAY1H,MAAI,IAAQsE,GAGnBvP,OAAO6S,OAAON,EAAS,CAC5BzD,OAAQI,EAAmBE,QAC3B0D,QAASH,GAEb,CAAE,MAAO7E,GACP,CAKJ,OAAe,MAAXgB,GAA6B,MAAXA,EAER,cAAR0D,GAAoC,cAARA,EACvBxS,OAAO6S,OAAON,EAAS,CAC5BzD,OAAQI,EAAmBC,QAMxBxN,KAAK2Q,kBACVtS,OAAO6S,OAAON,EAAS,CAAEC,SAAS,YAAcO,UAAU,KAK/C,MAAXjE,EACKnN,KAAK2Q,kBACVtS,OAAO6S,OAAON,EAAS,CACrBC,SAAS,YACTQ,qBAAqB,KAMvBP,EAAU,EACL9Q,KAAK2Q,kBACVtS,OAAO6S,OAAON,EAAS,CAAEE,QAASA,EAAU,KAKzCzS,OAAO6S,OAAON,EAAS,CAC5BzD,OAAQI,EAAmBC,OAC3B,GAEN,EAAC9L,EAED4P,0BAAA,SAA0BV,GACxB,MAAM,SAAEC,EAAQ,QAAEC,EAAU,GAAMF,EAC5BvE,EAAMqB,EAAkBmD,GAAUU,QAAQ,QAAD,aAC/C,OAAOvR,KAAKmQ,YAAY9D,GAAK/D,MAAK0E,IAChC,MAAM,OAAEG,EAAM,aAAE4D,GAAiB/D,EAGjC,GAAe,MAAXG,EACF,IACE,OAAO9O,OAAO6S,OAAON,EAAS,CAC5BzD,OAAQI,EAAmBE,QAC3B0D,QAASJ,GAEb,CAAE,MAAO5E,GACP,CAKJ,OAAe,MAAXgB,GAA6B,MAAXA,EAER,cAAR0D,GAAoC,cAARA,EACvBxS,OAAO6S,OAAON,EAAS,CAC5BzD,OAAQI,EAAmBC,QAMxBxN,KAAKsR,0BACVjT,OAAO6S,OAAON,EAAS,CAAEC,SAAS,YAAcO,UAAU,KAK/C,MAAXjE,EACKnN,KAAKsR,0BACVjT,OAAO6S,OAAON,EAAS,CACrBC,SAAS,YACTQ,qBAAqB,KAMvBP,EAAU,EACL9Q,KAAKsR,0BACVjT,OAAO6S,OAAON,EAAS,CAAEE,QAASA,EAAU,KAKzCzS,OAAO6S,OAAON,EAAS,CAC5BzD,OAAQI,EAAmBC,OAC3B,GAEN,EAAC9L,EAED8P,iBAAA,SAAiB7D,GACf,MAAMkD,GAAWtF,EAAAA,EAAAA,IAASoC,GAC1B,GAAI3N,KAAKyP,WAAWxR,IAAI4S,GAAW,CACjC,MAAMxC,EAAWrO,KAAKyP,WAAWvR,IAAI2S,GAEnC,OAAOtI,QAAQC,QAAQ6F,EAE3B,CAEA,OAAOrO,KAAK2Q,kBAAkB,CAAEE,aAAYvI,MAAK+F,IAC/CrO,KAAKyP,WAAW5Q,IAAIgS,EAAUxC,GAEvBA,IAEX,EAAC3M,EAED+P,yBAAA,SAAyB9D,GACvB,MAAMkD,GAAWtF,EAAAA,EAAAA,IAASoC,GAC1B,GAAI3N,KAAK0P,mBAAmBzR,IAAI4S,GAAW,CACzC,MAAMxC,EAAWrO,KAAK0P,mBAAmBxR,IAAI2S,GAE3C,OAAOtI,QAAQC,QAAQ6F,EAE3B,CAEA,OAAOrO,KAAKsR,0BAA0B,CAAET,aAAYvI,MAAK+F,IACvDrO,KAAK0P,mBAAmB7Q,IAAIgS,EAAUxC,GAE/BA,IAEX,EAAC3M,EAEDgQ,kBAAA,SAAkBC,GAChB,GAAI3R,KAAK2P,aAAa1R,IAAI0T,GAAY,CACpC,MAAMX,EAAchR,KAAK2P,aAAazR,IAAIyT,GAC1C,OAAOpJ,QAAQC,QAAQ,CAAEmJ,YAAWX,eACtC,CAGA,OAAOjD,EADuB,eAAe4D,EAAS,QACnC,OAAQrJ,MAAKsJ,IAC9B,MAAMZ,EAAcxN,KAAKC,MAAMmO,EAAIb,cAGnC,OADA/Q,KAAK2P,aAAa9Q,IAAI8S,EAAWX,GAC1B,CAAEW,YAAWX,cAAa,GAErC,EAACtP,EAEDgJ,cAAA,SAAciD,GACZ,OAAOjD,EAAAA,EAAAA,IAAciD,EACvB,EAEAjM,EACAgG,SAAA,SAASiG,GACP,MAAMkD,GAAWtF,EAAAA,EAAAA,IAASoC,GAC1B,GAAI3N,KAAKsP,OAAOrR,IAAI4S,GAAW,CAC7B,MAAMrC,EAAOxO,KAAKsP,OAAOpR,IAAI2S,GAE3B,OAAIrC,EAAKqD,MACAtJ,QAAQC,QAAQ,CACrBqJ,MAAOrD,EAAKqD,MACZ1E,OAAQqB,EAAKrB,SAIV5E,QAAQC,QAAQgG,EAAK2C,QAEhC,CAEA,GAAInR,KAAKuP,WAAWtR,IAAI4S,GACtB,OAAO7Q,KAAKuP,WAAWrR,IAAI2S,GAG7B,MAAMiB,EAAmB,CACvB9R,KAAK+R,cACL/R,KAAKwR,iBAAiBX,IAOxB,MAAMT,EAAkB7H,QAAQE,IAAIqJ,GAAkBxJ,MAAK0J,IACzD,MAAOC,EAAiBC,EAAkBC,GAAmBH,EAE7D,GACEE,EAAiB/E,SAAWI,EAAmBC,QAC/C2E,aAAe,EAAfA,EAAiBhF,UAAWI,EAAmBC,MAE/C,MAAO,CACLL,OAAQI,EAAmBC,OAI/B,IAAIa,EAAW6D,EAAiBf,QAEhC,MAAM,mBACJ1C,EACAE,kBAAmByD,EAAwB,GAAE,UAC7CvD,EAAY,CAAC,GACXR,EAEEgE,EAAc,CAAC,EAEfC,EAAoBzS,MAAM0S,KAAK,IAAItC,IAAI5R,OAAOmU,OAAO3D,KAErD4D,EAAYvV,IAChB,GAAI8C,KAAK6P,SAAS5R,IAAIf,EAAMwV,MAC1B,OAAO1S,KAAK6P,SAAS3R,IAAIhB,EAAMwV,MAC1B,GAAI1S,KAAK4P,gBAAgB3R,IAAIf,EAAMwV,MACxC,OAAO1S,KAAK4P,gBAAgB1R,IAAIhB,EAAMwV,MAGxC,MAAMC,EAAW3S,KAAKoP,cAAclS,EAAMuR,oBAAoBnG,MAC5DgG,IACE,MAAO,CACLA,WAzYQsE,EAyYiBtE,EAzYXsE,GAAKA,EAAE9U,SAAY8U,GA0YjCC,aAAc3V,EAAM+K,OAAO4K,aAC3BC,KAAM5V,EAAM+K,OAAO6K,MA3YXF,KA4YT,IAUL,OANA5S,KAAK4P,gBAAgB/Q,IAAI3B,EAAMwV,KAAMC,GACrCA,EAASrK,MAAKP,IACZ/H,KAAK6P,SAAShR,IAAI3B,EAAMwV,KAAM3K,GAC9B/H,KAAK4P,gBAAgBS,OAAOnT,EAAMwV,KAAK,IAGlCC,CAAQ,EAGjB,OAAOpK,QAAQE,IACb6J,EAAkBtK,KAAI2J,GAAa3R,KAAK0R,kBAAkBC,MAC1DrJ,MAAKyK,IACL,MAAMC,EAAS,GACTC,GAAwBC,EAAAA,EAAAA,GAAOd,GAErC,IAAK,MAAM,YAAEpB,EAAW,UAAEW,KAAetT,OAAOmU,OAAOO,GAAa,CAClEC,EAAOlK,KAAK,CAAE4J,KAAMf,KAAcX,IAClC,IAAK,MAAMmC,KAAmBnC,EAAYrC,kBACnCsE,EAAyBhC,SAASkC,IACrCF,EAAyBnK,KAAKqK,EAGpC,CAEA,MAAMC,EAAoB,CACxB7K,QAAQE,IAAIuK,EAAOhL,IAAIyK,IACvBzS,KAAKoP,cAAcX,EAAmB,SAItC2E,EAAkBtK,KAAK9I,KAAKoP,cAAcX,IAS5C,MAAM4E,EAAyB9K,QAAQE,IAAI2K,GAAmB9K,MAC5DrC,IACE,MAAOqN,EAAiBC,EAAeC,GAAiBvN,EAExDoM,EAAYoB,UAAY,IAAIC,KAE5B,IAAK,MAAMC,KAAkBL,IACtBK,GAAkBA,aAA0BnG,SAC/C6E,EAAYlF,OAASI,EAAmBC,MACxC6E,EAAYR,MAAQ8B,GAYxB,IAAIC,EAEJ,KARIJ,GAAiBA,aAAyBhG,SAE5C6E,EAAYlF,OAASI,EAAmBC,MACxC6E,EAAYR,MAAQ2B,GAKlBnB,EAAYlF,SAAWI,EAAmBC,MAAO,CAcnD,GAbA6E,EAAYlF,OAASI,EAAmBE,SAER,IAA9ByE,EAAiBd,WACa,KAA9Be,aAAe,EAAfA,EAAiBf,YAEjBiB,EAAYjB,UAAW,GAEzB/C,EAAWhQ,OAAO6S,OAAO7C,EAAU,CACjCK,uBAAwBuD,EACpBA,EAAgBvD,uBAAsB,KAIT,iBAAxByD,aAAe,EAAfA,EAAiBhB,SAAsB,CAChDyC,EAAgBxF,EAAgBC,EAAU,KAAMkF,GAEhDK,EAAcC,iBAAmB1B,EAAgBhB,QAEjD,MAAM2C,EAAiB,IAAIC,eAAe,CACxCC,KAAAA,CAAMC,GACJ,MAAMC,EAAK,IAAIC,YACfF,EAAWpI,QAAQqI,EAAGE,OAAOjC,EAAgBhB,SAC/C,EACAkD,IAAAA,CAAKJ,GAEHA,EAAWK,OACb,EACAC,MAAAA,GAAU,IAGZ,OAAOxF,GACLyF,EAAAA,EAAAA,0BAAyBV,IACzBxL,MAAKL,IACL2L,EAAcC,iBAAmB5L,EAE1B2L,IAEX,CACEA,EAAgBxF,EACdC,EACAmF,EACAD,EAGN,CAGA,OAAOK,CAAa,IAKlBa,EAA0BlM,QAAQE,IACtCwK,EAAyBjL,KAAImL,IAE3B,GAAInT,KAAKwP,cAAc2D,GAAkB,CACvC,MAAMnC,EAAchR,KAAKwP,cAAc2D,GACvC,MAAO,CAAEA,kBAAiBnC,cAC5B,CAEA,OAAOhR,KAAKmQ,YACQ,mBAAmBgD,EAAe,SAEnD7K,MAAK0E,IACJ,MAAMgE,EAAcxN,KAAKC,MAAMuJ,EAAI+D,cACnC,MAAO,CAAEoC,kBAAiBnC,cAAa,IAExC1D,OAAM,KACL,MAAM,IAAIE,MAAM,sCACyC2F,EAAe,SACvE,GACD,KAEN7K,MAAKoM,IACL,MAAMC,EAAwB,CAAC,EAO/B,OALAD,EAAmBhI,SAAQ5B,IAAuC,IAAtC,gBAAEqI,EAAe,YAAEnC,GAAalG,EAC1D6J,EAAsBxB,GAAmBnC,EACzChR,KAAKwP,cAAc2D,GAAmBnC,CAAW,IAG5C2D,CAAqB,IAG9B,OACEpM,QAAQE,IAAI,CAAC4K,EAAwBoB,IAClCnM,MAAK+C,IAA0C,IAC1C8F,GADEyC,EAAec,GAAmBrJ,EAaxC,OAXIuI,IACFzC,EAAU,IAAKyC,EAAec,sBAC9BrC,EAAYlB,QAAUA,EACtByD,EAAAA,EAAQ1L,KAAK,0BAA2B,CACtCsF,KAAM2C,EACNyC,cAAezC,KAInBnR,KAAKsP,OAAOzQ,IAAIgS,EAAUwB,GAEtBA,EAAYR,MACP,CACLA,MAAOQ,EAAYR,MACnB1E,OAAQkF,EAAYlF,QAIjBgE,CAAO,IAGf7D,OAAMnB,IACE,CACL0F,MAAO1F,EACPgB,OAAQI,EAAmBC,SAE7B,GAEN,IAcJ,OAXA4C,EACG9H,MAAK,KACJtI,KAAKuP,WAAWc,OAAOQ,EAAS,IAEjCvD,OAAMuE,IAEL,MADA7R,KAAKuP,WAAWc,OAAOQ,GACjBgB,CAAK,IAGf7R,KAAKuP,WAAW1Q,IAAIgS,EAAUT,GAEvBA,CACT,EAEA1O,EACAiG,aAAA,SAAagG,EAASpG,QAAO,IAAPA,IAAAA,EAAU,CAAC,GAC/B,MAAMsJ,GAAWtF,EAAAA,EAAAA,IAASoC,GAC1B,GAAI3N,KAAKsP,OAAOrR,IAAI4S,GAAW,CAAC,IAADgE,EAC7B,MAAMxG,EAAWrO,KAAKsP,OAAOpR,IAAI2S,GAEjC,GAAIxC,EAAS8C,QACX,OAAO9C,EAAS8C,QAGlB,GAAW,QAAX0D,EAAItN,SAAO,IAAAsN,GAAPA,EAASC,iBACX,MAAO,CACLjD,MAAOxD,EAASwD,MAChB1E,OAAQkB,EAASlB,OAGvB,CAEF,EAACzL,EAEDqT,eAAA,SAAelE,GAEb,QAvkBkCmE,MACpC,GACE,eAAgBC,gBACW,IAApBA,UAAUC,WACjB,CACA,IAAKD,UAAUC,WAAWC,eAAa,IAAQlE,SAAS,MACtD,OAAO,EAET,GAAIgE,UAAUC,WAAWE,SACvB,OAAO,CAEX,CACA,OAAO,CAAI,EA2jBJJ,OAKDC,UAAUI,YAAalH,EAAUmH,KAAKL,UAAUI,cAKhDrV,KAAKsP,OAAOrR,IAAI4S,GAKtB,EAACnP,EAED6T,SAAA,SAAS1E,GACP,IAAK7Q,KAAK+U,eAAelE,GACvB,MAAO,CACLvI,KAAME,GAAWA,GAAQ,GACzBgN,MAAOA,QAGX,GAAIxV,KAAKgQ,kBAAkB/R,IAAI4S,GAC7B,MAAO,CACLvI,KAAME,GAAWA,GAAQ,GACzBgN,MAAOA,QAIX,MAAMC,EAAQ,CACZjN,QAAS,KACT8D,OAAQ,KACRoJ,QAAS,MAEXD,EAAMC,QAAU,IAAInN,SAAQ,CAACC,EAAS8D,KACpCmJ,EAAMjN,QAAUA,EAChBiN,EAAMnJ,OAASA,CAAM,IAEvBtM,KAAK+P,eAAejH,KAAK,CAAC+H,EAAU4E,IACpC,MAAME,EAAS,IAAIC,gBAgBnB,OAfAD,EAAOE,OAAO9T,iBAAiB,SAAS,KACtC,MAAM+T,EAAQ9V,KAAK+P,eAAegG,WAAUC,IAAA,IAAEC,GAAED,EAAA,OAAKC,IAAMpF,CAAQ,KAEpD,IAAXiF,GACF9V,KAAK+P,eAAe/G,OAAO8M,EAAO,EACpC,IAGG9V,KAAK8P,yBACR9P,KAAK8P,wBAAyB,EAC9BZ,YAAW,KACTlP,KAAKkW,2BAA2B,GAC/B,MAGE,CACL5N,KAAMA,CAACE,EAAS8D,IAAWmJ,EAAMC,QAAQpN,KAAKE,EAAS8D,GACvDkJ,MAAOG,EAAOH,MAAM9U,KAAKiV,GAE7B,EAACjU,EAEDwU,0BAAA,YACuB5V,OAAO6V,qBAAmB,CAAKC,GAAMlH,WAAWkH,EAAI,MAE5D,KACX,MAAMC,EAAarW,KAAK+P,eAAe/G,OAAO,EAAG,GAC3CsN,EAAa/N,QAAQE,IACzB4N,EAAWrO,KAAIuO,IAA2B,IAAzB1F,EAAU2F,GAASD,EASlC,OANKvW,KAAKgQ,kBAAkB/R,IAAI4S,KAC9B7Q,KAAKuQ,UAAU,qBAAsB,CAAExM,SAAU8M,IACjD7Q,KAAKgQ,kBAAkByG,IAAI5F,IAIzB7Q,KAAKwQ,iBACAgG,EAAShO,SAAQ,GAGnBxI,KAAK0W,YAAWnL,EAAAA,EAAAA,IAASsF,IAAWvI,MAAK,KACzCtI,KAAKkQ,kBAAkBjS,IAAI4S,KAC9B7Q,KAAKuQ,UAAU,yBAA0B,CAAExM,SAAU8M,IACrD7Q,KAAKkQ,kBAAkBuG,IAAI5F,IAG7B2F,EAAShO,SAAQ,EAAK,GACtB,KAIFxI,KAAK+P,eAAepQ,OACtB2W,EAAWhO,MAAK,KACd4G,YAAW,KACTlP,KAAKkW,2BAA2B,GAC/B,IAAK,IAGVlW,KAAK8P,wBAAyB,CAChC,GAEJ,EAACpO,EAEDgV,WAAA,SAAW7F,GACT,MAAM8F,EAAcjJ,EAAkBmD,GAsBpC,OAAO+F,EAAeD,EAAa,CACjCE,YAAY,YACZC,GAAG,UACFxO,MAAK,IAGNtI,KAAKwR,iBAAiBX,IAG5B,EAACnP,EAEDqV,SAAA,SAASpJ,GACP3N,KAAK0H,SAASiG,EAChB,EAACjM,EAED+F,2BAAA,SAA2BkG,GACzB,MAAMkD,GAAWtF,EAAAA,EAAAA,IAASoC,GACpBa,EAAOxO,KAAKyP,WAAWvR,IAAI2S,GACjC,GAAIrC,EAAM,CACR,MAAMoF,EAAgBxF,EAAgBI,EAAK2C,SAE3C,MAAM,GAANlR,QAAAiT,EAAAA,EAAAA,GACK8D,EAAoBpD,EAAcpF,KAAKC,qBAAmB,CAC7Df,EAAkBmD,IAEtB,CACE,OAAO,IAEX,EAACnP,EAEDuV,eAAA,SAAetJ,GACb,MAAMkD,GAAWtF,EAAAA,EAAAA,IAASoC,GACpBa,EAAOxO,KAAKsP,OAAOpR,IAAI2S,GAC7B,OAAQrC,GAAQA,EAAK4C,QACvB,EAAC1P,EAEDqQ,YAAA,SAAYjB,GACV,YADiB,IAAPA,IAAAA,EAAU,GACb9Q,KAAKmQ,YAA8B,4BAA4B7H,MACpE0E,IACE,MAAM,OAAEG,EAAM,aAAE4D,GAAiB/D,EAEjC,IAAIkK,EAEJ,GAAe,MAAX/J,GAAkB2D,EAAU,EAE9B,OAAO9Q,KAAK+R,YAAYjB,EAAU,GAIpC,GAAe,MAAX3D,EACF,IACE,MAAM6D,EAAcxN,KAAKC,MAAMsN,GAC/B,QAA2C5O,IAAvC6O,EAAYtC,uBACd,MAAM,IAAIlB,MAAM,iCAGlB0J,EAAUlG,CACZ,CAAE,MAAO7E,GACP,CAIJ,OAAO+K,CAAO,GAGpB,EAAC/H,CAAA,CA/sBoB,GAktBvB,MAAM6H,EAAsBvI,IACzBnO,OAAO6W,gBAAgB1I,IAAuB,IAAIzG,KACjDoP,GAASC,GAAkBD,IAGxB,IAkGHE,EAlGSC,EAAU,SAAAC,GACrB,SAAAD,EAAYE,EAAe7N,EAAYyE,GAAW,IAAD7O,EA2B9C,OARDA,EAAAgY,EAAA7Y,KAAA,MAlBsB,SAAC+Y,EAAWC,GAKhC,QAL0C,IAAVA,IAAAA,EAAU,eAKrCF,EAHHE,EAAU,cAGmBD,GAC7B,MAAM,IAAIlK,MAAM,gEACiDkK,EAAS,KAI5E,OACED,EAAcE,GAAYD,KAEvBpK,OAAMnB,GAAOA,GAEpB,GAEqBvC,IAAW,KAE5ByE,GACF7O,EAAKiQ,WAAW5Q,KAAI0M,EAAAA,EAAAA,IAAS8C,EAAS/E,MAAO,CAC3CuH,SAAUxC,EAAS/E,KACnB6H,QAAS9C,EACTlB,OAAO,YAEV3N,CACH,EA7BqBoY,EAAAA,EAAAA,GAAAL,EAAAC,GA6BpB,IAAAK,EAAAN,EAAA9Y,UAkEA,OAlEAoZ,EAEDnB,WAAA,SAAW7F,GACT,OAAO2G,EAAA/Y,UAAMiY,WAAU/X,KAAC,KAAAkS,GAAUvI,MAAKL,IACrC,GAAIA,EAAOkF,SAAWI,EAAmBE,QACvC,OAAOlF,QAAQC,UAEjB,MAAM6F,EAAWpG,EAAOkJ,QAClBuG,EAAYrJ,EAASI,mBACrBqJ,EAAgBd,EAAoBU,GAC1C,OAAOnP,QAAQE,IAAIqP,EAAc9P,IAAI4O,IAAiBtO,MAAK,IAAM+F,GAAS,GAE9E,EAACwJ,EAEDrG,iBAAA,SAAiB7D,GACf,OAAO6J,EAAA/Y,UAAM+S,iBAAgB7S,KAAC,KAAAgP,GAASrF,MAAKwK,GACtCA,EAAK1B,SACHtD,EAAiBH,GACZmF,EAIF/E,EAAQJ,EAAQ,QAASrF,MAAK0E,GAChB,MAAfA,EAAIG,OAIC,CACLA,OAAQI,EAAmBC,OAMxBsF,IAGJA,GAEX,EAAC+E,EAEDpG,yBAAA,SAAyB9D,GACvB,OAAO6J,EAAA/Y,UAAMgT,yBAAwB9S,KAAC,KAAAgP,GAASrF,MAAKwK,GAC9CA,EAAK1B,SACHtD,EAAiBH,GACZmF,EAIF/E,EAAQJ,EAAQ,QAASrF,MAAK0E,GAChB,MAAfA,EAAIG,OAIC,CACLA,OAAQI,EAAmBC,OAMxBsF,IAGJA,GAEX,EAACyE,CAAA,CA/FoB,CAASpI,GAoGzB,MAAM4I,EAAYC,IACvBV,EAAWU,CAAO,EAGPC,EAAe,CAC1BpM,QAAS8B,GAAW2J,EAAS/B,SAAS5H,GAGtClG,2BAA4BkG,GAC1B2J,EAAS7P,2BAA2BkG,GACtCjG,SAAUiG,GAAW2J,EAAS5P,SAASiG,GAEvChG,aAAc,SAACgG,EAASpG,GAAY,YAAL,IAAPA,IAAAA,EAAU,CAAC,GACjC+P,EAAS3P,aAAagG,EAASpG,EAAQ,EACzCgO,SAAU5H,GAAW2J,EAAS/B,SAAS5H,GACvCsJ,eAAgBtJ,GAAW2J,EAASL,eAAetJ,GACnDoJ,SAAUpJ,GAAW2J,EAASP,SAASpJ,GACvCoE,YAAaA,IAAMuF,EAASvF,eAG9B,QAEO,SAASmG,IACd,OAAIZ,EACKA,EAAS9H,cAET,CAAC,CAEZ,CAEO,SAAS2I,IACd,OAAIb,EACKA,EAASzH,SAET,CAAC,CAEZ,kKCz8BO,SAASuI,EAAoBtN,GAA0B,IAAzB,SAAElI,EAAQ,SAAEyV,GAAUvN,EAKzD,OAJAwN,EAAAA,EAAAA,YAAU,KACRD,GAAU,IAGLzV,CACT,CCXO,MAAM2V,EAAmB,CAAC,OAAD,iECyEzB,SAASC,EAAYC,EAAQC,GAClC,GAAID,aAAkBE,aAAeD,aAAkBC,YAAa,CAClE,MAAMC,EAAQF,EAAOG,aAAa,SAGlC,GAAID,IAAUH,EAAOI,aAAa,SAAU,CAC1C,MAAMC,EAAWJ,EAAOK,WAAU,GAGlC,OAFAD,EAAStM,aAAa,QAAD,IACrBsM,EAASF,MAAQA,EACVA,IAAUH,EAAOG,OAASH,EAAOD,YAAYM,EACtD,CACF,CAEA,OAAOL,EAAOD,YAAYE,EAC5B,CAsBO,SAASM,EACdC,EACAC,QAAqB,IAArBA,IAAAA,EAAwB,CACtBC,KAAM,CAAC,EACPC,KAAM,CAAC,IAGT,MAAMC,EAAU,IAAI1P,IACd2P,EAAiB,GAGvB,IAAK,MAAMnY,KAAQ8X,EAASM,WAAY,CAAC,IAADC,EAAAC,EACtC,MAAMC,EAAWvY,EAAKuY,SAASC,cACzBC,EAAoB,QAAlBJ,EAAGrY,EAAK0Y,kBAAU,IAAAL,GAAI,QAAJC,EAAfD,EAAiBI,UAAE,IAAAH,OAAJ,EAAfA,EAAqB9W,MAEhC,GAAKmX,EAAc3Y,GAAnB,CAEA,GAAI4Y,EAAgBL,GAElB,GAAY,SAARA,GAA+B,SAARA,EACzB,IAAK,MAAMM,KAAa7Y,EAAK0Y,WAAY,CACvC,MAAMI,EAAiC,UAAdD,EAAUtH,KAYZ,IAADwH,EAAtB,GATAhB,EAAsBQ,GAAY,IAC7BR,EAAsBQ,IAGtBO,IACHf,EAAsBQ,GAAUM,EAAUtH,MAAQsH,EAAUrX,OAI1DsX,EACFf,EAAsBQ,GAAUS,MAAK,IACJ,QAA/BD,EAAAhB,EAAsBQ,UAAS,IAAAQ,GAA/BA,EAAiCC,MAC7BjB,EAAsBQ,GAAUS,MAAK,IAExCH,EAAUrX,MAAK,GAEtB,KACK,CACL,IAAIyX,EAAajZ,EAAK4X,WAAU,GAQhC,GAPAqB,EAAW5N,aAAa,oBAAoB,GAGP,WAAjC4N,EAAWV,SAASC,gBACtBS,EAAaC,EAAcD,IAGzBR,EACF,GAAKP,EAAQpb,IAAI2b,GAGV,CAAC,IAADU,EACL,MAAMC,EAAgClB,EAAQnb,IAAI0b,GAGtC,QAFZU,EAAAhB,EACEiB,GACAxN,kBAAU,IAAAuN,GAFZA,EAEcE,YACZlB,EAAeiB,IAEjBjB,EAAeiB,GAAiCH,CAClD,MAVEd,EAAexQ,KAAKsR,GACpBf,EAAQxa,IAAI+a,EAAIN,EAAe3Z,OAAS,QAW1C2Z,EAAexQ,KAAKsR,EAExB,CAKEjZ,EAAKoY,WAAW5Z,QAClB2Z,EAAexQ,KAAI/I,MAAnBuZ,GAAcpG,EAAAA,EAAAA,GACT8F,EAA+B7X,EAAM+X,GACrCI,gBA3D2B,CA8DpC,CAEA,MAAO,CAAEA,iBAAgBJ,wBAC3B,CAEA,SAASmB,EAAclZ,GACrB,MAAM6D,EAAS5D,SAASqB,cAAc,UACtC,IAAK,MAAMgY,KAAQtZ,EAAK0Y,WACtB7U,EAAOwH,aAAaiO,EAAK/H,KAAM+H,EAAK9X,OAItC,OAFAqC,EAAOY,UAAYzE,EAAKyE,UAEjBZ,CACT,CAEO,SAAS+U,EAAgBL,GAC9B,OAAOnB,EAAiBtH,SAASyI,EACnC,CAKO,SAASI,EAAc3Y,GAC5B,OAAyB,IAAlBA,EAAKuZ,QACd,CCjMA,MAAMC,EAAavZ,SAASqB,cAAc,OACpCmY,EAA8B,CAClCzB,KAAM,GACNC,KAAM,IAGFyB,EAAiBA,KAAO,IAADC,EAC3B,MAAM,eAAExB,EAAc,sBAAEJ,GACtBF,EAA+B2B,GAEjCC,EAA4BzB,KAAO9a,OAAOoO,KAAKyM,EAAsBC,MACrEyB,EAA4BxB,KAAO/a,OAAOoO,KAAKyM,EAAsBE,MDkMhE,SAAoCF,GACzC,IAAKA,EAAuB,OAE5B,MAAM,KAAEC,EAAI,KAAEC,GAASF,EAEjB6B,EAAc3Z,SAASgE,cAAc,QACvC2V,GACF1c,OAAO2c,QAAQ7B,GAAMzM,SAAQrB,IAAsC,IAApC4P,EAAeC,GAAe7P,EAC3D0P,EAAYvO,aAAayO,EAAeC,EAAe,IAI3D,MAAMC,EAAc/Z,SAASgE,cAAc,QACvC+V,GACF9c,OAAO2c,QAAQ5B,GAAM1M,SAAQsJ,IAAsC,IAApCiF,EAAeC,GAAelF,EAC3DmF,EAAY3O,aAAayO,EAAeC,EAAe,GAG7D,CClNEE,CAA2BlC,GAM3B,MAAMmC,EAAuBja,SAASka,iBAAiB,sBAEf,IAADC,EAAvC,GAAoC,IAAhCF,EAAqB1b,OAEvB,YADA4b,EAAAna,SAAS2E,MAAKyV,OAAMzb,MAAAwb,GAAArI,EAAAA,EAAAA,GAAIoG,IAI1B,MAAMmC,EAAe,ID8ChB,SAAkB3Q,GAA0C,IAAzC,SAAE4Q,EAAQ,SAAEC,EAAQ,QAAEC,EAAO,MAAEC,GAAO/Q,EAC9D,IAAK,MAAMgR,KAAuBJ,EAAU,CAC1C,MAAMK,EAAkBJ,EAAS5F,WAAUrS,GACzC8U,EAAY9U,EAAGoY,MAGQ,IAArBC,EACFH,EAAQE,GAGRH,EAAS3S,OAAO+S,EAAiB,EAErC,CAGA,IAAK,MAAMC,KAAWL,EACpBE,EAAMG,EAEV,CC/DEC,CAAU,CACRP,SAAUL,EACVM,SAAUrC,EACVsC,QAASza,GAAQA,EAAK4L,WAAWyN,YAAYrZ,GAC7C0a,MAAO1a,GAAQsa,EAAa3S,KAAK3H,MAGnC2Z,EAAA1Z,SAAS2E,MAAKyV,OAAMzb,MAAA+a,EAAIW,EAAa,EAmChC,SAASS,EAAqBpR,GAIjC,IAJkC,cACpC0I,EAAa,mBACbkB,EAAkB,mBAClByH,GACDrR,GACCwN,EAAAA,EAAAA,YAAU,KACR,GAAI9E,SAAAA,EAAe4I,KAAM,EDvEtB,SAA6BrW,GAClC,GAAe,mBAAJA,EACT,MAAM,IAAIyH,MAAM,uDACyCzH,EAAI,KAEjE,CCmEMsW,CAAoB7I,EAAc4I,MAElC,MAAM,OAAE5Z,IAAW8Z,EAAAA,EAAAA,KAEbC,EACJ5e,EAAAA,cAAC6V,EAAc4I,KD3Fd,CACLza,SAAU,CACRoC,UAH0BnH,EC4FgBuf,GDzF1Bxa,SAASoC,UAE3BuH,OAAQ1O,EAAM0O,OACdwH,KAAMlW,EAAMkW,MAAQ,CAAC,EACrB0J,WAAY5f,EAAM4f,WAClBC,YAAa7f,EAAM6f,cCuFXC,GAAkBnM,EAAAA,EAAAA,GAAU,kBAEhC,CAAEvN,QAASuZ,GACXA,GACAlR,IAAiB,IAAhB,OAAEpD,GAAQoD,EACT,MAAO,CAAErI,QAASiF,EAAQ,IAE5B0U,MAEFna,EAIE7E,EAAAA,cAACya,EAAoB,CAACC,SAAUwC,GAC9Bld,EAAAA,cAACif,EAAAA,GAAmBla,SAAQ,CAACC,MAAO+R,GAClC/W,EAAAA,cAACkf,EAAAA,iBAAgB,KAAEH,KAGvB/B,EAEJ,CDnHG,IAAyB/d,ECqH5B,MAAO,MD4FJ,WACL,MAAMkgB,EAAgB1b,SAASka,iBAAiB,sBAChD,IAAK,MAAMna,KAAQ2b,EACjB3b,EAAK4L,WAAWyN,YAAYrZ,EAEhC,CChGM4b,GDsHC,SAAqCC,GAC1C,IAAKA,EAA0B,OAE/B,MAAM,KAAE7D,EAAI,KAAEC,GAAS4D,EAEvB,GAAI7D,EAAM,CACR,MAAM4B,EAAc3Z,SAASgE,cAAc,QAC3C+T,EAAKzM,SAAQuO,IACPF,GACFA,EAAYkC,gBAAgBhC,EAC9B,GAEJ,CAEA,GAAI7B,EAAM,CACR,MAAM+B,EAAc/Z,SAASgE,cAAc,QAC3CgU,EAAK1M,SAAQuO,IACPE,GACFA,EAAY8B,gBAAgBhC,EAC9B,GAEJ,CACF,CC3IMiC,CAA4BtC,EAA4B,CACzD,GAEL,CCzHA,SAASuC,EAAapc,GACpB,MAAMob,EAAqB,IACtBpb,EACHuK,OAAQ,KACHF,EAAAA,EAAAA,IAAgBrK,EAAMY,SAASoC,aAC/BhD,EAAM6S,cAAc9E,KAAK2N,YAAYW,WAM5C,IAAIC,EAFkBzK,MAIpByK,EADEtc,EAAM6S,cAAcC,iBACR9S,EAAM6S,cAAcC,kBAEpBpR,EAAAA,EAAAA,gBANMmQ,EAMsB7R,EAAM6S,cAActF,YAN/BsE,EAAE9U,SAAY8U,EAM6B,IACrEuJ,EACH3d,IAAKuC,EAAMuI,MAAQvI,EAAM6S,cAAcpF,KAAKlF,OAMhD4S,EAAsB,CACpB1I,cAHoBzS,EAAM6S,cAAc7N,KAIxC2O,mBAAoB3T,EAAM6S,cAAcc,mBACxCyH,uBAeF,OAZoB5L,EAAAA,EAAAA,GAAU,kBAE5B,CACEvN,QAASqa,EACTtc,MAAOob,GAETkB,GACAvS,IAAiB,IAAhB,OAAE7C,GAAQ6C,EACT,MAAO,CAAE9H,QAASiF,EAAQlH,MAAOob,EAAoB,IAEvDQ,KAGJ,CAEAQ,EAAara,UAAY,CACvBnB,SAAU2b,IAAAA,OAAiBra,WAC3B2Q,cAAe0J,IAAAA,OAAiBra,WAChC6P,KAAMwK,IAAAA,OACNb,YAAaa,IAAAA,OAAiBra,YAGhC,mJCxDO,MAAMsa,EAAsB,CACjC3D,GAAG,mBACHO,MAAO,CACLvZ,SAAS,WACT4c,IAAK,EACLC,MAAO,EACPC,OAAQ,EACRC,QAAS,EACTC,SAAS,SACTC,KAAK,mBACLC,WAAW,SACXC,OAAQ,GAEV,YAAY,YACZ,cAAc,sBCHhB,SAASC,EAAcja,GACrB,MAAMyH,GAAWC,EAAAA,EAAAA,GAAwB1H,IACnC,KAAE7C,EAAI,OAAEqI,GAAWjJ,OAAOqB,SAEhC,OAAgB,MAAZ6J,IACFlL,OAAO2d,WAAWzS,EAASE,OAASnC,EAASrI,IACtC,EAIX,CAGA,IAAIgd,EAAS,GAEb5d,OAAOyB,iBAAiB,sBAAsBoc,IACxC,6BAA6B7I,KAAK6I,EAAMC,SACtCF,IACF5d,OAAOqB,SAASoC,SAAWma,EAE/B,IAGF,MAAMG,EAAmBA,CAAC1c,EAAU2c,KAC7BN,EAAcrc,EAASoC,YAC1Bma,EAAYvc,EAASoC,UACrBwM,EAAAA,EAAAA,GAAU,mBAAoB,CAAE5O,WAAU2c,iBAC5C,EAGIC,EAAgBA,CAAC5c,EAAU2c,KAC1BN,EAAcrc,EAASoC,YAC1BwM,EAAAA,EAAAA,GAAU,gBAAiB,CAAE5O,WAAU2c,gBAOzC,EAGIE,EAAW,SAACC,EAAIlX,GAIpB,QAJ2B,IAAPA,IAAAA,EAAU,CAAC,GAIlB,iBAAFkX,EAET,YADAC,EAAAA,cAAcF,SAASC,GAIzB,MAAM,SAAE1a,EAAQ,OAAEwF,EAAM,KAAErI,IAASyd,EAAAA,EAAAA,IAAUF,GACvCjT,GAAWC,EAAAA,EAAAA,GAAwB1H,GAUzC,GANIyH,IACFiT,EAAKjT,EAASE,OAASnC,EAASrI,GAK9BZ,OAAOse,aAET,YADAte,OAAOqB,SAAWoC,EAAWwF,EAASrI,GAMxC,MAAM2d,EAAY3P,YAAW,KAC3B0F,EAAAA,EAAQ1L,KAAK,6BAA8B,CAAEnF,cAC7CwM,EAAAA,EAAAA,GAAU,uBAAwB,CAChC5O,SAAUrB,OAAOqB,UACjB,GACD,KAEHiK,EAAAA,GAAOlE,SAAS3D,EAAWwF,GAAQjB,MAAKsL,IAOtC,IAAKA,GAAiBA,EAAczG,SAAWI,EAAAA,GAAmBC,MAIhE,OAHAlN,OAAOwe,QAAQC,aAAa,CAAC,EAAE,GAAKpd,SAAS6I,MAC7ClK,OAAOqB,SAAWoC,OAClBib,aAAaH,GAM8BjL,GAEzCA,EAAcpF,KAAKE,yBACnBpO,OAAO2e,4BAIL,kBAAmBhK,WACoB,OAAvCA,UAAUiK,cAAcjL,YACgB,cAAxCgB,UAAUiK,cAAcjL,WAAW9P,OAEnC8Q,UAAUiK,cAAcjL,WAAWkL,YAAY,CAC7CC,UAAU,uBAId9e,OAAOqB,SAAWoC,EAAWwF,EAASrI,IAG1Cme,EAAAA,EAAAA,UAAcZ,EAAIlX,GAClByX,aAAaH,EAAU,GAE3B,EAEA,SAAS/d,EAAmBU,EAAesJ,GAAiB,IAAf,SAAEnJ,GAAUmJ,EACvD,MAAM,SAAE/G,EAAQ,KAAE7C,GAASS,EACrBoG,GAAUwI,EAAAA,EAAAA,GAAU,qBAAsB,CAC9C/O,kBAEAuC,WACAtC,YAAa,CAAEE,YACf2d,uBAAwB1f,GAAQ,CAC9B,EAGAI,KAAKE,cAAc+B,KAAKrC,EAAMA,EAAKpB,QAGvC,GAAIuJ,EAAQpI,OAAS,EAGnB,OAAOoI,EAAQA,EAAQpI,OAAS,GAGlC,GAAI6B,EAAiB,CACnB,MACEG,UAAYoC,SAAUwb,IACpB/d,EACJ,GAAI+d,IAAgBxb,EAGlB,OAAO7C,EAAOgB,UAAUhB,EAAKhE,MAAM,IAAM,CAAC,EAAG,EAEjD,CACA,OAAO,CACT,CAYC,IAEKsiB,EAAc,SAAAjgB,GAClB,SAAAigB,EAAYze,GAAQ,IAADvB,EAEuB,OADxCA,EAAAD,EAAAZ,KAAA,KAAMoC,IAAM,MACP0e,gBAAkB9hB,EAAAA,YAAiB6B,CAC1C,EAJkBoY,EAAAA,EAAAA,GAAA4H,EAAAjgB,GAIjB,IAAAmC,EAAA8d,EAAA/gB,UAwBA,OAxBAiD,EAEDY,mBAAA,SAAmBzB,EAAW6e,GAC5Blf,uBAAsB,KACpB,IAAImf,EAAQ,eAAkB3f,KAAKe,MAAMY,SAASoC,SAC9C3C,SAASwe,QACXD,EAAWve,SAASwe,OAEtB,MAAMC,EAAeze,SAASka,iBAAiB,4BAC3CuE,GAAgBA,EAAalgB,SAC/BggB,EAAWE,EAAa,GAAGC,aAE7B,MAAMC,EAAe,gBAAmBJ,EACxC,GAAI3f,KAAKyf,gBAAgBhb,QAAS,CACRzE,KAAKyf,gBAAgBhb,QAAQub,YAC7BD,IACtB/f,KAAKyf,gBAAgBhb,QAAQub,UAAYD,EAE7C,IAEJ,EAACre,EAEDc,OAAA,WACE,OAAO7E,EAAAA,cAAA,MAAAU,OAAA6S,OAAA,GAASqM,EAAmB,CAAEjZ,IAAKtE,KAAKyf,kBACjD,EAACD,CAAA,CA5BiB,CAAS7hB,EAAAA,WA+B7B,MAAMsiB,EAAuBA,CAAC3B,EAAc4B,KAAkB,IAADC,EAAAC,EAC3D,OAAI9B,EAAa9T,OAAS0V,EAAa1V,OAInC8T,SAAmB,QAAP6B,EAAZ7B,EAAcna,aAAK,IAAAgc,OAAP,EAAZA,EAAqB3hB,QAAQ0hB,SAAmB,QAAPE,EAAZF,EAAc/b,aAAK,IAAAic,OAAP,EAAZA,EAAqB5hB,IAI1C,EAGd,IACM6hB,EAAY,SAAAC,GAChB,SAAAD,EAAYtf,GAAQ,IAADwf,EAEqB,OADtCA,EAAAD,EAAA3hB,KAAA,KAAMoC,IAAM,KACZsd,EAAiBtd,EAAMY,SAAU,MAAK4e,CACxC,EAJgB3I,EAAAA,EAAAA,GAAAyI,EAAAC,GAIf,IAAAzI,EAAAwI,EAAA5hB,UA2BA,OA3BAoZ,EAEDhW,kBAAA,WACE0c,EAAcve,KAAKe,MAAMY,SAAU,KACrC,EAACkW,EAED2I,sBAAA,SAAsBd,GACpB,QAAIO,EAAqBjgB,KAAKe,MAAMY,SAAU+d,EAAU/d,YACtD0c,EAAiBqB,EAAU/d,SAAU3B,KAAKe,MAAMY,WACzC,EAGX,EAACkW,EAEDvV,mBAAA,SAAmBzB,GACbof,EAAqBpf,EAAUc,SAAU3B,KAAKe,MAAMY,WACtD4c,EAAcve,KAAKe,MAAMY,SAAUd,EAAUc,SAEjD,EAACkW,EAEDrV,OAAA,WACE,OACE7E,EAAAA,cAACA,EAAAA,SAAc,KACZqC,KAAKe,MAAM6B,SACZjF,EAAAA,cAAC6hB,EAAc,CAAC7d,SAAUA,WAGhC,EAAC0e,CAAA,CA/Be,CAAS1iB,EAAAA,mCCxN3B,SAAS8iB,EAAe/P,EAAGgQ,GACzB,IAAK,IAAIC,KAAKjQ,EACZ,KAAMiQ,KAAKD,GAAI,OAAO,EACvB,IAAK,IAAIE,KAAMF,EACd,GAAIhQ,EAAEkQ,KAAQF,EAAEE,GAAK,OAAO,EAC7B,OAAO,CACV,CC8GA,MAlHqB,SAAArhB,GACnB,SAAAshB,EAAY9f,GAAQ,IAADvB,EACjBA,EAAAD,EAAAZ,KAAA,OAAO,KACP,MAAM,SAAEgD,EAAQ,cAAEiS,GAAkB7S,EAQnC,OAPDvB,EAAK2E,MAAQ,CACXxC,SAAU,IAAKA,GACfiS,cACEA,GACAhI,EAAAA,GAAOjE,aAAahG,EAASoC,SAAWpC,EAAS4H,OAAQ,CACvDuL,kBAAkB,KAEvBtV,CACH,EAZmBoY,EAAAA,EAAAA,GAAAiJ,EAAAthB,GAYlBshB,EAEMC,yBAAP,SAAAhW,EAA8CiW,GAAY,IAA1B,SAAEpf,GAAUmJ,EAC1C,GAAIiW,EAAUpf,SAAS6I,OAAS7I,EAAS6I,KAAM,CAQ7C,MAAO,CACLoJ,cARoBhI,EAAAA,GAAOjE,aAC3BhG,EAASoC,SAAWpC,EAAS4H,OAC7B,CACEuL,kBAAkB,IAMpBnT,SAAU,IAAKA,GAEnB,CAEA,MAAO,CACLA,SAAU,IAAKA,GAEnB,EAAC,IAAAD,EAAAmf,EAAApiB,UA+EA,OA/EAiD,EAEDsf,cAAA,SAAcrT,GACZ/B,EAAAA,GAAOlE,SAASiG,GAASrF,MAAKsL,IACxBA,GAAiBA,EAAczG,SAAWI,EAAAA,GAAmBC,MAC/DxN,KAAKihB,SAAS,CACZtf,SAAU,IAAKrB,OAAOqB,UACtBiS,mBAGFtT,OAAOwe,QAAQC,aAAa,CAAC,EAAE,GAAKpd,SAAS6I,MAC7ClK,OAAOqB,SAAWgM,EACpB,GAEJ,EAACjM,EAED8e,sBAAA,SAAsBd,EAAWwB,GAE/B,OAAKA,EAAUtN,cAkBX5T,KAAKmE,MAAMyP,gBAAkBsN,EAAUtN,gBAIzC5T,KAAKmE,MAAMyP,cAActF,YAAc4S,EAAUtN,cAActF,YAK7DtO,KAAKmE,MAAMyP,cAAc9E,OAASoS,EAAUtN,cAAc9E,SAM5D9O,KAAKmE,MAAMxC,SAASnD,MAAQ0iB,EAAUvf,SAASnD,MAC/C0iB,EAAUtN,cAAcpF,OACvB0S,EAAUtN,cAAcpF,KAAKzD,YAC5BmW,EAAUtN,cAAcpF,KAAKlF,ODhFrC,SAA0BgO,EAAUoI,EAAWwB,GAC7C,OAAOT,EAAenJ,EAASvW,MAAO2e,IAAce,EAAenJ,EAASnT,MAAO+c,EACpF,CCkFUC,CAAenhB,KAAM0f,EAAWwB,OAvCrClhB,KAAKghB,cACHtB,EAAU/d,SAASoC,SAAW2b,EAAU/d,SAAS4H,SAE5C,EAqCX,EAAC7H,EAEDc,OAAA,WAiBE,OAAOxC,KAAKe,MAAM6B,SAAS5C,KAAKmE,MAClC,EAAC0c,CAAA,CA/GkB,CAASljB,EAAAA,+BC6B9B,MAAMiO,EAAS,IAAI2L,EAAAA,GAAWE,KAA2BnX,OAAO+N,WAChE0J,EAAAA,EAAAA,IAAUnM,GACVA,EAAO0E,aAAaC,EAAAA,GAEpB,MAAM,OAAE/N,EAAM,QAAE4e,IAAY9E,EAAAA,EAAAA,KAE5Bhc,OAAOmX,cAAgBA,EACvBnX,OAAO+gB,WAAazM,EAAAA,EACpBtU,OAAOghB,UAAYrJ,EAAAA,GH4HjByG,EAAAA,cAAc6C,QAAO3hB,IACnBA,EAAK+B,SAAS6f,OAAS5hB,EAAK4hB,MAAM,IAGpClhB,OAAOmhB,QAAUhD,GAAMD,EAASC,EAAI,CAAElN,SAAS,IAC/CjR,OAAO2d,WAAaQ,GAAMD,EAASC,EAAI,CAAElN,SAAS,IAClDjR,OAAOohB,YAAc,CAACjD,EAAIlX,IAAYiX,EAASC,EAAIlX,GG9HrD,MAAMoa,EAAgB,wCAEtBC,EAAAA,EAAAA,GAAe,iBAAiBtZ,MAAK,MAG/BiI,EAAAA,EAAAA,GAAU,yBAAyBrI,OAAO2Z,SAASliB,OAAS,GAC9D2H,EAAQ,MAWV,MAAMwa,EAAe/gB,GACnBpD,EAAAA,cAACokB,EAAAA,YAAYrf,SAAQ,CACnBC,MAAO,CACLqf,QAAQ,IACRC,SAAS,MAGXtkB,EAAAA,cAACwf,EAAAA,EAAiBpc,IAIhBmhB,EAAcvkB,EAAAA,cAAoB,CAAC,GAEnCwkB,EAAgB,CACpBC,kBAAkB,WACnB,IAEKC,EAAU,SAAA9iB,GAAA,SAAA8iB,IAAA,OAAA9iB,EAAAQ,MAAA,KAAAL,YAAA,KAiCb,OAjCakY,EAAAA,EAAAA,GAAAyK,EAAA9iB,GAAA8iB,EAAA5jB,UACd+D,OAAA,WACE,MAAM,SAAEI,GAAa5C,KAAKe,MAC1B,OACEpD,EAAAA,cAAC2kB,EAAAA,SAAQ,MACNxX,IAAA,IAAC,SAAEnJ,GAAUmJ,EAAA,OACZnN,EAAAA,cAACkjB,EAAe,CAAClf,SAAUA,IACxB0J,IAAkC,IAAjC,cAAEuI,EAAa,SAAEjS,GAAU0J,EAC3B,MAAMqJ,GAAqBwD,EAAAA,EAAAA,MACrBqK,GAAepK,EAAAA,EAAAA,MAErB,OACExa,EAAAA,cAACif,EAAAA,GAAmBla,SAAQ,CAACC,MAAO+R,GAClC/W,EAAAA,cAAC6kB,EAAAA,GAAc9f,SAAQ,CAACC,MAAOwf,GAC7BxkB,EAAAA,cAAC8kB,EAAAA,GAAqB/f,SAAQ,CAACC,MAAO4f,GACpC5kB,EAAAA,cAAC+kB,EAAAA,GAAiBhgB,SAAQ,CACxBC,MAAOiR,EAAcpF,KAAKK,WAE1BlR,EAAAA,cAACukB,EAAYxf,SAAQ,CACnBC,MAAO,CAAEiR,gBAAejS,aAEvBiB,MAKmB,GAGlB,GAI1B,EAACyf,CAAA,CAjCa,CAAS1kB,EAAAA,WAoCnBglB,EAAe,SAAArC,GAAA,SAAAqC,IAAA,OAAArC,EAAAvgB,MAAA,KAAAL,YAAA,KAsClB,OAtCkBkY,EAAAA,EAAAA,GAAA+K,EAAArC,GAAAqC,EAAAlkB,UACnB+D,OAAA,WACE,OACE7E,EAAAA,cAACukB,EAAYU,SAAQ,MAClB5M,IAAA,IAAC,cAAEpC,EAAa,SAAEjS,GAAUqU,EAAA,OAC3BrY,EAAAA,cAAC0iB,EAAY,CAAC1e,SAAUA,GACtBhE,EAAAA,cAACH,EAAAA,GAAa,CACZmE,SAAUA,EACVb,mBAAoBA,GAEpBnD,EAAAA,cAACklB,EAAAA,OAAM,CACLZ,SAAU7X,GACVzI,SAAUA,EACViY,GAAG,wBAEHjc,EAAAA,cAACmkB,EAAYzjB,OAAA6S,OAAA,CACX5H,KACyB,cAAvBsK,EAAcpF,KAAKlF,MACI,cAAvBsK,EAAcpF,KAAKlF,MACfa,EAAAA,EAAAA,GAAYxI,EAASoC,SAAUqG,IAC/B0Y,WAEIlP,EAAcpF,KAAKzD,WACnB6I,EAAcpF,KAAKlF,MACnBE,MAAM,KAAK,KAGjBxJ,KAAKe,MAAK,CACdY,SAAUA,EACViS,cAAeA,GACXA,EAAc9E,SAIX,GAIvB,EAAC6T,CAAA,CAtCkB,CAAShlB,EAAAA,WAyC9B,MAAM,SAAEkT,EAAUlP,SAAUohB,GAAeziB,OAYzCuQ,GACAzG,GAAgByG,IACdkS,EAAWhf,UAAY8M,EAASI,SAAS,KAAO8R,EAAWxZ,OAAM,OAEjEqC,EAAOlB,eAAcP,EAAAA,EAAAA,GAAY4Y,EAAWhf,SAAUqG,MACtDyG,EAASmS,MAAM,6BACfnS,EAASmS,MAAM,+CAGjBxE,EAAAA,EAAAA,UACEpU,GACEyG,GACEA,EAASI,SAAS,KAAwB,GAAjB8R,EAAWxZ,QACtCwZ,EAAW7hB,KACb,CACEqQ,SAAS,IAMf,MAAM0R,EAAoBA,KACxB,IACE,OAAO3f,cACT,CAAE,MACA,OAAO,IACT,GAGF2U,EAAAA,GAAavQ,SAASqb,EAAWhf,SAAWgf,EAAWxZ,QAAQjB,MAAKkG,IAAS,IAAD0U,EAC1E,MAAM5f,EAAiB2f,IAEvB,GACEzU,SAAU,QAAN0U,EAAJ1U,EAAMA,YAAI,IAAA0U,GAAVA,EAAYxU,wBACZF,EAAKA,KAAKE,yBAA2BpO,OAAO2e,4BAI1C,kBAAmBhK,WACoB,OAAvCA,UAAUiK,cAAcjL,YACgB,cAAxCgB,UAAUiK,cAAcjL,WAAW9P,OAEnC8Q,UAAUiK,cAAcjL,WAAWkL,YAAY,CAC7CC,UAAU,uBAUV9b,GAAgB,CAGlB,KAF2D,MAAxCA,EAAeC,QAAQoe,IAKxC,OAFAre,EAAeO,QAAQ8d,EAAiB,UACxCrhB,OAAOqB,SAASwhB,QAAO,EAG3B,CAOF,GAJI7f,GACFA,EAAe8f,WAAWzB,IAGvBnT,GAAQA,EAAKrB,SAAWI,EAAAA,GAAmBC,MAAO,CACrD,MAAM6V,EAAO,sBAAyBN,EAAWhf,SAAQ,kCAIzD,GAAIyK,GAAQA,EAAKqD,MAEf,MADAyR,QAAQzR,MAAMwR,GACR7U,EAAKqD,MAGb,MAAM,IAAIrE,MAAM6V,EAClB,CAEA,MAAME,GAAWhT,EAAAA,EAAAA,GAAU,kBAEzB,CAAEvN,QAASrF,EAAAA,cAACglB,EAAe,OAC3BhlB,EAAAA,cAACglB,EAAe,OAChBpM,IAAiB,IAAhB,OAAEtO,GAAQsO,EACT,MAAO,CAAEvT,QAASiF,EAAQ,IAE5B0U,MAEI6G,EAAM,WACV,MAAMC,EAAsB9lB,EAAAA,QAAa,GAazC,OAXAA,EAAAA,WAAgB,KACT8lB,EAAoBhf,UACvBgf,EAAoBhf,SAAU,EAC1Bif,YAAYC,MACdD,YAAYC,KAAK,0BAGnBpT,EAAAA,EAAAA,GAAU,yBACZ,GACC,IAEI5S,EAAAA,cAAC0kB,EAAU,KAAEkB,EACtB,EAEMK,EAAUxiB,SAASC,eAAe,wBAIxC,IAAIwiB,EAAkBrhB,EAClBohB,GAAWA,EAAQhhB,SAASjD,SAC9BkkB,EAAkBzC,GAGpB,MAAM0C,GAAWvT,EAAAA,EAAAA,GAAU,8BAEzBpO,EACA0hB,GACA,GAEF,SAASE,IACP,MAAMC,EACS,oBAAN1jB,OACHc,SAASC,eAAe,aACxB,KAENyiB,EAASnmB,EAAAA,cAAC6lB,EAAG,MAAKQ,EACpB,CAIA,MAAMC,EAAM7iB,SACZ,GACgB,aAAd6iB,EAAI/V,YACW,YAAd+V,EAAI/V,aAA6B+V,EAAIC,gBAAgBC,SAEtDjV,YAAW,WACT6U,GACF,GAAG,OACE,CACL,MAAMlb,EAAU,WACdob,EAAI5hB,oBAAoB,mBAAoBwG,GAAS,GACrDvI,OAAO+B,oBAAoB,OAAQwG,GAAS,GAE5Ckb,GACF,EAEAE,EAAIliB,iBAAiB,mBAAoB8G,GAAS,GAClDvI,OAAOyB,iBAAiB,OAAQ8G,GAAS,EAC3C,CAEM,GACN,+EC1SJ,UAlByBiC,IAAmB,IAAlB,SAAEnJ,GAAUmJ,EACpC,MAAM8I,EAAgBhI,EAAAA,GAAOjE,aAAahG,EAASoC,UACnD,OAAK6P,EAGEjW,EAAAA,cAAoBymB,EAAAA,EAAsB,CAC/CziB,WACAiS,mBACGA,EAAc9E,OALV,IAMP,wBCfkB8D,MAKpBxL,EAAOzK,SALaiW,EAKWtL,EAAQ,OALRsL,EAAE9U,SAAY8U,qECA/C,MAAM5K,EAAM,IAAI/I,QAET,SAASqd,IACd,MAAM+H,EAAiB/c,EAAQ,KAY/B,MAAO,CAAE9E,OAVMA,CAACK,EAAWyhB,KACzB,IAAIC,EAAOvc,EAAI9J,IAAIomB,GACdC,GACHvc,EAAInJ,IAAIylB,EAAKC,EAAOF,EAAeG,WAAWF,IAEhDC,EAAK/hB,OAAOK,EAAU,EAKPue,QAFDA,CAACve,EAAWyhB,IAAOD,EAAeI,YAAYH,EAAIzhB,GAGpE,qECZA,MAAM6hB,EAAc,IAAI/a,IAClBgb,EAAwB,IAAIhb,IAU3B,SAAS8B,EAAwB1H,GACtC,IAAIyH,EAAWkZ,EAAYxmB,IAAI6F,GAI/B,OAHKyH,IACHA,EAAWmZ,EAAsBzmB,IAAI6F,EAAS4V,gBAEzCnO,CACT,IAdUkB,SAAQlB,IACZA,EAASoZ,WACXD,EAAsB9lB,IAAI2M,EAASqZ,SAAUrZ,GAE7CkZ,EAAY7lB,IAAI2M,EAASqZ,SAAUrZ,EACrC,4DCTwB,WAAxBlL,OAAOqB,SAASmjB,UACQ,cAAxBxkB,OAAOqB,SAASojB,SAEhBzB,QAAQzR,MAAM,gFAGL,kBAAmBoD,WAC5BA,UAAUiK,cACP8F,SAAyB,UACzB1c,MAAK,SAAU2c,GACdA,EAAIljB,iBAAiB,eAAe,MAClCwO,EAAAA,EAAAA,GAAU,6BAA8B,CAAE2O,cAAe+F,IAGzD,MAAMC,EAAmBD,EAAIE,WAC7B7B,QAAQ8B,IAAI,mBAAoBF,GAChCA,EAAiBnjB,iBAAiB,eAAe,KAC/C,OAAQmjB,EAAiB/gB,OACvB,IAAI,YACE8Q,UAAUiK,cAAcjL,YAK1B3T,OAAOse,cAAe,GAEtBrO,EAAAA,EAAAA,GAAU,6BAA8B,CAAE2O,cAAe+F,IAGrD3kB,OAAO+kB,qBACT/B,QAAQ8B,IAAI,4CACZ9kB,OAAOqB,SAASwhB,YAKlBG,QAAQ8B,IAAI,sCAKZ7U,EAAAA,EAAAA,GAAU,2BAA4B,CAAE2O,cAAe+F,KAEzD,MAEF,IAAI,YACF3B,QAAQzR,MAAM,oDACdtB,EAAAA,EAAAA,GAAU,2BAA4B,CAAE2O,cAAe+F,IACvD,MAEF,IAAI,aACF1U,EAAAA,EAAAA,GAAU,wBAAyB,CAAE2O,cAAe+F,IAExD,GACA,GAEN,IACC3X,OAAM,SAAU5J,GACf4f,QAAQzR,MAAM,4CAA6CnO,EAC7D,sIC5DJ,MAAM+e,EAAuB9kB,EAAAA,cAAoB,CAAC,GAC5C6kB,EAAgB7kB,EAAAA,cAAoB,CAAC,GACrC+kB,EAAmB/kB,EAAAA,cAAoB,CAAC,6GCA9C,MAAMif,GCgB+BlK,EDhBkB,cCgBZ4S,EDhB2B,CAAC,ECiBjE3nB,EAAM4nB,oBAjBgB,SAAC7S,EAAM4S,GAajC,YAb6C,IAAZA,IAAAA,EAAe,MAE3CE,WAAWC,mBACdD,WAAWC,iBAAmB,CAAC,GAG5BD,WAAWC,iBAAiB/S,KAC/B8S,WAAWC,iBAAiB/S,GAAQ/U,EAAM4nB,oBACxC7S,EACA4S,IAIGE,WAAWC,iBAAiB/S,EACrC,CAIW6S,CAAoB7S,EAAM4S,GAG5B3nB,EAAAA,cAAoB2nB,IAL7B,IAAqC5S,EAAM4S,EDE3C,MA+BMI,EAAiBC,IAAU,IAADC,EAErBjoB,EAAAA,WAUT,MAAMkoB,EAAUloB,EAAAA,WAAiBif,GAKjC,GAAIkJ,MAAMC,OAAOJ,IACf,MAAM,IAAInY,MAAM,8KAIMmY,EAAK,SAI7B,GAAkB,QAAlBC,EAAIC,EAAQF,UAAM,IAAAC,GAAdA,EAAgB9S,KAClB,OAAO+S,EAAQF,GAAO7S,KAEtB,MAAM,IAAItF,MACR,uMAIJ,qCElFa,SAASrD,EAAY6b,EAAKC,GACvC,YAD6C,IAANA,IAAAA,EAAM,IACxCA,EAIDD,IAAQC,EACJ,IAGJD,EAAI1b,WAAc2b,EAAM,KACnBD,EAAI9oB,MAAM+oB,EAAOtmB,QAGnBqmB,EAXEA,CAYX,kECjBA,IAAIE,EAAU,EACVC,EAAkB,SAAyBjlB,GAC7C,IAAI0Y,EAAKtZ,OAAO4B,UAAUhB,EAAKqQ,QAAQ,IAAK,KAC5C,GAAW,KAAPqI,EAAW,CACb,IAAI5W,EAAU5B,SAASC,eAAeuY,GACtC,GAAI5W,EAAS,CACX,IAAI2B,EAAYrE,OAAO8lB,aAAehlB,SAAS8iB,gBAAgBvf,WAAavD,SAASgY,KAAKzU,UACtF0hB,EAAYjlB,SAAS8iB,gBAAgBmC,WAAajlB,SAASgY,KAAKiN,WAAa,EAC7EC,EAAiBhmB,OAAOimB,iBAAiBvjB,GACzCwjB,EAAkBF,EAAeG,iBAAiB,sBAAwBH,EAAeG,iBAAiB,2BAA6B,MAC3I,OAAOzjB,EAAQ0jB,wBAAwBlJ,IAAM7Y,EAAYgiB,SAASH,EAAiB,IAAMH,EAAYH,CACvG,CACF,CACA,OAAO,IACT,EACAvpB,EAAQiI,sBAAwB,SAAUgiB,EAAGC,GACvCA,EAAcX,UAChBA,EAAUW,EAAcX,SAE1B1lB,uBAAsB,WACpB,IAAIsmB,EAASX,EAAgB7lB,OAAOqB,SAAST,MAC9B,OAAX4lB,GACFxmB,OAAOU,SAAS,EAAG8lB,EAEvB,GACF,EACAnqB,EAAQmE,mBAAqB,SAAUgK,GACrC,IAAInJ,EAAWmJ,EAAKrJ,YAAYE,SAC5BmlB,EAASX,EAAgBxkB,EAAST,MACtC,OAAkB,OAAX4lB,GAAkB,CAAC,EAAGA,EAC/B,kCC9BAnqB,EAAQoqB,gBAAkB,CACxBC,SAAU,IACVC,aAAc,GACdC,gBAAiB,QACjBC,sBAAsB,EACtBC,cAAc,EACdC,kBAAkB,EAClBC,UAAU,EACVC,UAAU,EACVC,WAAW,EACXC,QAAS,OACTC,SAAU,QACVC,uBAAuB,EACvBC,gBAAgB,GAElBjrB,EAAQkrB,UAAY,mBACpBlrB,EAAQmrB,WAAa,0BACrBnrB,EAAQorB,kBAAoB,4BAC5BprB,EAAQqrB,qBAAuB,wEClB/B,IAAIC,EAAW3gB,EAAQ,KACrByf,EAAkBkB,EAASlB,gBAC3Be,EAAaG,EAASH,WACtBE,EAAuBC,EAASD,qBAChCD,EAAoBE,EAASF,kBAC/BprB,EAAQ4hB,cAAgB,SAAU2J,EAAoBrB,GA8BpD,IA7BA,IAAItf,EAAUlJ,OAAO6S,OAAO,CAAC,EAAG6V,EAAiBF,GAC7CsB,EAAgB/mB,SAASka,iBAAiB,IAAMyM,GAIhDK,EAAQ,WACV,IAAIC,EAAeF,EAAcxH,GAC7B2H,EAAoBD,EAAajjB,cAAc,IAAM4iB,GACrDO,EAAeF,EAAajjB,cAAc,IAAM0iB,GAChDU,EAAc,WAChBF,EAAkBnO,MAAMsO,WAAa,oBACrCF,EAAapO,MAAMsO,WAAa,eAChCC,GACF,EACIA,EAAkB,SAASA,IAC7BJ,EAAkBnO,MAAMwO,QAAU,EAClCJ,EAAapO,MAAMwO,QAAU,EAC7BJ,EAAapO,MAAMyO,MAAQ,UAC3BL,EAAapO,MAAM0O,UAAY,2BAA6BthB,EAAQ2f,gBACpEqB,EAAalmB,oBAAoB,OAAQmmB,GACzCD,EAAalmB,oBAAoB,QAASqmB,EAC5C,EACAH,EAAapO,MAAMwO,QAAU,EAC7BJ,EAAaxmB,iBAAiB,OAAQymB,GACtCD,EAAaxmB,iBAAiB,QAAS2mB,GACnCH,EAAaO,UACfJ,GAEJ,EACS/H,EAAI,EAAGA,EAAIwH,EAAcxoB,OAAQghB,IACxCyH,GAEJ,iCCQAhhB,EAAOzK,QA5BS,SAASosB,EAAWC,EAAQtY,EAAGgQ,EAAGuI,EAAGC,EAAGxlB,EAAGylB,GAOzD,IAAKJ,EAAW,CACd,IAAIlX,EACJ,QAAe1P,IAAX6mB,EACFnX,EAAQ,IAAIrE,MACV,qIAGG,CACL,IAAI5N,EAAO,CAAC8Q,EAAGgQ,EAAGuI,EAAGC,EAAGxlB,EAAGylB,GACvBC,EAAW,GACfvX,EAAQ,IAAIrE,MACVwb,EAAOzX,QAAQ,OAAO,WAAa,OAAO3R,EAAKwpB,IAAa,MAExD1W,KAAO,qBACf,CAGA,MADAb,EAAMwX,YAAc,EACdxX,CACR,CACF,yCCrCiByX,EAAE,EAAQ,MAASC,EAAE,CAACC,QAAO,GAAIC,EAAE,IAAI9f,IAAIsM,EAAEyT,OAAOC,IAAI,iBAAiBC,EAAEF,OAAOC,IAAI,cAAcE,EAAEH,OAAOC,IAAI,uBAAuBG,EAAER,EAAES,mDAAmDC,gBAAkF,SAASC,EAAEvZ,EAAEgQ,EAAEuI,GAAGjpB,KAAKkqB,QAAQxZ,EAAE1Q,KAAKmqB,OAAOzJ,EAAE1gB,KAAKoqB,UAAUnB,CAAC,CACjW,SAASoB,EAAE3Z,GAAG,OAAOA,EAAEwZ,SAAS,KAAK,EAAE,OAAOxZ,EAAEyZ,OAAO,KAAK,EAAE,IAAIzJ,EAAEld,KAAKC,MAAMiN,EAAEyZ,OAAOzZ,EAAE0Z,UAAUE,WAAuB,OAAZ5Z,EAAEwZ,QAAQ,EAASxZ,EAAEyZ,OAAOzJ,EAAE,KAAK,EAAa,IAAI,IAAIuI,GAAnBvI,EAAEhQ,EAAEyZ,QAAmBI,OAAOrB,EAAE,EAAEA,EAAED,EAAEtpB,OAAOupB,IAAI,CAAC,IAAIxlB,EAAE+lB,EAAEvrB,IAAI+qB,EAAEC,IAAI,GAAG,OAAOxlB,EAAE,MAAMA,CAAE,CAAyG,OAAxGulB,EAAEuB,EAAoB9J,EAAE9G,IAAI8G,EAAE,MAAMA,EAAEhO,KAAKuW,EAAE,KAAKvI,EAAEhO,KAAKuW,EAAE1rB,WAAW0rB,EAAEnrB,QAAQmrB,EAAEA,EAAEvI,EAAEhO,MAAMhC,EAAEwZ,QAAQ,EAASxZ,EAAEyZ,OAAOzJ,EAAE,KAAK,EAAE,MAAMhQ,EAAE,QAAQ,MAAMA,EAAEyZ,OAAQ,CAAC,SAASM,IAAoB,OAAOJ,EAAjBK,EAAE1qB,KAAK,GAAc,CAAC,SAAS2qB,EAAEja,EAAEgQ,GAAG,OAAO,IAAIuJ,EAAE,EAAEvJ,EAAEhQ,EAAE,CAC3d,SAASka,EAAEla,GAAG,GAAG,OAAOA,EAAE,IAAI,IAAIgQ,EAAE,EAAEA,EAAEhQ,EAAE/Q,OAAO+gB,KAAI,EAAGhQ,EAAEgQ,KAAK,CAAC,SAASmK,EAAEna,EAAEgQ,GAAG,GAAG,IAAIhQ,EAAEwZ,QAAQ,CAAC,IAAIjB,EAAEvY,EAAEyZ,OAAOzZ,EAAEwZ,QAAQ,EAAExZ,EAAEyZ,OAAOzJ,EAAEkK,EAAE3B,EAAE,CAAC,CAAC,SAAS6B,EAAEpa,EAAEgQ,GAAGhQ,EAAEqa,QAAQre,SAAQ,SAASgE,GAAGma,EAAEna,EAAEgQ,EAAE,GAAE,CAAC,SAASgK,EAAEha,EAAEgQ,GAAG,IAAIuI,EAAEvY,EAAEqa,QAAQ7B,EAAED,EAAE/qB,IAAIwiB,GAAqC,OAAlCwI,IAAIA,EAAE,IAAIe,EAAE,EAAE,KAAKvZ,GAAGuY,EAAEpqB,IAAI6hB,EAAEwI,IAAWA,CAAC,CAC3B,SAAS8B,EAAEta,GAAGoa,EAAEpa,EAAElD,MAAM,sBAAsB,CAC7S,SAASyd,EAAEva,EAAEgQ,GAAG,GAAG,KAAKA,EAAE,CAAC,IAAIuI,EAAEvI,EAAE,GAAGwI,EAAExI,EAAEzX,QAAQ,IAAI,GAAGvF,EAAEijB,SAASjG,EAAEpf,UAAU,EAAE4nB,GAAG,IAAuB,OAAnBA,EAAExI,EAAEpf,UAAU4nB,EAAE,GAAUD,GAAG,IAAK,KAAiBA,GAAbvI,EAAEhQ,EAAEqa,SAAa7sB,IAAIwF,IAAI,IAAIulB,EAAEiB,UAAUxZ,EAAEuY,EAAEkB,OAAOlB,EAAEiB,QAAQ,EAAEjB,EAAEkB,OAAOjB,EAAE0B,EAAEla,IAAIgQ,EAAE7hB,IAAI6E,EAAE,IAAIumB,EAAE,EAAEf,EAAExY,IAAI,MAAM,IAAK,IAAgBuY,GAAZvI,EAAEhQ,EAAEqa,SAAY7sB,IAAIwF,GAAGwlB,EAAE1lB,KAAKC,MAAMylB,EAAExY,EAAE4Z,WAAW,IAAInB,EAAEzY,EAAEwa,eAAqC/B,GAAtBD,EAAEC,EAAEA,EAAED,EAAEtP,IAAIsP,EAAExW,MAAMwW,GAAMqB,OAAO,IAAI,IAAIY,EAAE,EAAEA,EAAEhC,EAAExpB,OAAOwrB,IAAI,CAAC,IAAIC,EAAEjC,EAAEgC,GAAG,QAAG,IAAS1B,EAAEvrB,IAAIktB,GAAG,CAAC,IAAIC,EAAE,IAAuBD,GAAGxY,EAAE6W,EAAE5qB,IAAI6B,KAAK+oB,EAAE2B,EAAE,MAAME,EAAE7B,EAAE5qB,IAAI6B,KAAK+oB,EAAE2B,GAAGC,EAAE/iB,KAAKsK,EAAE0Y,GAAG7B,EAAE5qB,IAAIusB,EACxfC,EAAE,CAAC,CAACpC,EAAE,IAAIA,EAAEiB,UAAUxZ,EAAEuY,EAAEkB,OAAOlB,EAAEiB,QAAQ,EAAEjB,EAAEkB,OAAOjB,EAAE0B,EAAEla,IAAIgQ,EAAE7hB,IAAI6E,EAAE,IAAIumB,EAAE,EAAEf,EAAExY,IAAI,MAAM,IAAK,IAAIA,EAAEqa,QAAQlsB,IAAI6E,EAAEinB,EAAEja,EAL2G,SAAWA,GAA2C,OAAxCoZ,EAAEpZ,KAAKoZ,EAAEpZ,GAAG4Y,EAAE/D,oBAAoB7U,EAAEmZ,IAAWC,EAAEpZ,EAAE,CAK1K6a,CAAErC,GAAGxmB,WAAW,MAAM,IAAK,IAAIumB,EAAEzlB,KAAKC,MAAMylB,GAAGxY,EAAEqa,QAAQlsB,IAAI6E,EAAEinB,EAAEja,EAAEgZ,OAAOC,IAAIV,KAAK,MAAM,IAAK,IAAIvI,EAAEld,KAAKC,MAAMylB,IAAGD,EAAEzb,MAAMkT,EAAE2C,UAAWmI,MAAM9K,EAAE8K,OAAmBtC,GAAbxI,EAAEhQ,EAAEqa,SAAa7sB,IAAIwF,IAAImnB,EAAE3B,EAAED,GAAGvI,EAAE7hB,IAAI6E,EAAE,IAAIumB,EAAE,EAAEhB,EAAEvY,IAAI,MAAM,QAAQ,MAAMlD,MAAM,8EAA+E,CAAC,CAC5a,SAASie,EAAE/a,GAAG,OAAO,SAASgQ,EAAEuI,GAAG,MAAM,iBAAkBA,EAH3D,SAAWvY,EAAEgQ,EAAEuI,GAAG,OAAOA,EAAE,IAAI,IAAK,IAAI,MAAG,MAAMA,EAAShT,EAAK,MAAMgT,EAAE,IAAI,MAAMA,EAAE,GAAUA,EAAE3nB,UAAU,GAAiD+oB,EAAhB3Z,EAAEga,EAAEha,EAAhCiW,SAASsC,EAAE3nB,UAAU,GAAG,MAAyB,IAAK,IAAI,OAAqCoP,EAAEga,EAAEha,EAAhCiW,SAASsC,EAAE3nB,UAAU,GAAG,KAAa,CAACoqB,SAAS9B,EAAE+B,SAASjb,EAAEkb,MAAMvB,GAAG,OAAOpB,CAAC,CAGjM4C,CAAEnb,EAAE1Q,EAAKipB,GAAG,iBAAkBA,GAAG,OAAOA,EAAKA,EAAE,KAAKhT,EAAE,CAACyV,SAASzV,EAAErN,KAAKqgB,EAAE,GAAGzqB,IAAIyqB,EAAE,GAAG3kB,IAAI,KAAKvD,MAAMkoB,EAAE,GAAG6C,OAAO,MAAM7C,EAAKA,CAAC,CAAC,CAAC,SAAS8C,EAAErb,GAAG,IAAIgQ,EAAE,IAAIsL,YAAiH,OAA3Ftb,EAAE,CAACwa,eAAexa,EAAEqa,QAA5B,IAAIphB,IAAkCsF,SAASwb,EAAEwB,YAAY,GAAGC,eAAexL,IAAK4J,UAAUmB,EAAE/a,GAAUA,CAAC,CAC5U,SAASyb,EAAEzb,EAAEgQ,GAAqR,SAASwI,EAAExI,GAAGoK,EAAEpa,EAAEgQ,EAAE,CAAC,IAAIhd,EAAEgd,EAAE0L,YAAY1oB,EAAEzB,OAAOqG,MAApU,SAAS2gB,EAAEvI,GAAG,IAAIyK,EAAEzK,EAAE/d,MAAM,IAAG+d,EAAE2L,KAAc,CAAC3L,EAAEyK,EAAEA,EAAEza,EAAEwb,eAAe,IAAI,IAAId,EAAE1K,EAAEzX,QAAQ,KAAK,EAAEmiB,GAAG,CAAC,IAAIjC,EAAEzY,EAAEub,YAAgBrZ,EAAE8N,EAAE4L,SAAS,EAAElB,GAAGxY,EAAEuY,EAAEoB,OAAO3Z,GAAGqY,EAAEva,EAAEyY,EAAEvW,GAAGlC,EAAEub,YAAY,GAAqBb,GAAlB1K,EAAEA,EAAE4L,SAASlB,EAAE,IAAOniB,QAAQ,GAAG,CAA8B,OAA7ByH,EAAEub,aAAad,EAAEoB,OAAO7L,EAAE6I,GAAU7lB,EAAEzB,OAAOqG,KAAK2gB,EAAEC,EAAE,CAA1O8B,EAAEta,EAAyO,GAA0DwY,EAAE,CAPKe,EAAExrB,UAAU6J,KAAK,SAASoI,GAAG,IAAI1Q,KAAKkqB,SAAS,OAAOlqB,KAAKmqB,SAASnqB,KAAKmqB,OAAO,IAAInqB,KAAKmqB,OAAOrhB,KAAK4H,IAAIA,GAAG,EAQ9c/T,EAAQ6X,yBAAyB,SAAS9D,EAAEgQ,GAA+C,OAAPyL,EAArCzL,EAAEqL,EAAErL,GAAGA,EAAE8L,UAAU9L,EAAE8L,UAAU,MAAU9b,GAAUgQ,CAAC,oCCdjGtZ,EAAOzK,QAAU,EAAjB,wBCGFyK,EAAOzK,QANP,SAAgC8vB,GAC9B,QAAa,IAATA,EACF,MAAM,IAAIC,eAAe,6DAE3B,OAAOD,CACT,EACyCrlB,EAAOzK,QAAQY,YAAa,EAAM6J,EAAOzK,QAAiB,QAAIyK,EAAOzK,8BCN9G,IAAIgwB,EAAiB,EAAQ,MAM7BvlB,EAAOzK,QALP,SAAwBiwB,EAAUC,GAChCD,EAASnuB,UAAYJ,OAAOqK,OAAOmkB,EAAWpuB,WAC9CmuB,EAASnuB,UAAUquB,YAAcF,EACjCD,EAAeC,EAAUC,EAC3B,EACiCzlB,EAAOzK,QAAQY,YAAa,EAAM6J,EAAOzK,QAAiB,QAAIyK,EAAOzK,0BCDtGyK,EAAOzK,QALP,SAAgCiB,GAC9B,OAAOA,GAAOA,EAAIL,WAAaK,EAAM,CACnC,QAAWA,EAEf,EACyCwJ,EAAOzK,QAAQY,YAAa,EAAM6J,EAAOzK,QAAiB,QAAIyK,EAAOzK,0BCL9G,SAASowB,EAAgBC,EAAG/W,GAK1B,OAJA7O,EAAOzK,QAAUowB,EAAkB1uB,OAAOsuB,eAAiBtuB,OAAOsuB,eAAejsB,OAAS,SAAyBssB,EAAG/W,GAEpH,OADA+W,EAAEC,UAAYhX,EACP+W,CACT,EAAG5lB,EAAOzK,QAAQY,YAAa,EAAM6J,EAAOzK,QAAiB,QAAIyK,EAAOzK,QACjEowB,EAAgBC,EAAG/W,EAC5B,CACA7O,EAAOzK,QAAUowB,EAAiB3lB,EAAOzK,QAAQY,YAAa,EAAM6J,EAAOzK,QAAiB,QAAIyK,EAAOzK,yCCLvG0B,OAAOC,eAAe3B,EAAS,aAA/B,CAA+CgG,OAAO,IA6CtDhG,EAAQuwB,YAVY,iBAWpBvwB,EAAQmJ,iBAHkBqnB,GAvCJ,EAACA,EAAQC,KAC3B,MAAM,QAAEnoB,EAAU,MAAOooB,GAAmBF,GAAU,CAAC,EACjDG,EAAY9pB,KAAKI,UAAUypB,GAAgB,CAAC/D,EAAGW,KAChC,mBAANA,IACPA,EAAIsD,OAAOtD,IACL3f,WAAWgf,EAAI,OACjBW,EAAI,YAAcA,GAGnBA,KAEX,MAAO,CACH,uBACA5rB,OAAOoO,KAAK4gB,GAAgB1tB,OAAS,EAC/B,iCAAiC2tB,MACjC,mBACN,kBACAroB,EAAQtF,OAAS,EAAI,WAAW6D,KAAKI,UAAUqB,MAAc,GAC7D,oCACAmoB,GACFI,KAAK,GAAG,EAmBuBC,CAAcN,EAzC1B,s9CCJV,SAASJ,EAAgBC,EAAG/W,GAKzC,OAJA8W,EAAkB1uB,OAAOsuB,eAAiBtuB,OAAOsuB,eAAejsB,OAAS,SAAyBssB,EAAG/W,GAEnG,OADA+W,EAAEC,UAAYhX,EACP+W,CACT,EACOD,EAAgBC,EAAG/W,EAC5B,CCLe,SAAS2B,EAAegV,EAAUC,GAC/CD,EAASnuB,UAAYJ,OAAOqK,OAAOmkB,EAAWpuB,WAC9CmuB,EAASnuB,UAAUquB,YAAcF,EACjC,EAAeA,EAAUC,EAC3B,oECLe,SAASa,EAAkBC,EAAKC,IAClC,MAAPA,GAAeA,EAAMD,EAAIhuB,UAAQiuB,EAAMD,EAAIhuB,QAC/C,IAAK,IAAIghB,EAAI,EAAGkN,EAAO,IAAIhuB,MAAM+tB,GAAMjN,EAAIiN,EAAKjN,IAAKkN,EAAKlN,GAAKgN,EAAIhN,GACnE,OAAOkN,CACT,CCAe,SAAS3a,EAAmBya,GACzC,OCJa,SAA4BA,GACzC,GAAI9tB,MAAMiuB,QAAQH,GAAM,OAAO,EAAiBA,EAClD,CDES,CAAkBA,IELZ,SAA0BI,GACvC,GAAsB,oBAAXrE,QAAmD,MAAzBqE,EAAKrE,OAAOsE,WAA2C,MAAtBD,EAAK,cAAuB,OAAOluB,MAAM0S,KAAKwb,EACtH,CFGmC,CAAgBJ,IGJpC,SAAqCX,EAAGiB,GACrD,GAAKjB,EAAL,CACA,GAAiB,iBAANA,EAAgB,OAAO,EAAiBA,EAAGiB,GACtD,IAAIxE,EAAIprB,OAAOI,UAAUyvB,SAASvvB,KAAKquB,GAAG9vB,MAAM,GAAI,GAEpD,MADU,WAANusB,GAAkBuD,EAAEF,cAAarD,EAAIuD,EAAEF,YAAYpa,MAC7C,QAAN+W,GAAqB,QAANA,EAAoB5pB,MAAM0S,KAAKya,GACxC,cAANvD,GAAqB,2CAA2CnU,KAAKmU,GAAW,EAAiBuD,EAAGiB,QAAxG,CALc,CAMhB,CHH2D,CAA2BN,IILvE,WACb,MAAM,IAAIQ,UAAU,uIACtB,CJG8F,EAC9F,ohCKNgG,SAASnB,IAAI,OAAOA,EAAE3uB,OAAO6S,OAAO7S,OAAO6S,OAAOxQ,OAAO,SAASgD,GAAG,IAAI,IAAIomB,EAAE,EAAEA,EAAEpqB,UAAUC,OAAOmqB,IAAI,CAAC,IAAID,EAAEnqB,UAAUoqB,GAAG,IAAI,IAAIL,KAAKI,EAAExrB,OAAOI,UAAUC,eAAeC,KAAKkrB,EAAEJ,KAAK/lB,EAAE+lB,GAAGI,EAAEJ,GAAG,CAAC,OAAO/lB,CAAC,EAAEspB,EAAEjtB,MAAMC,KAAKN,UAAU,CAAC,SAASgR,EAAEhN,EAAEomB,GAAG,GAAG,MAAMpmB,EAAE,MAAM,CAAC,EAAE,IAAImmB,EAAEJ,EAAEuD,EAAE,CAAC,EAAEtc,EAAErS,OAAOoO,KAAK/I,GAAG,IAAI+lB,EAAE,EAAEA,EAAE/Y,EAAE/Q,OAAO8pB,IAAIK,EAAE7gB,QAAQ4gB,EAAEnZ,EAAE+Y,KAAK,IAAIuD,EAAEnD,GAAGnmB,EAAEmmB,IAAI,OAAOmD,CAAC,CAAC,MAAMnf,EAAEnK,IAAI,MAAM6F,OAAOugB,EAAE5oB,KAAK2oB,EAAErf,KAAKif,EAAE2E,OAAOpB,EAAElI,SAASpU,EAAE2d,KAAKxgB,EAAEkX,SAASpE,EAAE2N,KAAKrF,GAAGvlB,EAAE/B,SAAS,IAAIoC,SAASwlB,GAAG7lB,EAAE/B,SAAS,OAAO4nB,GAAGE,GAAG8B,IAAIhC,EAAE,IAAIhf,IAAIkf,GAAG1lB,UAAU,CAACA,SAAS+e,UAAU5gB,UAAUqnB,IAAIhgB,OAAOugB,EAAE5oB,KAAK2oB,EAAErf,KAAKif,EAAE2E,OAAOpB,EAAElI,SAASpU,EAAE2d,KAAKxgB,EAAEkX,SAASpE,EAAE2N,KAAKrF,EAAE9kB,MAAMT,EAAEob,QAAQ3a,MAAM3F,IAAIkF,EAAEob,QAAQ3a,OAAOT,EAAEob,QAAQ3a,MAAM3F,KAAK,UAAS,EAAGmiB,EAAE,CAACjd,EAAEomB,KAAK,IAAID,EAAE,GAAGJ,EAAE5b,EAAEnK,GAAGgN,GAAE,EAAGiQ,EAAE,OAAO,MAAM,CAAC,YAAIhf,GAAW,OAAO8nB,CAAC,EAAE,iBAAI8E,GAAgB,OAAO7d,CAAC,EAAE,qBAAA8d,GAAwB9d,GAAE,EAAGiQ,GAAG,EAAE,MAAAY,CAAOuI,GAAGD,EAAE/gB,KAAKghB,GAAG,MAAMkD,EAAE,KAAKvD,EAAE5b,EAAEnK,GAAGomB,EAAE,CAACnoB,SAAS8nB,EAAEjI,OAAO,OAAM,EAAG,OAAO9d,EAAE3B,iBAAiB,WAAWirB,GAAG,KAAKtpB,EAAErB,oBAAoB,WAAW2qB,GAAGnD,EAAEA,EAAE3hB,QAAOxE,GAAGA,IAAIomB,GAAC,CAAE,EAAE,QAAAtL,CAASsL,GAAG3lB,MAAM8kB,EAAE1X,QAAQga,GAAE,GAAI,CAAC,GAAG,GAAG,iBAAiBzB,EAAEpmB,EAAEob,QAAQ2P,GAAG3E,OAAO,CAACb,EAAE+D,EAAE,CAAC,EAAE/D,EAAE,CAACzqB,IAAIkV,KAAKgb,MAAM,KAAK,IAAIhe,GAAG6a,EAAE7nB,EAAEob,QAAQC,aAAakK,EAAE,KAAKa,GAAGpmB,EAAEob,QAAQ6P,UAAU1F,EAAE,KAAKa,EAAE,CAAC,MAAMD,GAAGnmB,EAAE/B,SAAS4pB,EAAE,UAAU,UAAUzB,EAAE,CAAC,CAACL,EAAE5b,EAAEnK,GAAGgN,GAAE,EAAG,MAAM6Y,EAAE,IAAIhhB,SAAQ7E,GAAGid,EAAEjd,IAAG,OAAOmmB,EAAEnd,SAAQhJ,GAAGA,EAAE,CAAC/B,SAAS8nB,EAAEjI,OAAO,WAAU+H,CAAC,EAAC,EAAGN,EAAE,CAACvlB,EAAE,OAAO,MAAMomB,EAAEpmB,EAAEuF,QAAQ,KAAK4gB,EAAE,CAAC9lB,SAAS+lB,GAAG,EAAEpmB,EAAEkrB,OAAO,EAAE9E,GAAGpmB,EAAE6F,OAAOugB,GAAG,EAAEpmB,EAAEkrB,OAAO9E,GAAG,IAAI,IAAIL,EAAE,EAAE,MAAMuD,EAAE,CAACnD,GAAGnZ,EAAE,CAAC,MAAM,MAAM,CAAC,YAAI/O,GAAW,OAAOqrB,EAAEvD,EAAE,EAAE,gBAAA1nB,CAAiB2B,EAAEomB,GAAG,EAAE,mBAAAznB,CAAoBqB,EAAEomB,GAAG,EAAEhL,QAAQ,CAAC,WAAI9D,GAAU,OAAOgS,CAAC,EAAE,SAAIlX,GAAQ,OAAO2T,CAAC,EAAE,SAAItlB,GAAQ,OAAOuM,EAAE+Y,EAAE,EAAE,SAAAkF,CAAUjrB,EAAEomB,EAAED,GAAG,MAAMhc,EAAE8S,EAAE,IAAIkJ,EAAErgB,MAAM,KAAKigB,IAAIuD,EAAElkB,KAAK,CAAC/E,SAAS8J,EAAEtE,OAAOoX,EAAEhhB,OAAO,IAAIghB,IAAIA,IAAIjQ,EAAE5H,KAAKpF,EAAE,EAAE,YAAAqb,CAAarb,EAAEomB,EAAED,GAAG,MAAMhc,EAAE8S,EAAE,IAAIkJ,EAAErgB,MAAM,KAAKwjB,EAAEvD,GAAG,CAAC1lB,SAAS8J,EAAEtE,OAAOoX,GAAGjQ,EAAE+Y,GAAG/lB,CAAC,EAAE,EAAA+qB,CAAG/qB,GAAG,MAAMomB,EAAEL,EAAE/lB,EAAEomB,EAAE,GAAGA,EAAEpZ,EAAE/Q,OAAO,IAAI8pB,EAAEK,EAAE,GAAE,EAAGyB,IAAI,oBAAoBjrB,SAASA,OAAOc,WAAWd,OAAOc,SAASqB,eAAe8mB,EAAE5I,EAAE4K,EAAEjrB,OAAO2oB,MAAMzK,SAASvI,GAAGsT,EAAE,SAAS4B,EAAEznB,EAAEmmB,GAAG,OAAO,EAAEtE,oBAAoB,EAAE7hB,EAAEmmB,EAAE,QAAQrE,WAAWC,mBAAmBD,WAAWC,iBAAiB,CAAC,GAAGD,WAAWC,iBAAiB/hB,KAAK8hB,WAAWC,iBAAiB/hB,GAAG,EAAE6hB,oBAAoB7hB,EAAEmmB,IAAIrE,WAAWC,iBAAiB/hB,IAApM,CAAyMA,EAAEmmB,GAAG,gBAAgBA,EAAE,CAAC,MAAMjX,EAAEuY,EAAE,OAAO,CAACnJ,QAAQ,IAAIC,SAAS,MAAMiH,EAAEiC,EAAE,YAAYhC,EAAE,IAAI,aAAavW,GAAG8X,EAAE,IAAI,aAAaxB,GAAG,SAAS2C,EAAEnoB,GAAG1D,KAAK6uB,IAAInrB,CAAC,CAAC,MAAM0nB,EAAE1nB,GAAGA,aAAamoB,EAAE5B,EAAEvmB,IAAI,MAAM,IAAImoB,EAAEnoB,EAAC,EAAG,SAASgd,EAAEoJ,GAAG,MAAMrL,GAAGoL,EAAEtY,QAAQkY,GAAE,EAAGtlB,MAAM6oB,EAAE8B,QAAQpe,EAAEsR,QAAQnU,GAAGic,EAAE,aAAY,KAAKvhB,QAAQC,UAAUF,MAAK,KAAK,MAAM5E,EAAE4lB,EAAEO,EAAEhc,GAAGoI,EAAE8Y,EAAErrB,EAAEomB,GAAG,CAACvY,QAAQkY,EAAEtlB,MAAM6oB,GAAE,GAAE,GAAG,IAAI,MAAMrM,EAAE2I,EAAEO,EAAEhc,GAAG,OAAO6C,GAAGuZ,EAAE8E,EAAEpO,EAAEmJ,IAAI,IAAI,CAAC,MAAMkF,EAAElF,IAAI,MAAMD,EAAEa,KAAK1I,QAAQyH,GAAGN,IAAiB,OAAO,gBAAgBzI,EAAEsM,EAAE,CAAC,EAAEnD,EAAE,CAAC7H,QAAQyH,GAAGK,GAAE,EAAGkF,EAAElsB,UAAU,CAACyP,KAAK,SAASkM,GAAG,SAASxb,YAAY,MAAM4nB,EAAE,CAACnnB,EAAEomB,IAAIpmB,EAAEkrB,OAAO,EAAE9E,EAAEnqB,UAAUmqB,EAAEO,EAAE,CAAC3mB,EAAEomB,KAAK,IAAID,EAAEmD,EAAE,MAAMtc,GAAGoZ,EAAEtgB,MAAM,KAAKqE,EAAEohB,EAAEve,GAAGiQ,EAAE,KAAK9S,EAAE,GAAGob,EAAEiG,EAAExrB,GAAG,IAAI,IAAIA,EAAE,EAAEgN,EAAEuY,EAAEtpB,OAAO+D,EAAEgN,EAAEhN,IAAI,CAAC,IAAIgN,GAAE,EAAG,MAAM6a,EAAEtC,EAAEvlB,GAAGyH,MAAM,GAAGogB,EAAEztB,QAAQ,CAACkvB,EAAE,CAAC7hB,MAAMogB,EAAEjgB,OAAO,CAAC,EAAEujB,IAAI/E,GAAG,QAAQ,CAAC,MAAMP,EAAE0F,EAAE1D,EAAEjiB,MAAM2M,EAAE,CAAC,EAAEkV,EAAEgE,KAAKC,IAAIvhB,EAAElO,OAAO4pB,EAAE5pB,QAAQ,IAAIiT,EAAE,EAAE,KAAKA,EAAEuY,EAAEvY,IAAI,CAAC,MAAMlP,EAAE6lB,EAAE3W,GAAGkX,EAAEjc,EAAE+E,GAAG,GAAGyc,EAAE3rB,GAAG,CAACuS,EAAEvS,EAAExG,MAAM,IAAI,KAAK2Q,EAAE3Q,MAAM0V,GAAG5K,IAAIkC,oBAAoBsjB,KAAK,KAAK,KAAK,CAAC,QAAG,IAAS1D,EAAE,CAACpZ,GAAE,EAAG,KAAK,CAAC,MAAMmZ,EAAEyF,EAAEC,KAAK7rB,GAAG,GAAGmmB,IAAIlJ,EAAE,CAAC,MAAMjd,GAAG,IAAI8rB,EAAEvmB,QAAQ4gB,EAAE,IAAI,EAAEnmB,EAAE,6BAA6BmmB,EAAE,gEAAgE0B,EAAEjiB,UAAU,MAAM0jB,EAAE9iB,mBAAmB4f,GAAG7T,EAAE4T,EAAE,IAAImD,CAAC,MAAM,GAAGtpB,IAAIomB,EAAE,CAACpZ,GAAE,EAAG,KAAK,CAAC,CAAC,IAAIA,EAAE,CAACmZ,EAAE,CAAC1e,MAAMogB,EAAEjgB,OAAO2K,EAAE4Y,IAAI,IAAIhhB,EAAE3Q,MAAM,EAAE0V,GAAG4a,KAAK,MAAM,KAAK,CAAC,CAAC,OAAO3D,GAAGmD,GAAG,MAAMvC,EAAE,CAAC/mB,EAAEomB,IAAIO,EAAE,CAAC,CAAC/gB,KAAK5F,IAAIomB,GAAGR,EAAE,CAAC5lB,EAAEomB,KAAK,GAAGe,EAAEnnB,EAAE,KAAK,OAAOA,EAAE,MAAMmmB,EAAEJ,GAAG/lB,EAAE8F,MAAM,MAAMwjB,GAAGlD,EAAEtgB,MAAM,KAAKkH,EAAEue,EAAEpF,GAAGhc,EAAEohB,EAAEjC,GAAG,GAAG,KAAKtc,EAAE,GAAG,OAAO+e,EAAEzC,EAAEvD,GAAG,IAAIoB,EAAEna,EAAE,GAAG,KAAK,CAAC,MAAMhN,EAAEmK,EAAE5N,OAAOyQ,GAAG8c,KAAK,KAAK,OAAOiC,GAAG,MAAMzC,EAAE,GAAG,KAAKtpB,EAAE+lB,EAAE,CAAC,MAAM9I,EAAE9S,EAAE5N,OAAOyQ,GAAGuY,EAAE,GAAG,IAAI,IAAIvlB,EAAE,EAAEomB,EAAEnJ,EAAEhhB,OAAO+D,EAAEomB,EAAEpmB,IAAI,CAAC,MAAMomB,EAAEnJ,EAAEjd,GAAG,OAAOomB,EAAEb,EAAEtM,MAAM,MAAMmN,GAAGb,EAAEngB,KAAKghB,EAAE,CAAC,OAAO2F,EAAE,IAAIxG,EAAEuE,KAAK,KAAK/D,EAAC,EAAGsF,EAAE,CAACrrB,EAAEomB,KAAK,MAAMD,EAAEJ,EAAE,IAAI/lB,EAAE8F,MAAM,KAAK,IAAIwjB,EAAE,IAAIiC,EAAEpF,GAAG7hB,KAAItE,IAAI,MAAMmmB,EAAEyF,EAAEC,KAAK7rB,GAAG,OAAOmmB,EAAEC,EAAED,EAAE,IAAInmB,KAAI8pB,KAAK,KAAK,MAAM7rB,UAAU4H,OAAOmH,EAAE,IAAI,CAAC,GAAGoZ,EAAEjc,EAAE6C,EAAElH,MAAM,KAAK,IAAI,GAAG,OAAOwjB,EAAEyC,EAAEzC,EAAEvD,EAAE5b,GAAGmf,GAAG0C,EAAE,CAAChsB,EAAEomB,KAAK,MAAMD,EAAEnmB,GAAGkjB,EAAEljB,GAAG,OAAOurB,EAAEvrB,GAAGwE,OAAO2hB,GAAG8F,OAAOnC,KAAK,OAAOyB,EAAEnF,GAAG5hB,OAAO2hB,GAAG8F,OAAOnC,KAAK,IAAG,EAAG8B,EAAE,SAAS1I,EAAEljB,GAAG4rB,EAAEha,KAAK5R,GAAG2rB,EAAE3rB,GAAGA,GAAG,MAAMA,EAAE,GAAGksB,EAAE,CAAClsB,EAAEomB,KAAI,CAAE3e,MAAMzH,EAAEmsB,MAAMnsB,EAAE5F,QAAQ,EAAEmxB,EAAEvrB,EAAE4F,MAAMnB,QAAO,CAACzE,EAAEomB,KAAKpmB,GAAG,EAAE,CAACA,GAAG,KAAKA,EAAT,CAAYomB,GAAGpmB,GAAG,EAAEkjB,EAAEkD,GAAGpmB,GAAG,EAAE2rB,EAAEvF,GAAGpmB,GAAG,EAAEA,GAAG,EAAEA,IAAG,GAAGoS,MAAMgU,IAAIoF,EAAExrB,GAAGA,EAAEsE,IAAI4nB,GAAGD,MAAK,CAACjsB,EAAEomB,IAAIpmB,EAAEmsB,MAAM/F,EAAE+F,MAAM,EAAEnsB,EAAEmsB,MAAM/F,EAAE+F,OAAO,EAAEnsB,EAAEoS,MAAMgU,EAAEhU,QAAOmZ,EAAEvrB,GAAGA,EAAE6N,QAAQ,eAAe,IAAI/H,MAAM,KAAKimB,EAAE,CAAC/rB,KAAKomB,IAAIpmB,IAAIomB,EAAEA,EAAE5hB,QAAOxE,GAAGA,GAAGA,EAAE/D,OAAO,MAAKmqB,EAAEnqB,OAAO,EAAE,IAAImqB,EAAE0D,KAAK,OAAO,IAAIgC,EAAE,CAAC,MAAM,QAAQ1E,EAAE,CAACpnB,EAAEomB,KAAK,MAAMD,EAAExrB,OAAOoO,KAAK/I,GAAG,OAAOmmB,EAAElqB,SAAStB,OAAOoO,KAAKqd,GAAGnqB,QAAQkqB,EAAEiG,OAAMjG,GAAGC,EAAEprB,eAAemrB,IAAInmB,EAAEmmB,KAAKC,EAAED,IAAE,EAAGkG,EAAErsB,GAAGA,EAAE6N,QAAQ,eAAe,IAAIwa,EAAEjC,GAAGD,IAAI,IAAIA,EAAE,OAAO,KAAK,GAAGA,EAAEjhB,OAAO,YAAYihB,EAAE9oB,MAAM6B,SAAS,OAAO,WAAWoF,IAAI6hB,EAAE9oB,MAAM6B,SAASmpB,EAAEjC,IAAI,GAAG,EAAED,EAAE9oB,MAAMuI,MAAMugB,EAAE9oB,MAAMjD,SAAS+rB,EAAEjhB,OAAOomB,EAAE,iIAAiInF,EAAEjhB,UAAU,KAAKihB,EAAEjhB,OAAOomB,GAAGnF,EAAE9oB,MAAMwR,MAAMsX,EAAE9oB,MAAM0d,IAAI,mBAAmBoL,EAAE9oB,MAAMwR,aAAasX,EAAE9oB,MAAM0d,qEAAqE,IAAIoL,EAAEjhB,OAAOomB,IAAIU,EAAE7F,EAAE9oB,MAAMwR,KAAKsX,EAAE9oB,MAAM0d,KAAK,mBAAmBoL,EAAE9oB,MAAMwR,YAAYsX,EAAE9oB,MAAM0d,kGAAkGoL,EAAE9oB,MAAMjD,QAAQ,MAAM,CAAC6E,MAAMknB,EAAE/rB,SAAQ,GAAI,MAAMkvB,EAAEnD,EAAEjhB,OAAOomB,EAAEnF,EAAE9oB,MAAMwR,KAAKsX,EAAE9oB,MAAMuI,KAAKoH,EAAE,MAAMsc,EAAElD,EAAE,GAAGiG,EAAEjG,MAAMiG,EAAE/C,KAAK,MAAM,CAACrqB,MAAMknB,EAAE/rB,QAAQ+rB,EAAE9oB,MAAMjD,QAAQwL,KAAKugB,EAAE9oB,MAAM6B,SAAS,GAAGmtB,EAAErf,OAAOA,EAAC,EAAGsf,EAAE,CAAC,YAAYpG,EAAE,CAAC,KAAK,QAAQ,UAAU,YAAYqG,EAAE,CAAC,OAAO,IAAIC,WAAW7E,GAAG,qBAAE,IAASA,IAAIA,EAAE3nB,GAAGA,GAAG,MAAMyoB,EAAE,OAAOvB,EAAES,GAAE,CAACvB,EAAED,KAAK,IAAIsG,SAAS1G,GAAGK,EAAEjc,EAAE6C,EAAEoZ,EAAEkG,GAAG,MAAMhO,QAAQrB,GAAGwI,KAAKxnB,SAASsnB,GAAGyB,KAAKjM,GAAG8M,EAAEpnB,MAAMolB,EAAEhY,QAAQ4Z,EAAEiF,SAASxd,EAAEuZ,GAAGte,EAAEqb,EAAExY,EAAE7C,EAAE+b,GAAGiC,EAAEvC,EAAEiC,EAAE5K,GAAGyK,EAAEtI,UAAU+I,GAAG5B,EAAEhB,EAAEllB,WAAWqnB,EAAE1K,EAAEmK,EAAE5B,EAAEllB,SAASqnB,GAAgB,OAAO,gBAAgB,IAAI4B,EAAE,CAAC1oB,IAAIulB,GAAGJ,EAAE,eAAeQ,EAAE,YAAO,GAAQf,EAAEtW,EAAE,CAACyd,UAAUpG,EAAEqG,mBAAmB5P,EAAElW,KAAKqhB,EAAElqB,SAASsnB,IAAI,CAACze,KAAKqhB,EAAE0E,QAAQ7sB,IAAI,GAAGwlB,EAAEqH,SAASrH,EAAEqH,QAAQ7sB,GAAG,CAACA,IAAIA,EAAE8sB,kBAAkB,IAAI9sB,EAAE+sB,UAAU/sB,EAAEgtB,SAAShtB,EAAEitB,QAAQjtB,EAAEktB,SAASltB,EAAEmtB,UAA3E,CAAsFntB,GAAG,CAACA,EAAEotB,iBAAiB,IAAIhH,EAAEqB,EAAE,GAAG,kBAAkBA,GAAGlB,EAAE,CAAC,MAAMvmB,EAAEgN,EAAEsc,EAAE,CAAC,EAAE/D,EAAE9kB,OAAO8rB,GAAGnG,EAAEgB,EAAEkC,EAAE,CAAC,EAAEzD,GAAG7lB,EAAE,CAACuS,EAAE4V,EAAE,CAAC1nB,MAAMolB,EAAEhY,QAAQuY,GAAG,KAAI,IAAIc,EAAEtrB,YAAY,OAAOsrB,EAAE9nB,UAAU,CAAC2b,GAAG,SAASxb,YAAY,MAAM+nB,UAAU,YAAY,WAAA8B,IAAeppB,GAAGqtB,SAASrtB,GAAG1D,KAAKV,YAAY,uBAAuB,CAAC,iBAAA0xB,IAAqBttB,GAAG1D,KAAKihB,SAAS,CAAC,GAAGjhB,KAAKe,MAAMkwB,WAAWvtB,EAAE,CAAC,MAAAlB,GAAS,OAAOxC,KAAKe,MAAM6B,QAAQ,EAAE,MAAMsuB,EAAE,gBAAgB,CAACF,kBAAkB,CAACvsB,aAAQ,GAAQoN,WAAM,EAAOsf,SAAS,KAAI,IAAK,SAAS1F,GAAG7oB,SAASknB,IAAI,MAAMD,EAAEJ,GAAG,aAAauD,EAAE,WAAWtc,EAAE,WAAU,KAAI,CAAEsgB,kBAAkBhE,EAAEnb,MAAMgY,EAAEsH,SAAS1H,KAAI,CAACI,IAAiB,OAAO,gBAAgBqH,EAAExuB,SAAS,CAACC,MAAM+N,GAAgB,gBAAgBsa,EAAE,CAACnZ,MAAMgY,EAAEoH,QAAQ,CAACvtB,EAAEomB,KAAKL,EAAE/lB,GAAG,MAAMspB,EAAEvoB,SAASuoB,EAAEvoB,QAAQf,EAAEomB,EAAC,GAAIA,GAAG,CAAC2B,EAAEnsB,YAAY,+BAA+B,MAAMqrB,EAAE,SAASb,GAAG,IAAID,EAAEJ,EAAE,SAAS/Y,EAAEmZ,GAAgB,OAAO,gBAAgB4B,EAAE,KAAkB,gBAAgB3B,EAAEkD,EAAE,CAACxuB,IAAI,oBAAoBqrB,IAAI,CAAC,OAAOnZ,EAAEpR,YAAY,qBAAqB,OAAOuqB,EAAE,OAAOJ,EAAEK,EAAExqB,aAAamqB,EAAEK,EAAEpX,MAAMmX,EAAE,eAAenZ,CAAC,CAAnP,EAAqP,EAAEoO,QAAQgL,EAAEP,EAAE3mB,SAASinB,MAAM,MAAMloB,SAAS8nB,GAAGK,GAAGkD,EAAEtc,GAAG,WAAW,CAAC/O,SAAS8nB,KAAK5b,GAAG,SAASic,GAAG,MAAMD,EAAE,aAAaqH,GAAGrH,EAAEmH,kBAAkBvsB,aAAQ,EAAO,MAAMglB,EAAE,eAAc,KAAKI,EAAEsH,cAAS,EAAM,GAAG,IAAI,MAAM,CAACtH,EAAEhY,MAAM4X,EAAE,CAA3I,GAA+I,GAAG,aAAY,KAAKK,EAAE0E,uBAAsB,GAAG,CAACxB,EAAErrB,WAAW,aAAY,KAAK,IAAI+B,GAAE,EAAG,MAAMmmB,EAAEC,EAAEvI,QAAO,EAAE5f,SAASmoB,MAAMvhB,QAAQC,UAAUF,MAAK,KAAK9H,uBAAsB,KAAKkD,GAAGgN,EAAE,CAAC/O,SAASmoB,GAAE,GAAE,GAAE,IAAI,MAAM,KAAKpmB,GAAE,EAAGmmB,GAAE,CAAC,GAAG,IAAIhc,EAAE,CAAC,IAAIud,EAAEvd,GAAG,MAAMA,EAAEoI,EAAEpI,EAAEghB,IAAI,CAACtd,SAAQ,GAAI,CAAc,OAAO,gBAAgB2X,EAAExmB,SAAS,CAACC,MAAMqqB,GAAG,mBAAmBnD,EAAEA,EAAEmD,GAAGnD,GAAG,KAAI,IAAIoB,EAAE,EAAEroB,SAASknB,MAAM,MAAMD,EAAEa,IAAI,OAAOb,EAAEC,EAAED,GAAgB,gBAAgBc,EAAE,KAAKb,EAAC,EAAGwB,EAAE,EAAEjf,IAAIyd,EAAElnB,SAASinB,MAAM,MAAMJ,EAAEK,EAAE7gB,QAAQ,KAAK,IAAI+jB,EAAEtc,EAAE,GAAG,OAAO+Y,GAAG,GAAGuD,EAAElD,EAAExoB,UAAU,EAAEmoB,GAAG/Y,EAAEoZ,EAAExoB,UAAUmoB,IAAIuD,EAAElD,EAAe,gBAAgBZ,EAAExmB,SAAS,CAACC,MAAM,CAAChB,SAAS,CAACoC,SAASipB,EAAEzjB,OAAOmH,EAAExP,KAAK,MAAM2oB,EAAC,EAAGuH,GAAE,EAAE9nB,KAAK5F,EAAEd,SAASknB,MAAM,MAAM9H,QAAQ6H,GAAGV,KAAKxnB,SAAS8nB,GAAGiB,IAAIha,EAAE4Y,EAAE5lB,EAAEmmB,GAAGhc,EAAE4c,EAAE/Z,EAAE+Y,EAAE1lB,UAAU,OAAO+lB,EAAE,CAACnoB,SAAS8nB,EAAEzG,MAAMnV,EAAEmf,EAAE,CAAC,EAAEnf,EAAEvC,OAAO,CAACujB,IAAIhhB,EAAEghB,IAAIvlB,KAAK5F,IAAI,MAAK,EAAG2tB,GAAE,CAAC,MAAM,WAAW,aAAaC,GAAE,CAAC,WAAW,QAAQ,YAAY,MAAM,YAAYC,GAAGzH,IAAI,IAAI+E,IAAIhF,EAAEloB,SAAS8nB,EAAEnb,UAAUT,GAAGic,EAAEnJ,EAAEjQ,EAAEoZ,EAAEuH,IAAgB,OAAO,gBAAgBG,GAAGxE,EAAE,CAAC,EAAErM,EAAE,CAACrS,UAAUT,EAAEghB,IAAIhF,EAAEloB,SAAS8nB,IAAG,EAAG,IAAIvV,GAAG,EAAE,MAAMsd,GAAG1H,IAAI,IAAIlnB,SAASinB,EAAE1P,MAAMsP,EAAEnb,UAAUT,EAAE,MAAMghB,IAAIlO,EAAEhf,SAASsnB,GAAGa,EAAEyB,EAAE7a,EAAEoZ,EAAEwH,IAAG,MAAM/H,EAAE,WAAWtT,EAAE,UAAS,GAAIkV,EAAE,SAASxK,GAAG/N,EAAE,SAASqW,EAAEllB,UAAUmlB,EAAE,UAAS,GAAI,aAAY,KAAKhV,KAAKiV,IAAI,KAAKjV,KAAK,IAAIA,KAAK+B,EAAExR,SAAQ,EAAE,IAAI,IAAI,aAAY,KAAK,IAAIf,GAAE,EAAGomB,GAAE,EAAGnJ,IAAIwK,EAAE1mB,UAAU0mB,EAAE1mB,QAAQkc,EAAEjd,GAAE,GAAIulB,EAAEllB,WAAW6O,EAAEnO,UAAUmO,EAAEnO,QAAQwkB,EAAEllB,SAAS+lB,GAAE,GAAIZ,EAAEzkB,QAAQf,GAAGomB,GAAGb,EAAEllB,WAAW4c,EAAEuI,EAAEzkB,SAAS0kB,GAAE,GAAG,CAACxI,EAAEsI,IAAI,MAAME,EAAE,eAAc,KAAK,IAAIzlB,EAAkCuS,EAAExR,QAAQwR,EAAExR,SAAQ,GAAIf,EAAE6lB,EAAE9kB,QAAQykB,EAAEzkB,SAASf,GAAGA,EAAE+tB,QAAQ,GAAG,IAAiB,OAAO,gBAAgB5jB,EAAEmf,EAAE,CAAC7S,MAAM6S,EAAE,CAAC0E,QAAQ,QAAQjI,GAAGkI,SAAS,KAAKrtB,IAAIilB,GAAGgC,GAAG1B,EAAC,EAAG+H,GAAG,CAAC,WAAW,UAAU,WAAW,WAAW,UAAU,aAAaC,GAAG/H,IAAI,MAAMD,EAAEV,IAAIM,EAAEiB,IAAiB,OAAO,gBAAgBoH,GAAG9E,EAAE,CAAC,EAAEnD,EAAEJ,EAAEK,GAAE,EAAG,SAASgI,GAAGhI,GAAG,MAAMnoB,SAASkoB,EAAEkI,QAAQtI,GAAE,EAAG7mB,SAASiL,EAAEoU,SAAStB,EAAErS,UAAU2a,EAAE,OAAOa,EAAEyB,EAAE7a,EAAEoZ,EAAE8H,IAAIrI,EAAE,WAAWyI,QAAQnkB,GAAG1F,QAAO,CAACzE,EAAEomB,KAAK,MAAMD,EAAEkC,EAAEpL,EAAFoL,CAAKjC,GAAG,OAAOpmB,EAAEzD,OAAO4pB,EAAC,GAAG,KAAK9lB,SAASkS,GAAG4T,EAAEsB,EAAEd,EAAEd,EAAEtT,GAAG,GAAGkV,EAAE,CAAC,MAAM7f,OAAOwe,EAAE+E,IAAIne,EAAEvF,MAAM0C,EAAE1C,OAAOxI,MAAM4mB,IAAI4B,EAAElV,EAAEpI,EAAE/P,QAAQ6iB,EAAE9S,EAAEvE,KAAKiI,QAAQ,MAAM,IAAI2X,EAAE8D,EAAE,CAAC,EAAElD,EAAE,CAAC+E,IAAIne,EAAE/O,SAASkoB,IAAIV,EAAE,eAAeI,EAAEL,EAAEK,EAAExoB,MAAM6B,SAAsB,gBAAgBivB,GAAG,CAAClwB,SAASkoB,EAAEkI,QAAQtI,GAAGF,EAAExoB,MAAM6B,eAAU,GAAQ8nB,EAAEjB,EAAE8H,GAAGtI,EAAE4C,EAAEpC,EAAEuD,EAAE,CAAC6B,IAAIne,EAAE/O,SAASkoB,EAAEvb,UAAU2a,GAAGsC,GAAGA,EAAe,OAAO,gBAAgB3Y,EAAElQ,SAAS,CAACC,MAAM,CAACqf,QAAQtR,EAAEuR,SAAShM,IAAiB,gBAAgByU,EAAEmB,EAAE1C,GAAG,CAAC,OAAO,IAAI,CAAC,MAAM8I,GAAG,KAAK,MAAMvuB,EAAEgnB,IAAI,IAAIhnB,EAAE,MAAM,IAAI8J,MAAM,8JAA8J,OAAO9J,EAAE/B,UAAUuwB,GAAG,KAAK,MAAM,IAAI1kB,MAAM,wEAAuE,EAAG2kB,GAAG,KAAK,MAAMzuB,EAAEylB,IAAI,IAAIzlB,EAAE,MAAM,IAAI8J,MAAM,4JAA4J,MAAMsc,EAAEmI,KAAKpI,EAAEY,EAAE/mB,EAAEue,SAAS6H,EAAE/lB,UAAU,OAAO8lB,EAAEA,EAAEve,OAAO,MAAM8mB,GAAG1uB,IAAI,IAAIA,EAAE,MAAM,IAAI8J,MAAM,4EAA4E,MAAMsc,EAAEX,IAAI,IAAIW,EAAE,MAAM,IAAItc,MAAM,2JAA2J,MAAMqc,EAAEoI,KAAKxI,EAAEH,EAAE5lB,EAAEomB,EAAE9H,SAAStR,EAAE+Z,EAAEhB,EAAEI,EAAE9lB,UAAU,OAAO2M,EAAEsc,EAAE,CAAC,EAAEtc,EAAEpF,OAAO,CAACujB,IAAIne,EAAEme,IAAIvlB,KAAK5F,IAAI,8ICCv+U,SAASid,IAAI,OAAOA,EAAEtiB,OAAO6S,OAAO7S,OAAO6S,OAAOxQ,OAAO,SAASopB,GAAG,IAAI,IAAIpmB,EAAE,EAAEA,EAAEhE,UAAUC,OAAO+D,IAAI,CAAC,IAAI+lB,EAAE/pB,UAAUgE,GAAG,IAAI,IAAImmB,KAAKJ,EAAEprB,OAAOI,UAAUC,eAAeC,KAAK8qB,EAAEI,KAAKC,EAAED,GAAGJ,EAAEI,GAAG,CAAC,OAAOC,CAAC,EAAEnJ,EAAE5gB,MAAMC,KAAKN,UAAU,CAAC,SAASgR,EAAEoZ,GAAG,IAAIpmB,EAAEomB,GAAG,IAAIL,EAAE,GAAGI,EAAE,GAAG,MAAMmD,EAAEtpB,EAAEuF,QAAQ,MAAM,IAAI+jB,IAAInD,EAAEnmB,EAAExG,MAAM8vB,GAAGtpB,EAAEA,EAAExG,MAAM,EAAE8vB,IAAI,MAAMnf,EAAEnK,EAAEuF,QAAQ,KAAK,OAAO,IAAI4E,IAAI4b,EAAE/lB,EAAExG,MAAM2Q,GAAGnK,EAAEA,EAAExG,MAAM,EAAE2Q,IAAI,CAAC9J,SAASL,EAAE6F,OAAO,MAAMkgB,EAAE,GAAGA,EAAEvoB,KAAK,MAAM2oB,EAAE,GAAGA,EAAE,CAAC,MAAMZ,EAAE,6BAA6BM,EAAEO,IAAI,GAAG,iBAAiBA,EAAE,OAAO,CAACA,GAAGb,EAAE3T,KAAKwU,GAAX,CAAeA,EAAC,EAAG7T,EAAE,IAA+F,GAAckV,EAAE,IAAmG,GAAgB,SAAShC,EAAEW,EAAEpmB,EAAEuS,KAAK,IAAIwT,EAAE,IAAIF,EAAEO,GAAG,OAAOA,EAAE,GAAGA,EAAExf,WAAW,OAAOwf,EAAExf,WAAW,OAAO,OAAOwf,EAAE,MAAMD,EAAE,OAAOJ,EAAE,MAAM/lB,EAAEA,EAAEynB,KAAK1B,EAAE,IAAI,MAAM,GAAG,MAAMI,GAAGA,EAAE9sB,SAAS,KAAK8sB,EAAE3sB,MAAM,GAAG,GAAG2sB,IAAIC,EAAExf,WAAW,KAAKwf,EAAE,IAAIA,KAAK,CAAC,MAAMyB,EAAEzB,GAAG,MAAMA,OAAE,EAAOA,EAAExf,WAAW,KAA4E,SAAS4e,EAAEY,EAAEpmB,GAAG,MAAMK,SAAS0lB,EAAElgB,OAAOsgB,EAAE3oB,KAAK8rB,GAAGtc,EAAEoZ,GAAG,MAAM,IAAG,OAAEL,EAAE/lB,KAAKmmB,IAAImD,GAAG,CAAC,MAAMpa,EAAE,CAACkX,EAAEpmB,IAAI,iBAAiBomB,EAAEA,EAAEP,EAAEO,GAAGyB,EAAEzB,GAAG,SAASA,GAAG,MAAMpmB,EAAEylB,EAAEW,GAAGL,EAAlL,SAAwL,OAAgCP,EAAExlB,EAAE+lB,EAAI,CAAvE,CAAyEK,GAAG,SAASA,EAAEpmB,GAAG,GAAG6nB,EAAEzB,GAAG,OAAOA,EAAE,MAAMD,EAA1Q,SAAgRmD,GAAE,aAAElD,EAAEpmB,GAAG,OAAgCwlB,EAAE8D,EAAEnD,EAAI,CAA5F,CAA8FC,EAAEpmB,GAAGomB,EAAEY,EAAE,CAAC,KAAK,WAAW,UAAU,eAAe,kBAAkB,cAAc,WAAW,kBAAkB,QAAQ,UAAU,aAA2C,MAAMhK,EAAE,CAAC2R,gBAAgB,SAASC,YAAY,SAASC,gBAAgB,QAAQ,SAASlI,EAAEP,GAAgB,OAAO,gBAAgB,WAAE,MAAK,EAAEnoB,SAAS8nB,KAAkB,gBAAgBsF,EAAEpO,EAAE,CAAC,EAAEmJ,EAAE,CAAC0I,UAAU/I,MAAK,CAAC,MAAMsF,UAAU,YAAY,WAAAjC,CAAYhD,GAAGiH,MAAMjH,GAAG9pB,KAAKyyB,gBAAgB,EAAEnC,mBAAmBxG,EAAEuG,UAAU3sB,MAAM1D,KAAKe,MAAMwxB,gBAAgBzI,EAAEpmB,GAAG,CAACgvB,UAAU,CAAC1yB,KAAKe,MAAM2xB,UAAU1yB,KAAKe,MAAMsxB,iBAAiBnqB,OAAO2Z,SAAS2L,KAAK,KAAKrT,MAAMwG,EAAE,CAAC,EAAE3gB,KAAKe,MAAMoZ,MAAMna,KAAKe,MAAMuxB,cAAc,KAAK,IAAI5uB,GAAE,EAAG,oBAAoBpD,QAAQA,OAAOqyB,uBAAuBjvB,GAAE,GAAI1D,KAAKmE,MAAM,CAACyuB,YAAYlvB,GAAG1D,KAAK6yB,cAAc,KAAK7yB,KAAK8yB,UAAU9yB,KAAK8yB,UAAUpyB,KAAKV,KAAK,CAAC,SAAA+yB,GAAY,IAAIjJ,EAAExpB,OAAOqB,SAASoC,SAASzD,OAAOqB,SAAS4H,OAAOvJ,KAAKe,MAAMyxB,WAAWxyB,KAAKe,MAAMyxB,UAAUzuB,WAAW+lB,EAAE9pB,KAAKe,MAAMyxB,UAAUzuB,SAAS/D,KAAKe,MAAMyxB,UAAUjpB,QAAQ,MAAM7F,EAAEgN,EAAEkC,EAAE5S,KAAKe,MAAM0d,GAAGqL,IAAIL,EAAE/lB,EAAEK,SAASL,EAAE6F,OAAO,GAAGugB,IAAIL,EAAE,OAAOnI,UAAUzV,QAAQ4d,EAAE,CAAC,oBAAArnB,GAAuB,IAAIpC,KAAKgzB,GAAG,OAAO,MAAM1b,SAASwS,EAAExF,GAAG5gB,GAAG1D,KAAKgzB,GAAGhzB,KAAK6yB,eAAe7yB,KAAK6yB,cAAcrd,QAAQsU,EAAEmJ,UAAUvvB,GAAGomB,EAAEoJ,YAAY,CAAC,SAAAJ,CAAUhJ,GAAG9pB,KAAKe,MAAMovB,UAAU9xB,OAAOI,UAAUC,eAAeC,KAAKqB,KAAKe,MAAMovB,SAAS,WAAWnwB,KAAKe,MAAMovB,SAAS1rB,QAAQqlB,EAAE9pB,KAAKe,MAAMovB,UAAUnwB,KAAKe,MAAMovB,SAASrG,GAAG9pB,KAAKmE,MAAMyuB,aAAa9I,IAAI9pB,KAAKgzB,GAAG,EAAElJ,EAAEpmB,KAAK,MAAM+lB,EAAE,IAAInpB,OAAOqyB,sBAAqBlJ,IAAIA,EAAE/c,SAAQ+c,IAAIK,IAAIL,EAAE0J,QAAQzvB,EAAE+lB,EAAE2J,gBAAgB3J,EAAE4J,kBAAkB,EAAC,GAAE,IAAI,OAAO5J,EAAE6J,QAAQxJ,GAAG,CAACxS,SAASmS,EAAEnF,GAAGwF,EAAG,EAAtK,CAAwKA,GAAEA,IAAIA,EAAE9pB,KAAK6yB,cAAc7yB,KAAK+yB,YAAY/yB,KAAK6yB,eAAe7yB,KAAK6yB,cAAcrd,OAAM,IAAI,CAAC,MAAAhT,GAAS,MAAMsnB,EAAE9pB,KAAKe,OAAO0d,GAAGgL,EAAE2G,SAASvG,EAAE7pB,KAAKyyB,gBAAgBlC,QAAQ1iB,EAAE0lB,aAAatK,EAAE9kB,MAAM8R,EAAE1E,QAAQ4Z,EAAEqH,UAAUrJ,GAAGW,EAAEyB,EAAE,SAASzB,EAAEpmB,GAAG,GAAG,MAAMomB,EAAE,MAAM,CAAC,EAAE,IAAIL,EAAEI,EAAEmD,EAAE,CAAC,EAAEnf,EAAExP,OAAOoO,KAAKqd,GAAG,IAAID,EAAE,EAAEA,EAAEhc,EAAElO,OAAOkqB,IAAInmB,EAAEuF,QAAQwgB,EAAE5b,EAAEgc,KAAK,IAAImD,EAAEvD,GAAGK,EAAEL,IAAI,OAAOuD,CAAC,CAAjI,CAAmIlD,EAAEY,GAAgN9D,EAAEhU,EAAE6W,EAAEN,EAAEplB,UAAU,OAAOwlB,EAAE3C,GAAgB,gBAAgB,OAAEjG,EAAE,CAAClC,GAAGmI,EAAEziB,MAAM8R,EAAEma,SAASvG,EAAEsG,SAASnwB,KAAK8yB,UAAUS,aAAazJ,IAAIb,GAAGA,EAAEa,GAAG,MAAMpmB,EAAEgN,EAAEkW,GAAGtF,UAAUvK,SAASrT,EAAEK,SAASL,EAAE6F,OAAM,EAAGgnB,QAAQzG,IAAI,GAAGjc,GAAGA,EAAEic,KAAK,IAAIA,EAAE2G,QAAQzwB,KAAKe,MAAMoyB,QAAQrJ,EAAE0G,kBAAkB1G,EAAE4G,SAAS5G,EAAE6G,QAAQ7G,EAAE8G,SAAS9G,EAAE+G,UAAU,CAAC/G,EAAEgH,iBAAiB,IAAIptB,EAAEynB,EAAE,MAAM1B,EAAE3G,UAAU8D,KAAKuC,EAAEplB,SAAS,kBAAkBonB,GAAG1B,IAAI/lB,GAAE,GAAIpD,OAAOohB,YAAYkF,EAAE,CAACziB,MAAM8R,EAAE1E,QAAQ7N,GAAG,CAAC,OAAM,CAAC,GAAI6nB,IAAiB,gBAAgB,IAAI5K,EAAE,CAACnW,KAAKoc,GAAG2E,GAAG,EAAEwD,EAAEjsB,UAAU6d,EAAE,CAAC,EAAED,EAAE,CAAC6P,QAAQ,OAAO9R,GAAG,SAASxb,WAAWsO,QAAQ,OAAOpN,MAAM,WAAW,MAAM0nB,EAAE,cAAa,CAAC/B,EAAEL,IAAiB,gBAAgBY,EAAE1J,EAAE,CAACwP,SAAS1G,GAAGK,uQCA/wI,SAASkD,IAAI,OAAOA,EAAE3uB,OAAO6S,OAAO7S,OAAO6S,OAAOxQ,OAAO,SAASopB,GAAG,IAAI,IAAIpmB,EAAE,EAAEA,EAAEhE,UAAUC,OAAO+D,IAAI,CAAC,IAAI+lB,EAAE/pB,UAAUgE,GAAG,IAAI,IAAImmB,KAAKJ,EAAEprB,OAAOI,UAAUC,eAAeC,KAAK8qB,EAAEI,KAAKC,EAAED,GAAGJ,EAAEI,GAAG,CAAC,OAAOC,CAAC,EAAEkD,EAAEjtB,MAAMC,KAAKN,UAAU,CAAC,MAAMgR,EAAE,IAAI/G,IAAI4f,EAAE,CAACrrB,IAAI4rB,GAAGpZ,EAAExS,IAAI4rB,IAAI,GAAG,GAAAjrB,CAAIirB,EAAEpmB,GAAG,MAAM+lB,EAAE/Y,EAAExS,IAAI4rB,IAAI,GAAGL,EAAE3gB,KAAKpF,GAAGgN,EAAE7R,IAAIirB,EAAEL,EAAE,EAAE,OAAOK,GAAGpZ,EAAEL,OAAOyZ,EAAE,GAAGjc,EAAE,oBAAoB4e,MAAMA,KAAKtW,qBAAqBsW,KAAKtW,oBAAoBzV,KAAKJ,SAAS,SAASwpB,GAAG,MAAMpmB,EAAEgQ,KAAKgb,MAAM,OAAOxf,YAAW,WAAW4a,EAAE,CAAC0J,YAAW,EAAGC,cAAc,WAAW,OAAOtE,KAAKC,IAAI,EAAE,IAAI1b,KAAKgb,MAAMhrB,GAAG,GAAG,GAAE,EAAE,EAAE,IAAIulB,EAAYa,KAAiFb,IAAIA,EAAE,CAAC,IAAnFyK,YAAY,eAAe5J,EAAE6J,KAAK,OAAO7J,EAAE8J,cAAc,kBAA8B,MAAMjT,EAAE,IAAI1Q,IAAI,CAAC,MAAM,WAAW,0BAA0B,WAAW,SAAS,YAAYsb,EAAE,IAAItb,IAAIiZ,EAAE,IAAIvf,IAAI,SAASwf,EAAEzlB,GAAgB,OAAO,gBAAgB,WAAE,MAAK,IAAiB,gBAAgBuS,EAAEvS,IAAG,CAAC,SAASuS,EAAEwT,GAAG,MAAMoK,IAAInjB,EAAEojB,SAASnT,EAAEsI,EAAEyK,aAAajK,GAAG,CAAC,GAAG1lB,SAASwnB,IAAG,mBAAI,IAAG,gBAAE,KAAK,IAAIzB,EAAE,OAAOnJ,GAAG,KAAKsI,EAAEyK,YAAY5J,EAAEY,EAAEjB,GAAG,MAAM,KAAKR,EAAE0K,KAAK9lB,GAAE,KAAKic,EAAEY,EAAEjB,EAAC,IAAI,MAAM,KAAKR,EAAE2K,cAAc,CAAC,MAAM9J,EAAEpJ,EAAE+I,GAAGF,EAAE1qB,IAAI0sB,EAAEzB,EAAE,EAAE,MAAM,KAAK,MAAM9kB,OAAOtB,EAAEqwB,aAAatK,EAAEuK,cAAcnK,GAAGC,GAAG,CAAC,EAAEL,IAAI,MAAM/lB,GAAGA,EAAErB,oBAAoB,OAAOonB,IAAII,IAAI,MAAMnmB,GAAGA,EAAErB,oBAAoB,QAAQwnB,IAAI,MAAMnmB,GAAGA,EAAE4B,QAAO,CAAC,GAAG,IAAIqb,IAAIsI,EAAE2K,cAAc,CAAC,MAAMlwB,EAAEkP,EAAE6W,GAAGI,EAAEnJ,EAAE+I,GAAG,MAAM,oBAAoBnpB,QAAQipB,EAAE1qB,IAAI0sB,EAAE1B,GAAgB,gBAAgB,SAASnmB,EAAEspB,EAAE,CAACpkB,KAAK,iBAAiB,gBAAgB+X,EAAE9J,YAAY,aAAagT,EAAE,CAACoK,wBAAwB,CAACC,OAAOthB,EAAE6W,MAAMuD,EAAE,CAACpkB,KAAK,iBAAiBirB,IAAI1I,EAAEza,GAAG,gBAAgBiQ,EAAE9J,YAAY,aAAagT,GAAG,CAAC,OAAO,IAAI,CAAC,SAASa,EAAEZ,GAAG,MAAMlQ,GAAGlW,EAAEmwB,IAAIpK,EAAEqK,SAASjK,EAAEZ,EAAEyK,YAAYS,OAAOzjB,EAAEugB,QAAQ1H,GAAGO,GAAG,CAAC,EAAEjc,EAAEnK,GAAG+lB,EAAE9I,EAAE,CAAC,OAAO,SAASwI,EAAE,CAACiL,KAAK1jB,EAAEmB,MAAM0X,GAAG,GAAG1b,EAAE,CAAC,IAAI,MAAMic,KAAKnJ,EAAE,GAAG,MAAMwI,GAAGA,EAAEW,GAAG,CAAC,IAAI7T,EAAE,MAAMvS,EAAEwlB,EAAEhrB,IAAI2P,IAAI,CAAC,GAAGwmB,UAAU5K,EAAE,KAAK,MAAM/lB,OAAE,EAAOA,EAAEomB,KAAK,CAAC,EAAE,IAAIY,EAAES,EAAE1B,EAAE3gB,KAAK,MAAMqgB,OAAE,EAAOA,EAAEW,IAAI,MAAMpmB,GAAG,OAAOuS,EAAEvS,EAAEomB,KAAK7T,EAAEkI,MAAM,MAAMgL,GAAG,OAAOuB,EAAEvB,EAAEW,KAAKY,EAAE/rB,KAAKwqB,EAAE,MAAMzlB,GAAG,OAAOynB,EAAEznB,EAAEomB,SAAI,EAAOqB,EAAEhN,OAAO+K,EAAErqB,IAAIgP,EAAEmf,EAAE,CAAC,EAAEtpB,EAAE,CAAC,CAAComB,GAAG,CAACuK,UAAU5K,KAAK,CAAC,GAAG8B,EAAEttB,IAAI4P,GAAG,OAAO,IAAI,CAAC,MAAMoc,EAAErX,EAAEkX,GAAGR,EAAE5I,EAAEoJ,GAAGO,EAAEjpB,SAASqB,cAAc,UAAUiB,IAAI2mB,EAAEzQ,GAAGlW,GAAG2mB,EAAE3kB,QAAQouB,SAASjK,EAAE,IAAI,MAAMC,EAAEpmB,KAAKrF,OAAO2c,QAAQsO,GAAGe,EAAE7d,aAAasd,EAAEpmB,GAAGumB,IAAII,EAAEvK,YAAYmK,GAAGR,IAAIY,EAAEwJ,IAAIpK,GAAG,MAAMoB,EAAE,CAAC,EAAE,GAAGhd,EAAE,CAAC,IAAI,MAAMic,KAAKnJ,EAAE,CAAC,MAAMjd,EAAEA,GAAG0nB,EAAE1nB,EAAEmK,EAAEic,GAAGO,EAAEtoB,iBAAiB+nB,EAAEpmB,GAAGmnB,EAAE,GAAGf,aAAapmB,CAAC,CAAC6nB,EAAE9U,IAAI5I,EAAE,CAAC,OAAOzM,SAASgY,KAAKpT,YAAYqkB,GAAG,CAACrlB,OAAOqlB,EAAE0J,aAAalJ,EAAEkJ,aAAaC,cAAcnJ,EAAEmJ,cAAc,CAAC,SAASphB,EAAEkX,GAAG,MAAMmK,wBAAwBvwB,EAAEd,SAAS6mB,EAAE,IAAIK,GAAG,CAAC,GAAGoK,OAAOrK,EAAE,IAAInmB,GAAG,CAAC,EAAE,OAAOmmB,GAAGJ,CAAC,CAAC,SAAS/I,EAAEoJ,GAAG,MAAMpmB,EAAE,CAAC,EAAE,IAAI,MAAM+lB,EAAEI,KAAKxrB,OAAO2c,QAAQ8O,GAAGnJ,EAAE1iB,IAAIwrB,KAAK/lB,EAAE+lB,GAAGI,GAAG,OAAOnmB,CAAC,CAAC,SAASynB,EAAErB,GAAG,GAAGA,EAAE,MAAM,4BAA4B7f,mBAAmB6f,IAAI,CAAC,SAASsB,EAAEtB,EAAEpmB,EAAE+lB,GAAG,MAAMI,EAAEX,EAAEhrB,IAAIwF,IAAI,CAAC,EAAE,IAAI,MAAMA,KAAK,MAAMmmB,GAAG,OAAOmD,EAAEnD,EAAEJ,SAAI,EAAOuD,EAAEqH,YAAY,GAAG,CAAC,IAAIrH,EAAEtpB,EAAEomB,EAAE,CAACZ,EAAErqB,IAAI6E,EAAE,CAAC,CAAC+lB,GAAG,CAACtL,MAAM2L,IAAI","sources":["webpack://homepage/./node_modules/gatsby-page-utils/dist/apply-trailing-slash-option.js","webpack://homepage/./node_modules/gatsby-react-router-scroll/index.js","webpack://homepage/./node_modules/gatsby-react-router-scroll/scroll-handler.js","webpack://homepage/./node_modules/gatsby-react-router-scroll/session-storage.js","webpack://homepage/./node_modules/gatsby-react-router-scroll/use-scroll-restoration.js","webpack://homepage/./node_modules/gatsby/dist/internal-plugins/partytown/gatsby-browser.js","webpack://homepage/./node_modules/gatsby/dist/internal-plugins/partytown/utils/get-forwards.js","webpack://homepage/./node_modules/gatsby/dist/internal-plugins/partytown/utils/inject-partytown-snippet.js","webpack://homepage/./.cache/_this_is_virtual_fs_path_/$virtual/async-requires.js","webpack://homepage/./.cache/api-runner-browser-plugins.js","webpack://homepage/./.cache/api-runner-browser.js","webpack://homepage/./.cache/emitter.js","webpack://homepage/./node_modules/mitt/dist/mitt.es.js","webpack://homepage/./.cache/normalize-page-path.js","webpack://homepage/./.cache/find-path.js","webpack://homepage/./.cache/gatsby-browser-entry.js","webpack://homepage/./.cache/prefetch.js","webpack://homepage/./.cache/loader.js","webpack://homepage/./.cache/head/components/fire-callback-in-effect.js","webpack://homepage/./.cache/head/constants.js","webpack://homepage/./.cache/head/utils.js","webpack://homepage/./.cache/head/head-export-handler-for-browser.js","webpack://homepage/./.cache/page-renderer.js","webpack://homepage/./.cache/route-announcer-props.js","webpack://homepage/./.cache/navigation.js","webpack://homepage/./node_modules/shallow-compare/es/index.js","webpack://homepage/./.cache/ensure-resources.js","webpack://homepage/./.cache/production-app.js","webpack://homepage/./.cache/public-page-renderer-prod.js","webpack://homepage/./.cache/public-page-renderer.js","webpack://homepage/./.cache/react-dom-utils.js","webpack://homepage/./.cache/redirect-utils.js","webpack://homepage/./.cache/register-service-worker.js","webpack://homepage/./.cache/slice/context.js","webpack://homepage/./.cache/static-query.js","webpack://homepage/./.cache/context-utils.js","webpack://homepage/./.cache/strip-prefix.js","webpack://homepage/./node_modules/gatsby-remark-autolink-headers/gatsby-browser.js","webpack://homepage/./node_modules/gatsby-remark-images/constants.js","webpack://homepage/./node_modules/gatsby-remark-images/gatsby-browser.js","webpack://homepage/./node_modules/invariant/browser.js","webpack://homepage/./node_modules/react-server-dom-webpack/cjs/react-server-dom-webpack.production.min.js","webpack://homepage/./node_modules/react-server-dom-webpack/index.js","webpack://homepage/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://homepage/./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack://homepage/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://homepage/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://homepage/./node_modules/@builder.io/partytown/integration/index.cjs","webpack://homepage/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://homepage/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://homepage/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://homepage/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://homepage/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://homepage/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://homepage/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://homepage/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://homepage/./node_modules/@gatsbyjs/reach-router/dist/index.modern.mjs","webpack://homepage/./node_modules/gatsby-link/dist/index.modern.mjs","webpack://homepage/./node_modules/gatsby-script/dist/index.modern.mjs"],"sourcesContent":["\"use strict\";\n\nexports.__esModule = true;\nexports.applyTrailingSlashOption = void 0;\nconst applyTrailingSlashOption = (input, option = `always`) => {\n const hasHtmlSuffix = input.endsWith(`.html`);\n const hasXmlSuffix = input.endsWith(`.xml`);\n const hasPdfSuffix = input.endsWith(`.pdf`);\n if (input === `/`) return input;\n if (hasHtmlSuffix || hasXmlSuffix || hasPdfSuffix) {\n option = `never`;\n }\n if (option === `always`) {\n return input.endsWith(`/`) ? input : `${input}/`;\n }\n if (option === `never`) {\n return input.endsWith(`/`) ? input.slice(0, -1) : input;\n }\n return input;\n};\nexports.applyTrailingSlashOption = applyTrailingSlashOption;","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = exports.ScrollContext = void 0;\nvar _scrollHandler = require(\"./scroll-handler\");\nexports.ScrollContext = _scrollHandler.ScrollHandler;\nvar _useScrollRestoration = require(\"./use-scroll-restoration\");\nexports.useScrollRestoration = _useScrollRestoration.useScrollRestoration;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nexports.__esModule = true;\nexports.ScrollHandler = exports.ScrollContext = void 0;\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _sessionStorage = require(\"./session-storage\");\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nvar ScrollContext = /*#__PURE__*/React.createContext(new _sessionStorage.SessionStorage());\nexports.ScrollContext = ScrollContext;\nScrollContext.displayName = \"GatsbyScrollContext\";\nvar ScrollHandler = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(ScrollHandler, _React$Component);\n function ScrollHandler() {\n var _this;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this._stateStorage = new _sessionStorage.SessionStorage();\n _this._isTicking = false;\n _this._latestKnownScrollY = 0;\n _this.scrollListener = function () {\n _this._latestKnownScrollY = window.scrollY;\n if (!_this._isTicking) {\n _this._isTicking = true;\n requestAnimationFrame(_this._saveScroll.bind((0, _assertThisInitialized2.default)(_this)));\n }\n };\n _this.windowScroll = function (position, prevProps) {\n if (_this.shouldUpdateScroll(prevProps, _this.props)) {\n window.scrollTo(0, position);\n }\n };\n _this.scrollToHash = function (hash, prevProps) {\n var node = document.getElementById(hash.substring(1));\n if (node && _this.shouldUpdateScroll(prevProps, _this.props)) {\n node.scrollIntoView();\n }\n };\n _this.shouldUpdateScroll = function (prevRouterProps, routerProps) {\n var shouldUpdateScroll = _this.props.shouldUpdateScroll;\n if (!shouldUpdateScroll) {\n return true;\n }\n\n // Hack to allow accessing this._stateStorage.\n return shouldUpdateScroll.call((0, _assertThisInitialized2.default)(_this), prevRouterProps, routerProps);\n };\n return _this;\n }\n var _proto = ScrollHandler.prototype;\n _proto._saveScroll = function _saveScroll() {\n var key = this.props.location.key || null;\n if (key) {\n this._stateStorage.save(this.props.location, key, this._latestKnownScrollY);\n }\n this._isTicking = false;\n };\n _proto.componentDidMount = function componentDidMount() {\n window.addEventListener(\"scroll\", this.scrollListener);\n var scrollPosition;\n var _this$props$location = this.props.location,\n key = _this$props$location.key,\n hash = _this$props$location.hash;\n if (key) {\n scrollPosition = this._stateStorage.read(this.props.location, key);\n }\n\n /** If a hash is present in the browser url as the component mounts (i.e. the user is navigating\n * from an external website) then scroll to the hash instead of any previously stored scroll\n * position. */\n if (hash) {\n this.scrollToHash(decodeURI(hash), undefined);\n } else if (scrollPosition) {\n this.windowScroll(scrollPosition, undefined);\n }\n };\n _proto.componentWillUnmount = function componentWillUnmount() {\n window.removeEventListener(\"scroll\", this.scrollListener);\n };\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var _this$props$location2 = this.props.location,\n hash = _this$props$location2.hash,\n key = _this$props$location2.key;\n var scrollPosition;\n if (key) {\n scrollPosition = this._stateStorage.read(this.props.location, key);\n }\n\n /** There are two pieces of state: the browser url and\n * history state which keeps track of scroll position\n * Native behaviour prescribes that we ought to restore scroll position\n * when a user navigates back in their browser (this is the `POP` action)\n * Currently, reach router has a bug that prevents this at https://github.com/reach/router/issues/228\n * So we _always_ stick to the url as a source of truth — if the url\n * contains a hash, we scroll to it\n */\n\n if (hash) {\n this.scrollToHash(decodeURI(hash), prevProps);\n } else {\n this.windowScroll(scrollPosition, prevProps);\n }\n };\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(ScrollContext.Provider, {\n value: this._stateStorage\n }, this.props.children);\n };\n return ScrollHandler;\n}(React.Component);\nexports.ScrollHandler = ScrollHandler;\nScrollHandler.propTypes = {\n shouldUpdateScroll: _propTypes.default.func,\n children: _propTypes.default.element.isRequired,\n location: _propTypes.default.object.isRequired\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.SessionStorage = void 0;\nvar STATE_KEY_PREFIX = \"@@scroll|\";\nvar GATSBY_ROUTER_SCROLL_STATE = \"___GATSBY_REACT_ROUTER_SCROLL\";\nvar SessionStorage = /*#__PURE__*/function () {\n function SessionStorage() {}\n var _proto = SessionStorage.prototype;\n _proto.read = function read(location, key) {\n var stateKey = this.getStateKey(location, key);\n try {\n var value = window.sessionStorage.getItem(stateKey);\n return value ? JSON.parse(value) : 0;\n } catch (e) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[gatsby-react-router-scroll] Unable to access sessionStorage; sessionStorage is not available.\");\n }\n if (window && window[GATSBY_ROUTER_SCROLL_STATE] && window[GATSBY_ROUTER_SCROLL_STATE][stateKey]) {\n return window[GATSBY_ROUTER_SCROLL_STATE][stateKey];\n }\n return 0;\n }\n };\n _proto.save = function save(location, key, value) {\n var stateKey = this.getStateKey(location, key);\n var storedValue = JSON.stringify(value);\n try {\n window.sessionStorage.setItem(stateKey, storedValue);\n } catch (e) {\n if (window && window[GATSBY_ROUTER_SCROLL_STATE]) {\n window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n } else {\n window[GATSBY_ROUTER_SCROLL_STATE] = {};\n window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n }\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[gatsby-react-router-scroll] Unable to save state in sessionStorage; sessionStorage is not available.\");\n }\n }\n };\n _proto.getStateKey = function getStateKey(location, key) {\n var stateKeyBase = \"\" + STATE_KEY_PREFIX + location.pathname;\n return key === null || typeof key === \"undefined\" ? stateKeyBase : stateKeyBase + \"|\" + key;\n };\n return SessionStorage;\n}();\nexports.SessionStorage = SessionStorage;","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = useScrollRestoration;\nvar _scrollHandler = require(\"./scroll-handler\");\nvar _react = require(\"react\");\nvar _reachRouter = require(\"@gatsbyjs/reach-router\");\nfunction useScrollRestoration(identifier) {\n var location = (0, _reachRouter.useLocation)();\n var state = (0, _react.useContext)(_scrollHandler.ScrollContext);\n var ref = (0, _react.useRef)(null);\n (0, _react.useLayoutEffect)(function () {\n if (ref.current) {\n var position = state.read(location, identifier);\n ref.current.scrollTo(0, position || 0);\n }\n }, [location.key]);\n return {\n ref: ref,\n onScroll: function onScroll() {\n if (ref.current) {\n state.save(location, identifier, ref.current.scrollTop);\n }\n }\n };\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.onInitialClientRender = void 0;\nvar _gatsbyScript = require(\"gatsby-script\");\nvar _injectPartytownSnippet = require(\"./utils/inject-partytown-snippet\");\n// Makes sure off-main-thread scripts are loaded in `gatsby develop`\nconst onInitialClientRender = () => {\n if (process.env.NODE_ENV !== `development`) {\n return;\n }\n (0, _injectPartytownSnippet.injectPartytownSnippet)(_gatsbyScript.collectedScriptsByPage.get(window.location.pathname));\n\n // Clear scripts after we've used them to avoid leaky behavior\n _gatsbyScript.collectedScriptsByPage.delete(window.location.pathname);\n};\n\n// Client-side navigation (CSR, e.g. Gatsby Link navigations) are broken upstream in Partytown.\n// We need an official API from Partytown for handling re-configuration and on-demand script loading.\n// Until then, `off-main-thread` scripts load only on server-side navigation (SSR).\n// See https://github.com/BuilderIO/partytown/issues/74 for more details.\nexports.onInitialClientRender = onInitialClientRender;\n//# sourceMappingURL=gatsby-browser.js.map","\"use strict\";\n\nexports.__esModule = true;\nexports.getForwards = getForwards;\nfunction getForwards(collectedScripts) {\n return collectedScripts === null || collectedScripts === void 0 ? void 0 : collectedScripts.flatMap(script => (script === null || script === void 0 ? void 0 : script.forward) || []);\n}\n//# sourceMappingURL=get-forwards.js.map","\"use strict\";\n\nexports.__esModule = true;\nexports.injectPartytownSnippet = injectPartytownSnippet;\nvar _integration = require(\"@builder.io/partytown/integration\");\nvar _getForwards = require(\"./get-forwards\");\n// Adapted from https://github.com/BuilderIO/partytown/blob/main/src/react/snippet.tsx to only include CSR logic\nfunction injectPartytownSnippet(collectedScripts) {\n if (!collectedScripts.length) {\n return;\n }\n const existingSnippet = document.querySelector(`script[data-partytown]`);\n const existingSandbox = document.querySelector(`iframe[src*=\"~partytown/partytown-sandbox-sw\"]`);\n if (existingSnippet) {\n existingSnippet.remove();\n }\n if (existingSandbox) {\n existingSandbox.remove();\n }\n const forwards = (0, _getForwards.getForwards)(collectedScripts);\n const snippet = document.createElement(`script`);\n snippet.dataset.partytown = ``;\n snippet.innerHTML = (0, _integration.partytownSnippet)({\n forward: forwards\n });\n document.head.appendChild(snippet);\n}\n//# sourceMappingURL=inject-partytown-snippet.js.map","exports.components = {\n \"component---src-pages-404-tsx\": () => import(\"./../../../src/pages/404.tsx\" /* webpackChunkName: \"component---src-pages-404-tsx\" */),\n \"component---src-pages-about-tsx\": () => import(\"./../../../src/pages/about.tsx\" /* webpackChunkName: \"component---src-pages-about-tsx\" */),\n \"component---src-pages-articles-tsx\": () => import(\"./../../../src/pages/articles.tsx\" /* webpackChunkName: \"component---src-pages-articles-tsx\" */),\n \"component---src-pages-index-tsx\": () => import(\"./../../../src/pages/index.tsx\" /* webpackChunkName: \"component---src-pages-index-tsx\" */),\n \"component---src-pages-photography-index-tsx\": () => import(\"./../../../src/pages/photography/index.tsx\" /* webpackChunkName: \"component---src-pages-photography-index-tsx\" */),\n \"component---src-pages-photography-leaving-home-tsx\": () => import(\"./../../../src/pages/photography/leaving_home.tsx\" /* webpackChunkName: \"component---src-pages-photography-leaving-home-tsx\" */),\n \"component---src-pages-photography-to-vanish-tsx\": () => import(\"./../../../src/pages/photography/to_vanish.tsx\" /* webpackChunkName: \"component---src-pages-photography-to-vanish-tsx\" */),\n \"component---src-pages-photography-transient-tsx\": () => import(\"./../../../src/pages/photography/transient.tsx\" /* webpackChunkName: \"component---src-pages-photography-transient-tsx\" */),\n \"component---src-pages-privacy-tsx\": () => import(\"./../../../src/pages/privacy.tsx\" /* webpackChunkName: \"component---src-pages-privacy-tsx\" */),\n \"component---src-pages-projects-tsx\": () => import(\"./../../../src/pages/projects.tsx\" /* webpackChunkName: \"component---src-pages-projects-tsx\" */),\n \"component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md\": () => import(\"./../../../src/templates/article.tsx?__contentFilePath=/home/runner/work/homepage/homepage/src/articles/01_manim_intro/manim_intro.md\" /* webpackChunkName: \"component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md\" */),\n \"component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md\": () => import(\"./../../../src/templates/article.tsx?__contentFilePath=/home/runner/work/homepage/homepage/src/articles/02_maki_atoms_and_time_travel/maki_atoms_and_time_travel.md\" /* webpackChunkName: \"component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md\" */),\n \"component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md\": () => import(\"./../../../src/templates/article.tsx?__contentFilePath=/home/runner/work/homepage/homepage/src/articles/03_installing_gentoo/installing_gentoo.md\" /* webpackChunkName: \"component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md\" */),\n \"component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md\": () => import(\"./../../../src/templates/article.tsx?__contentFilePath=/home/runner/work/homepage/homepage/src/articles/04_revealjs/revealjs.md\" /* webpackChunkName: \"component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md\" */),\n \"component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md\": () => import(\"./../../../src/templates/article.tsx?__contentFilePath=/home/runner/work/homepage/homepage/src/articles/05_compare_view_example/compare_view_example.md\" /* webpackChunkName: \"component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md\" */),\n \"component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md\": () => import(\"./../../../src/templates/article.tsx?__contentFilePath=/home/runner/work/homepage/homepage/src/articles/06_bash_cmds/01_mp3_tag.md\" /* webpackChunkName: \"component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md\" */),\n \"component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md\": () => import(\"./../../../src/templates/article.tsx?__contentFilePath=/home/runner/work/homepage/homepage/src/articles/07_lvim_in_distrobox/lvim_in_distrobox.md\" /* webpackChunkName: \"component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md\" */),\n \"component---src-templates-projects-language-tsx\": () => import(\"./../../../src/templates/projects_language.tsx\" /* webpackChunkName: \"component---src-templates-projects-language-tsx\" */)\n}\n\n","module.exports = [{\n plugin: require('../node_modules/gatsby-remark-images/gatsby-browser.js'),\n options: {\"plugins\":[],\"maxWidth\":8000,\"linkImagesToOriginal\":true,\"showCaptions\":false,\"markdownCaptions\":false,\"backgroundColor\":\"white\",\"quality\":50,\"withWebp\":false,\"withAvif\":false,\"loading\":\"lazy\",\"decoding\":\"async\",\"disableBgImageOnAlpha\":false,\"disableBgImage\":false},\n },{\n plugin: require('../node_modules/gatsby-remark-autolink-headers/gatsby-browser.js'),\n options: {\"plugins\":[],\"isIconAfterHeader\":false,\"offsetY\":0,\"className\":\"anchor\"},\n },{\n plugin: require('../node_modules/gatsby/dist/internal-plugins/partytown/gatsby-browser.js'),\n options: {\"plugins\":[]},\n }]\n","const plugins = require(`./api-runner-browser-plugins`)\nconst { getResourceURLsForPathname, loadPage, loadPageSync } =\n require(`./loader`).publicLoader\n\nexports.apiRunner = (api, args = {}, defaultReturn, argTransform) => {\n // Hooks for gatsby-cypress's API handler\n if (process.env.CYPRESS_SUPPORT) {\n if (window.___apiHandler) {\n window.___apiHandler(api)\n } else if (window.___resolvedAPIs) {\n window.___resolvedAPIs.push(api)\n } else {\n window.___resolvedAPIs = [api]\n }\n }\n\n let results = plugins.map(plugin => {\n if (!plugin.plugin[api]) {\n return undefined\n }\n\n args.getResourceURLsForPathname = getResourceURLsForPathname\n args.loadPage = loadPage\n args.loadPageSync = loadPageSync\n\n const result = plugin.plugin[api](args, plugin.options)\n if (result && argTransform) {\n args = argTransform({ args, result, plugin })\n }\n return result\n })\n\n // Filter out undefined results.\n results = results.filter(result => typeof result !== `undefined`)\n\n if (results.length > 0) {\n return results\n } else if (defaultReturn) {\n return [defaultReturn]\n } else {\n return []\n }\n}\n\nexports.apiRunnerAsync = (api, args, defaultReturn) =>\n plugins.reduce(\n (previous, next) =>\n next.plugin[api]\n ? previous.then(() => next.plugin[api](args, next.options))\n : previous,\n Promise.resolve()\n )\n","import mitt from \"mitt\"\n\nconst emitter = mitt()\nexport default emitter\n","// \n// An event handler can take an optional event argument\n// and should not return a value\n \n \n\n// An array of all currently registered event handlers for a type\n \n \n// A map of event types and their corresponding event handlers.\n \n \n \n \n\n/** Mitt: Tiny (~200b) functional event emitter / pubsub.\n * @name mitt\n * @returns {Mitt}\n */\nfunction mitt(all ) {\n\tall = all || Object.create(null);\n\n\treturn {\n\t\t/**\n\t\t * Register an event handler for the given type.\n\t\t *\n\t\t * @param {String} type\tType of event to listen for, or `\"*\"` for all events\n\t\t * @param {Function} handler Function to call in response to given event\n\t\t * @memberOf mitt\n\t\t */\n\t\ton: function on(type , handler ) {\n\t\t\t(all[type] || (all[type] = [])).push(handler);\n\t\t},\n\n\t\t/**\n\t\t * Remove an event handler for the given type.\n\t\t *\n\t\t * @param {String} type\tType of event to unregister `handler` from, or `\"*\"`\n\t\t * @param {Function} handler Handler function to remove\n\t\t * @memberOf mitt\n\t\t */\n\t\toff: function off(type , handler ) {\n\t\t\tif (all[type]) {\n\t\t\t\tall[type].splice(all[type].indexOf(handler) >>> 0, 1);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Invoke all handlers for the given type.\n\t\t * If present, `\"*\"` handlers are invoked after type-matched handlers.\n\t\t *\n\t\t * @param {String} type The event type to invoke\n\t\t * @param {Any} [evt] Any value (object is recommended and powerful), passed to each handler\n\t\t * @memberOf mitt\n\t\t */\n\t\temit: function emit(type , evt ) {\n\t\t\t(all[type] || []).slice().map(function (handler) { handler(evt); });\n\t\t\t(all['*'] || []).slice().map(function (handler) { handler(type, evt); });\n\t\t}\n\t};\n}\n\nexport default mitt;\n//# sourceMappingURL=mitt.es.js.map\n","export default pathAndSearch => {\n if (pathAndSearch === undefined) {\n return pathAndSearch\n }\n let [path, search = ``] = pathAndSearch.split(`?`)\n if (search) {\n search = `?` + search\n }\n\n if (path === `/`) {\n return `/` + search\n }\n if (path.charAt(path.length - 1) === `/`) {\n return path.slice(0, -1) + search\n }\n return path + search\n}\n","import { pick } from \"@gatsbyjs/reach-router\"\nimport stripPrefix from \"./strip-prefix\"\nimport normalizePagePath from \"./normalize-page-path\"\nimport { maybeGetBrowserRedirect } from \"./redirect-utils.js\"\n\nconst pathCache = new Map()\nlet matchPaths = []\n\nconst trimPathname = rawPathname => {\n let newRawPathname = rawPathname\n const queryIndex = rawPathname.indexOf(`?`)\n\n if (queryIndex !== -1) {\n const [path, qs] = rawPathname.split(`?`)\n newRawPathname = `${path}?${encodeURIComponent(qs)}`\n }\n\n const pathname = decodeURIComponent(newRawPathname)\n\n // Remove the pathPrefix from the pathname.\n const trimmedPathname = stripPrefix(\n pathname,\n decodeURIComponent(__BASE_PATH__)\n )\n // Remove any hashfragment\n .split(`#`)[0]\n\n return trimmedPathname\n}\n\nfunction absolutify(path) {\n // If it's already absolute, return as-is\n if (\n path.startsWith(`/`) ||\n path.startsWith(`https://`) ||\n path.startsWith(`http://`)\n ) {\n return path\n }\n // Calculate path relative to current location, adding a trailing slash to\n // match behavior of @reach/router\n return new URL(\n path,\n window.location.href + (window.location.href.endsWith(`/`) ? `` : `/`)\n ).pathname\n}\n\n/**\n * Set list of matchPaths\n *\n * @param {Array<{path: string, matchPath: string}>} value collection of matchPaths\n */\nexport const setMatchPaths = value => {\n matchPaths = value\n}\n\n/**\n * Return a matchpath url\n * if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n * `/foo?bar=far` => `/page1`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string|null}\n */\nexport const findMatchPath = rawPathname => {\n const trimmedPathname = cleanPath(rawPathname)\n\n const pickPaths = matchPaths.map(({ path, matchPath }) => {\n return {\n path: matchPath,\n originalPath: path,\n }\n })\n\n const path = pick(pickPaths, trimmedPathname)\n\n if (path) {\n return normalizePagePath(path.route.originalPath)\n }\n\n return null\n}\n\n/**\n * Return a matchpath params from reach/router rules\n * if `match-paths.json` contains `{ \":bar/*foo\" }`, and the path is /baz/zaz/zoo\n * then it returns\n * { bar: baz, foo: zaz/zoo }\n *\n * @param {string} rawPathname A raw pathname\n * @return {object}\n */\nexport const grabMatchParams = rawPathname => {\n const trimmedPathname = cleanPath(rawPathname)\n\n const pickPaths = matchPaths.map(({ path, matchPath }) => {\n return {\n path: matchPath,\n originalPath: path,\n }\n })\n\n const path = pick(pickPaths, trimmedPathname)\n\n if (path) {\n return path.params\n }\n\n return {}\n}\n\n// Given a raw URL path, returns the cleaned version of it (trim off\n// `#` and query params), or if it matches an entry in\n// `match-paths.json`, its matched path is returned\n//\n// E.g. `/foo?bar=far` => `/foo`\n//\n// Or if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n// `/foo?bar=far` => `/page1`\nexport const findPath = rawPathname => {\n const trimmedPathname = trimPathname(absolutify(rawPathname))\n if (pathCache.has(trimmedPathname)) {\n return pathCache.get(trimmedPathname)\n }\n\n const redirect = maybeGetBrowserRedirect(rawPathname)\n if (redirect) {\n return findPath(redirect.toPath)\n }\n\n let foundPath = findMatchPath(trimmedPathname)\n\n if (!foundPath) {\n foundPath = cleanPath(rawPathname)\n }\n\n pathCache.set(trimmedPathname, foundPath)\n\n return foundPath\n}\n\n/**\n * Clean a url and converts /index.html => /\n * E.g. `/foo?bar=far` => `/foo`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string}\n */\nexport const cleanPath = rawPathname => {\n const trimmedPathname = trimPathname(absolutify(rawPathname))\n\n let foundPath = trimmedPathname\n if (foundPath === `/index.html`) {\n foundPath = `/`\n }\n\n foundPath = normalizePagePath(foundPath)\n\n return foundPath\n}\n","import loader from \"./loader\"\n\nconst prefetchPathname = loader.enqueue\n\nfunction graphql() {\n throw new Error(\n `It appears like Gatsby is misconfigured. Gatsby related \\`graphql\\` calls ` +\n `are supposed to only be evaluated at compile time, and then compiled away. ` +\n `Unfortunately, something went wrong and the query was left in the compiled code.\\n\\n` +\n `Unless your site has a complex or custom babel/Gatsby configuration this is likely a bug in Gatsby.`\n )\n}\n\nexport { default as PageRenderer } from \"./public-page-renderer\"\nexport { useScrollRestoration } from \"gatsby-react-router-scroll\"\nexport {\n Link,\n withPrefix,\n withAssetPrefix,\n navigate,\n parsePath,\n} from \"gatsby-link\"\n\nexport { graphql, prefetchPathname }\nexport { StaticQuery, StaticQueryContext, useStaticQuery } from \"./static-query\"\nexport { Slice } from \"./slice\"\nexport * from \"gatsby-script\"\n","const support = function (feature) {\n if (typeof document === `undefined`) {\n return false\n }\n const fakeLink = document.createElement(`link`)\n try {\n if (fakeLink.relList && typeof fakeLink.relList.supports === `function`) {\n return fakeLink.relList.supports(feature)\n }\n } catch (err) {\n return false\n }\n return false\n}\n\nconst linkPrefetchStrategy = function (url, options) {\n return new Promise((resolve, reject) => {\n if (typeof document === `undefined`) {\n reject()\n return\n }\n\n const link = document.createElement(`link`)\n link.setAttribute(`rel`, `prefetch`)\n link.setAttribute(`href`, url)\n\n Object.keys(options).forEach(key => {\n link.setAttribute(key, options[key])\n })\n\n link.onload = resolve\n link.onerror = reject\n\n const parentElement =\n document.getElementsByTagName(`head`)[0] ||\n document.getElementsByName(`script`)[0].parentNode\n parentElement.appendChild(link)\n })\n}\n\nconst xhrPrefetchStrategy = function (url) {\n return new Promise((resolve, reject) => {\n const req = new XMLHttpRequest()\n req.open(`GET`, url, true)\n\n req.onload = () => {\n if (req.status === 200) {\n resolve()\n } else {\n reject()\n }\n }\n\n req.send(null)\n })\n}\n\nconst supportedPrefetchStrategy = support(`prefetch`)\n ? linkPrefetchStrategy\n : xhrPrefetchStrategy\n\nconst preFetched = {}\n\nconst prefetch = function (url, options) {\n return new Promise(resolve => {\n if (preFetched[url]) {\n resolve()\n return\n }\n\n supportedPrefetchStrategy(url, options)\n .then(() => {\n resolve()\n preFetched[url] = true\n })\n .catch(() => {}) // 404s are logged to the console anyway\n })\n}\n\nexport default prefetch\n","import { createFromReadableStream } from \"react-server-dom-webpack\"\nimport prefetchHelper from \"./prefetch\"\nimport emitter from \"./emitter\"\nimport { setMatchPaths, findPath, findMatchPath } from \"./find-path\"\n\n/**\n * Available resource loading statuses\n */\nexport const PageResourceStatus = {\n /**\n * At least one of critical resources failed to load\n */\n Error: `error`,\n /**\n * Resources loaded successfully\n */\n Success: `success`,\n}\n\nconst preferDefault = m => (m && m.default) || m\n\nconst stripSurroundingSlashes = s => {\n s = s[0] === `/` ? s.slice(1) : s\n s = s.endsWith(`/`) ? s.slice(0, -1) : s\n return s\n}\n\nconst createPageDataUrl = rawPath => {\n const [path, maybeSearch] = rawPath.split(`?`)\n const fixedPath = path === `/` ? `index` : stripSurroundingSlashes(path)\n return `${__PATH_PREFIX__}/page-data/${fixedPath}/page-data.json${\n maybeSearch ? `?${maybeSearch}` : ``\n }`\n}\n\n/**\n * Utility to check the path that goes into doFetch for e.g. potential malicious intentions.\n * It checks for \"//\" because with this you could do a fetch request to a different domain.\n */\nconst shouldAbortFetch = rawPath => rawPath.startsWith(`//`)\n\nfunction doFetch(url, method = `GET`) {\n return new Promise(resolve => {\n const req = new XMLHttpRequest()\n req.open(method, url, true)\n req.onreadystatechange = () => {\n if (req.readyState == 4) {\n resolve(req)\n }\n }\n req.send(null)\n })\n}\n\nconst doesConnectionSupportPrefetch = () => {\n if (\n `connection` in navigator &&\n typeof navigator.connection !== `undefined`\n ) {\n if ((navigator.connection.effectiveType || ``).includes(`2g`)) {\n return false\n }\n if (navigator.connection.saveData) {\n return false\n }\n }\n return true\n}\n\n// Regex that matches common search crawlers\nconst BOT_REGEX = /bot|crawler|spider|crawling/i\n\nconst toPageResources = (pageData, component = null, head) => {\n const page = {\n componentChunkName: pageData.componentChunkName,\n path: pageData.path,\n webpackCompilationHash: pageData.webpackCompilationHash,\n matchPath: pageData.matchPath,\n staticQueryHashes: pageData.staticQueryHashes,\n getServerDataError: pageData.getServerDataError,\n slicesMap: pageData.slicesMap ?? {},\n }\n\n return {\n component,\n head,\n json: pageData.result,\n page,\n }\n}\n\nfunction waitForResponse(response) {\n return new Promise(resolve => {\n try {\n const result = response.readRoot()\n resolve(result)\n } catch (err) {\n if (\n Object.hasOwnProperty.call(err, `_response`) &&\n Object.hasOwnProperty.call(err, `_status`)\n ) {\n setTimeout(() => {\n waitForResponse(response).then(resolve)\n }, 200)\n } else {\n throw err\n }\n }\n })\n}\n\nexport class BaseLoader {\n constructor(loadComponent, matchPaths) {\n // Map of pagePath -> Page. Where Page is an object with: {\n // status: PageResourceStatus.Success || PageResourceStatus.Error,\n // payload: PageResources, // undefined if PageResourceStatus.Error\n // }\n // PageResources is {\n // component,\n // json: pageData.result,\n // page: {\n // componentChunkName,\n // path,\n // webpackCompilationHash,\n // staticQueryHashes\n // },\n // staticQueryResults\n // }\n this.pageDb = new Map()\n this.inFlightDb = new Map()\n this.staticQueryDb = {}\n this.pageDataDb = new Map()\n this.partialHydrationDb = new Map()\n this.slicesDataDb = new Map()\n this.sliceInflightDb = new Map()\n this.slicesDb = new Map()\n this.isPrefetchQueueRunning = false\n this.prefetchQueued = []\n this.prefetchTriggered = new Set()\n this.prefetchCompleted = new Set()\n this.loadComponent = loadComponent\n setMatchPaths(matchPaths)\n }\n\n inFlightNetworkRequests = new Map()\n\n memoizedGet(url) {\n let inFlightPromise = this.inFlightNetworkRequests.get(url)\n\n if (!inFlightPromise) {\n inFlightPromise = doFetch(url, `GET`)\n this.inFlightNetworkRequests.set(url, inFlightPromise)\n }\n\n // Prefer duplication with then + catch over .finally to prevent problems in ie11 + firefox\n return inFlightPromise\n .then(response => {\n this.inFlightNetworkRequests.delete(url)\n return response\n })\n .catch(err => {\n this.inFlightNetworkRequests.delete(url)\n throw err\n })\n }\n\n setApiRunner(apiRunner) {\n this.apiRunner = apiRunner\n this.prefetchDisabled = apiRunner(`disableCorePrefetching`).some(a => a)\n }\n\n fetchPageDataJson(loadObj) {\n const { pagePath, retries = 0 } = loadObj\n const url = createPageDataUrl(pagePath)\n return this.memoizedGet(url).then(req => {\n const { status, responseText } = req\n\n // Handle 200\n if (status === 200) {\n try {\n const jsonPayload = JSON.parse(responseText)\n if (jsonPayload.path === undefined) {\n throw new Error(`not a valid pageData response`)\n }\n\n const maybeSearch = pagePath.split(`?`)[1]\n if (maybeSearch && !jsonPayload.path.includes(maybeSearch)) {\n jsonPayload.path += `?${maybeSearch}`\n }\n\n return Object.assign(loadObj, {\n status: PageResourceStatus.Success,\n payload: jsonPayload,\n })\n } catch (err) {\n // continue regardless of error\n }\n }\n\n // Handle 404\n if (status === 404 || status === 200) {\n // If the request was for a 404/500 page and it doesn't exist, we're done\n if (pagePath === `/404.html` || pagePath === `/500.html`) {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n }\n\n // Need some code here to cache the 404 request. In case\n // multiple loadPageDataJsons result in 404s\n return this.fetchPageDataJson(\n Object.assign(loadObj, { pagePath: `/404.html`, notFound: true })\n )\n }\n\n // handle 500 response (Unrecoverable)\n if (status === 500) {\n return this.fetchPageDataJson(\n Object.assign(loadObj, {\n pagePath: `/500.html`,\n internalServerError: true,\n })\n )\n }\n\n // Handle everything else, including status === 0, and 503s. Should retry\n if (retries < 3) {\n return this.fetchPageDataJson(\n Object.assign(loadObj, { retries: retries + 1 })\n )\n }\n\n // Retried 3 times already, result is an error.\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n })\n }\n\n fetchPartialHydrationJson(loadObj) {\n const { pagePath, retries = 0 } = loadObj\n const url = createPageDataUrl(pagePath).replace(`.json`, `-rsc.json`)\n return this.memoizedGet(url).then(req => {\n const { status, responseText } = req\n\n // Handle 200\n if (status === 200) {\n try {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Success,\n payload: responseText,\n })\n } catch (err) {\n // continue regardless of error\n }\n }\n\n // Handle 404\n if (status === 404 || status === 200) {\n // If the request was for a 404/500 page and it doesn't exist, we're done\n if (pagePath === `/404.html` || pagePath === `/500.html`) {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n }\n\n // Need some code here to cache the 404 request. In case\n // multiple loadPageDataJsons result in 404s\n return this.fetchPartialHydrationJson(\n Object.assign(loadObj, { pagePath: `/404.html`, notFound: true })\n )\n }\n\n // handle 500 response (Unrecoverable)\n if (status === 500) {\n return this.fetchPartialHydrationJson(\n Object.assign(loadObj, {\n pagePath: `/500.html`,\n internalServerError: true,\n })\n )\n }\n\n // Handle everything else, including status === 0, and 503s. Should retry\n if (retries < 3) {\n return this.fetchPartialHydrationJson(\n Object.assign(loadObj, { retries: retries + 1 })\n )\n }\n\n // Retried 3 times already, result is an error.\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n })\n }\n\n loadPageDataJson(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDataDb.has(pagePath)) {\n const pageData = this.pageDataDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !pageData.stale) {\n return Promise.resolve(pageData)\n }\n }\n\n return this.fetchPageDataJson({ pagePath }).then(pageData => {\n this.pageDataDb.set(pagePath, pageData)\n\n return pageData\n })\n }\n\n loadPartialHydrationJson(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.partialHydrationDb.has(pagePath)) {\n const pageData = this.partialHydrationDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !pageData.stale) {\n return Promise.resolve(pageData)\n }\n }\n\n return this.fetchPartialHydrationJson({ pagePath }).then(pageData => {\n this.partialHydrationDb.set(pagePath, pageData)\n\n return pageData\n })\n }\n\n loadSliceDataJson(sliceName) {\n if (this.slicesDataDb.has(sliceName)) {\n const jsonPayload = this.slicesDataDb.get(sliceName)\n return Promise.resolve({ sliceName, jsonPayload })\n }\n\n const url = `${__PATH_PREFIX__}/slice-data/${sliceName}.json`\n return doFetch(url, `GET`).then(res => {\n const jsonPayload = JSON.parse(res.responseText)\n\n this.slicesDataDb.set(sliceName, jsonPayload)\n return { sliceName, jsonPayload }\n })\n }\n\n findMatchPath(rawPath) {\n return findMatchPath(rawPath)\n }\n\n // TODO check all uses of this and whether they use undefined for page resources not exist\n loadPage(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDb.has(pagePath)) {\n const page = this.pageDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !page.payload.stale) {\n if (page.error) {\n return Promise.resolve({\n error: page.error,\n status: page.status,\n })\n }\n\n return Promise.resolve(page.payload)\n }\n }\n\n if (this.inFlightDb.has(pagePath)) {\n return this.inFlightDb.get(pagePath)\n }\n\n const loadDataPromises = [\n this.loadAppData(),\n this.loadPageDataJson(pagePath),\n ]\n\n if (global.hasPartialHydration) {\n loadDataPromises.push(this.loadPartialHydrationJson(pagePath))\n }\n\n const inFlightPromise = Promise.all(loadDataPromises).then(allData => {\n const [appDataResponse, pageDataResponse, rscDataResponse] = allData\n\n if (\n pageDataResponse.status === PageResourceStatus.Error ||\n rscDataResponse?.status === PageResourceStatus.Error\n ) {\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n let pageData = pageDataResponse.payload\n\n const {\n componentChunkName,\n staticQueryHashes: pageStaticQueryHashes = [],\n slicesMap = {},\n } = pageData\n\n const finalResult = {}\n\n const dedupedSliceNames = Array.from(new Set(Object.values(slicesMap)))\n\n const loadSlice = slice => {\n if (this.slicesDb.has(slice.name)) {\n return this.slicesDb.get(slice.name)\n } else if (this.sliceInflightDb.has(slice.name)) {\n return this.sliceInflightDb.get(slice.name)\n }\n\n const inFlight = this.loadComponent(slice.componentChunkName).then(\n component => {\n return {\n component: preferDefault(component),\n sliceContext: slice.result.sliceContext,\n data: slice.result.data,\n }\n }\n )\n\n this.sliceInflightDb.set(slice.name, inFlight)\n inFlight.then(results => {\n this.slicesDb.set(slice.name, results)\n this.sliceInflightDb.delete(slice.name)\n })\n\n return inFlight\n }\n\n return Promise.all(\n dedupedSliceNames.map(sliceName => this.loadSliceDataJson(sliceName))\n ).then(slicesData => {\n const slices = []\n const dedupedStaticQueryHashes = [...pageStaticQueryHashes]\n\n for (const { jsonPayload, sliceName } of Object.values(slicesData)) {\n slices.push({ name: sliceName, ...jsonPayload })\n for (const staticQueryHash of jsonPayload.staticQueryHashes) {\n if (!dedupedStaticQueryHashes.includes(staticQueryHash)) {\n dedupedStaticQueryHashes.push(staticQueryHash)\n }\n }\n }\n\n const loadChunkPromises = [\n Promise.all(slices.map(loadSlice)),\n this.loadComponent(componentChunkName, `head`),\n ]\n\n if (!global.hasPartialHydration) {\n loadChunkPromises.push(this.loadComponent(componentChunkName))\n }\n\n // In develop we have separate chunks for template and Head components\n // to enable HMR (fast refresh requires single exports).\n // In production we have shared chunk with both exports. Double loadComponent here\n // will be deduped by webpack runtime resulting in single request and single module\n // being loaded for both `component` and `head`.\n // get list of components to get\n const componentChunkPromises = Promise.all(loadChunkPromises).then(\n components => {\n const [sliceComponents, headComponent, pageComponent] = components\n\n finalResult.createdAt = new Date()\n\n for (const sliceComponent of sliceComponents) {\n if (!sliceComponent || sliceComponent instanceof Error) {\n finalResult.status = PageResourceStatus.Error\n finalResult.error = sliceComponent\n }\n }\n\n if (\n !global.hasPartialHydration &&\n (!pageComponent || pageComponent instanceof Error)\n ) {\n finalResult.status = PageResourceStatus.Error\n finalResult.error = pageComponent\n }\n\n let pageResources\n\n if (finalResult.status !== PageResourceStatus.Error) {\n finalResult.status = PageResourceStatus.Success\n if (\n pageDataResponse.notFound === true ||\n rscDataResponse?.notFound === true\n ) {\n finalResult.notFound = true\n }\n pageData = Object.assign(pageData, {\n webpackCompilationHash: appDataResponse\n ? appDataResponse.webpackCompilationHash\n : ``,\n })\n\n if (typeof rscDataResponse?.payload === `string`) {\n pageResources = toPageResources(pageData, null, headComponent)\n\n pageResources.partialHydration = rscDataResponse.payload\n\n const readableStream = new ReadableStream({\n start(controller) {\n const te = new TextEncoder()\n controller.enqueue(te.encode(rscDataResponse.payload))\n },\n pull(controller) {\n // close on next read when queue is empty\n controller.close()\n },\n cancel() {},\n })\n\n return waitForResponse(\n createFromReadableStream(readableStream)\n ).then(result => {\n pageResources.partialHydration = result\n\n return pageResources\n })\n } else {\n pageResources = toPageResources(\n pageData,\n pageComponent,\n headComponent\n )\n }\n }\n\n // undefined if final result is an error\n return pageResources\n }\n )\n\n // get list of static queries to get\n const staticQueryBatchPromise = Promise.all(\n dedupedStaticQueryHashes.map(staticQueryHash => {\n // Check for cache in case this static query result has already been loaded\n if (this.staticQueryDb[staticQueryHash]) {\n const jsonPayload = this.staticQueryDb[staticQueryHash]\n return { staticQueryHash, jsonPayload }\n }\n\n return this.memoizedGet(\n `${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json`\n )\n .then(req => {\n const jsonPayload = JSON.parse(req.responseText)\n return { staticQueryHash, jsonPayload }\n })\n .catch(() => {\n throw new Error(\n `We couldn't load \"${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json\"`\n )\n })\n })\n ).then(staticQueryResults => {\n const staticQueryResultsMap = {}\n\n staticQueryResults.forEach(({ staticQueryHash, jsonPayload }) => {\n staticQueryResultsMap[staticQueryHash] = jsonPayload\n this.staticQueryDb[staticQueryHash] = jsonPayload\n })\n\n return staticQueryResultsMap\n })\n\n return (\n Promise.all([componentChunkPromises, staticQueryBatchPromise])\n .then(([pageResources, staticQueryResults]) => {\n let payload\n if (pageResources) {\n payload = { ...pageResources, staticQueryResults }\n finalResult.payload = payload\n emitter.emit(`onPostLoadPageResources`, {\n page: payload,\n pageResources: payload,\n })\n }\n\n this.pageDb.set(pagePath, finalResult)\n\n if (finalResult.error) {\n return {\n error: finalResult.error,\n status: finalResult.status,\n }\n }\n\n return payload\n })\n // when static-query fail to load we throw a better error\n .catch(err => {\n return {\n error: err,\n status: PageResourceStatus.Error,\n }\n })\n )\n })\n })\n\n inFlightPromise\n .then(() => {\n this.inFlightDb.delete(pagePath)\n })\n .catch(error => {\n this.inFlightDb.delete(pagePath)\n throw error\n })\n\n this.inFlightDb.set(pagePath, inFlightPromise)\n\n return inFlightPromise\n }\n\n // returns undefined if the page does not exists in cache\n loadPageSync(rawPath, options = {}) {\n const pagePath = findPath(rawPath)\n if (this.pageDb.has(pagePath)) {\n const pageData = this.pageDb.get(pagePath)\n\n if (pageData.payload) {\n return pageData.payload\n }\n\n if (options?.withErrorDetails) {\n return {\n error: pageData.error,\n status: pageData.status,\n }\n }\n }\n return undefined\n }\n\n shouldPrefetch(pagePath) {\n // Skip prefetching if we know user is on slow or constrained connection\n if (!doesConnectionSupportPrefetch()) {\n return false\n }\n\n // Don't prefetch if this is a crawler bot\n if (navigator.userAgent && BOT_REGEX.test(navigator.userAgent)) {\n return false\n }\n\n // Check if the page exists.\n if (this.pageDb.has(pagePath)) {\n return false\n }\n\n return true\n }\n\n prefetch(pagePath) {\n if (!this.shouldPrefetch(pagePath)) {\n return {\n then: resolve => resolve(false),\n abort: () => {},\n }\n }\n if (this.prefetchTriggered.has(pagePath)) {\n return {\n then: resolve => resolve(true),\n abort: () => {},\n }\n }\n\n const defer = {\n resolve: null,\n reject: null,\n promise: null,\n }\n defer.promise = new Promise((resolve, reject) => {\n defer.resolve = resolve\n defer.reject = reject\n })\n this.prefetchQueued.push([pagePath, defer])\n const abortC = new AbortController()\n abortC.signal.addEventListener(`abort`, () => {\n const index = this.prefetchQueued.findIndex(([p]) => p === pagePath)\n // remove from the queue\n if (index !== -1) {\n this.prefetchQueued.splice(index, 1)\n }\n })\n\n if (!this.isPrefetchQueueRunning) {\n this.isPrefetchQueueRunning = true\n setTimeout(() => {\n this._processNextPrefetchBatch()\n }, 3000)\n }\n\n return {\n then: (resolve, reject) => defer.promise.then(resolve, reject),\n abort: abortC.abort.bind(abortC),\n }\n }\n\n _processNextPrefetchBatch() {\n const idleCallback = window.requestIdleCallback || (cb => setTimeout(cb, 0))\n\n idleCallback(() => {\n const toPrefetch = this.prefetchQueued.splice(0, 4)\n const prefetches = Promise.all(\n toPrefetch.map(([pagePath, dPromise]) => {\n // Tell plugins with custom prefetching logic that they should start\n // prefetching this path.\n if (!this.prefetchTriggered.has(pagePath)) {\n this.apiRunner(`onPrefetchPathname`, { pathname: pagePath })\n this.prefetchTriggered.add(pagePath)\n }\n\n // If a plugin has disabled core prefetching, stop now.\n if (this.prefetchDisabled) {\n return dPromise.resolve(false)\n }\n\n return this.doPrefetch(findPath(pagePath)).then(() => {\n if (!this.prefetchCompleted.has(pagePath)) {\n this.apiRunner(`onPostPrefetchPathname`, { pathname: pagePath })\n this.prefetchCompleted.add(pagePath)\n }\n\n dPromise.resolve(true)\n })\n })\n )\n\n if (this.prefetchQueued.length) {\n prefetches.then(() => {\n setTimeout(() => {\n this._processNextPrefetchBatch()\n }, 3000)\n })\n } else {\n this.isPrefetchQueueRunning = false\n }\n })\n }\n\n doPrefetch(pagePath) {\n const pageDataUrl = createPageDataUrl(pagePath)\n\n if (global.hasPartialHydration) {\n return Promise.all([\n prefetchHelper(pageDataUrl, {\n crossOrigin: `anonymous`,\n as: `fetch`,\n }).then(() =>\n // This was just prefetched, so will return a response from\n // the cache instead of making another request to the server\n this.loadPageDataJson(pagePath)\n ),\n prefetchHelper(pageDataUrl.replace(`.json`, `-rsc.json`), {\n crossOrigin: `anonymous`,\n as: `fetch`,\n }).then(() =>\n // This was just prefetched, so will return a response from\n // the cache instead of making another request to the server\n this.loadPartialHydrationJson(pagePath)\n ),\n ])\n } else {\n return prefetchHelper(pageDataUrl, {\n crossOrigin: `anonymous`,\n as: `fetch`,\n }).then(() =>\n // This was just prefetched, so will return a response from\n // the cache instead of making another request to the server\n this.loadPageDataJson(pagePath)\n )\n }\n }\n\n hovering(rawPath) {\n this.loadPage(rawPath)\n }\n\n getResourceURLsForPathname(rawPath) {\n const pagePath = findPath(rawPath)\n const page = this.pageDataDb.get(pagePath)\n if (page) {\n const pageResources = toPageResources(page.payload)\n\n return [\n ...createComponentUrls(pageResources.page.componentChunkName),\n createPageDataUrl(pagePath),\n ]\n } else {\n return null\n }\n }\n\n isPageNotFound(rawPath) {\n const pagePath = findPath(rawPath)\n const page = this.pageDb.get(pagePath)\n return !page || page.notFound\n }\n\n loadAppData(retries = 0) {\n return this.memoizedGet(`${__PATH_PREFIX__}/page-data/app-data.json`).then(\n req => {\n const { status, responseText } = req\n\n let appData\n\n if (status !== 200 && retries < 3) {\n // Retry 3 times incase of non-200 responses\n return this.loadAppData(retries + 1)\n }\n\n // Handle 200\n if (status === 200) {\n try {\n const jsonPayload = JSON.parse(responseText)\n if (jsonPayload.webpackCompilationHash === undefined) {\n throw new Error(`not a valid app-data response`)\n }\n\n appData = jsonPayload\n } catch (err) {\n // continue regardless of error\n }\n }\n\n return appData\n }\n )\n }\n}\n\nconst createComponentUrls = componentChunkName =>\n (window.___chunkMapping[componentChunkName] || []).map(\n chunk => __PATH_PREFIX__ + chunk\n )\n\nexport class ProdLoader extends BaseLoader {\n constructor(asyncRequires, matchPaths, pageData) {\n const loadComponent = (chunkName, exportType = `components`) => {\n if (!global.hasPartialHydration) {\n exportType = `components`\n }\n\n if (!asyncRequires[exportType][chunkName]) {\n throw new Error(\n `We couldn't find the correct component chunk with the name \"${chunkName}\"`\n )\n }\n\n return (\n asyncRequires[exportType][chunkName]()\n // loader will handle the case when component is error\n .catch(err => err)\n )\n }\n\n super(loadComponent, matchPaths)\n\n if (pageData) {\n this.pageDataDb.set(findPath(pageData.path), {\n pagePath: pageData.path,\n payload: pageData,\n status: `success`,\n })\n }\n }\n\n doPrefetch(pagePath) {\n return super.doPrefetch(pagePath).then(result => {\n if (result.status !== PageResourceStatus.Success) {\n return Promise.resolve()\n }\n const pageData = result.payload\n const chunkName = pageData.componentChunkName\n const componentUrls = createComponentUrls(chunkName)\n return Promise.all(componentUrls.map(prefetchHelper)).then(() => pageData)\n })\n }\n\n loadPageDataJson(rawPath) {\n return super.loadPageDataJson(rawPath).then(data => {\n if (data.notFound) {\n if (shouldAbortFetch(rawPath)) {\n return data\n }\n // check if html file exist using HEAD request:\n // if it does we should navigate to it instead of showing 404\n return doFetch(rawPath, `HEAD`).then(req => {\n if (req.status === 200) {\n // page (.html file) actually exist (or we asked for 404 )\n // returning page resources status as errored to trigger\n // regular browser navigation to given page\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n // if HEAD request wasn't 200, return notFound result\n // and show 404 page\n return data\n })\n }\n return data\n })\n }\n\n loadPartialHydrationJson(rawPath) {\n return super.loadPartialHydrationJson(rawPath).then(data => {\n if (data.notFound) {\n if (shouldAbortFetch(rawPath)) {\n return data\n }\n // check if html file exist using HEAD request:\n // if it does we should navigate to it instead of showing 404\n return doFetch(rawPath, `HEAD`).then(req => {\n if (req.status === 200) {\n // page (.html file) actually exist (or we asked for 404 )\n // returning page resources status as errored to trigger\n // regular browser navigation to given page\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n // if HEAD request wasn't 200, return notFound result\n // and show 404 page\n return data\n })\n }\n return data\n })\n }\n}\n\nlet instance\n\nexport const setLoader = _loader => {\n instance = _loader\n}\n\nexport const publicLoader = {\n enqueue: rawPath => instance.prefetch(rawPath),\n\n // Real methods\n getResourceURLsForPathname: rawPath =>\n instance.getResourceURLsForPathname(rawPath),\n loadPage: rawPath => instance.loadPage(rawPath),\n // TODO add deprecation to v4 so people use withErrorDetails and then we can remove in v5 and change default behaviour\n loadPageSync: (rawPath, options = {}) =>\n instance.loadPageSync(rawPath, options),\n prefetch: rawPath => instance.prefetch(rawPath),\n isPageNotFound: rawPath => instance.isPageNotFound(rawPath),\n hovering: rawPath => instance.hovering(rawPath),\n loadAppData: () => instance.loadAppData(),\n}\n\nexport default publicLoader\n\nexport function getStaticQueryResults() {\n if (instance) {\n return instance.staticQueryDb\n } else {\n return {}\n }\n}\n\nexport function getSliceResults() {\n if (instance) {\n return instance.slicesDb\n } else {\n return {}\n }\n}\n","import { useEffect } from \"react\"\n\n/*\n * Calls callback in an effect and renders children\n */\nexport function FireCallbackInEffect({ children, callback }) {\n useEffect(() => {\n callback()\n })\n\n return children\n}\n","export const VALID_NODE_NAMES = [\n `link`,\n `meta`,\n `style`,\n `title`,\n `base`,\n `noscript`,\n `script`,\n `html`,\n `body`,\n]\n","import { VALID_NODE_NAMES } from \"./constants\"\n\n/**\n * Filter the props coming from a page down to just the ones that are relevant for head.\n * This e.g. filters out properties that are undefined during SSR.\n */\nexport function filterHeadProps(input) {\n return {\n location: {\n pathname: input.location.pathname,\n },\n params: input.params,\n data: input.data || {},\n serverData: input.serverData,\n pageContext: input.pageContext,\n }\n}\n\n/**\n * Throw error if Head export is not a valid function\n */\nexport function headExportValidator(head) {\n if (typeof head !== `function`)\n throw new Error(\n `Expected \"Head\" export to be a function got \"${typeof head}\".`\n )\n}\n\n/**\n * Warn once for same messsage\n */\nlet warnOnce = _ => {}\nif (process.env.NODE_ENV !== `production`) {\n const warnings = new Set()\n warnOnce = msg => {\n if (!warnings.has(msg)) {\n console.warn(msg)\n }\n warnings.add(msg)\n }\n}\n\n/**\n * Warn for invalid tags in Head which may have been directly added or introduced by `wrapRootElement`\n * @param {string} tagName\n */\nexport function warnForInvalidTag(tagName) {\n if (process.env.NODE_ENV !== `production`) {\n const warning = createWarningForInvalidTag(tagName)\n warnOnce(warning)\n }\n}\n\nfunction createWarningForInvalidTag(tagName) {\n return `<${tagName}> is not a valid head element. Please use one of the following: ${VALID_NODE_NAMES.join(\n `, `\n )}.\\n\\nAlso make sure that wrapRootElement in gatsby-ssr/gatsby-browser doesn't contain UI elements: https://gatsby.dev/invalid-head-elements`\n}\n\n/**\n * When a `nonce` is present on an element, browsers such as Chrome and Firefox strip it out of the\n * actual HTML attributes for security reasons *when the element is added to the document*. Thus,\n * given two equivalent elements that have nonces, `Element,isEqualNode()` will return false if one\n * of those elements gets added to the document. Although the `element.nonce` property will be the\n * same for both elements, the one that was added to the document will return an empty string for\n * its nonce HTML attribute value.\n *\n * This custom `isEqualNode()` function therefore removes the nonce value from the `newTag` before\n * comparing it to `oldTag`, restoring it afterwards.\n *\n * For more information, see:\n * https://bugs.chromium.org/p/chromium/issues/detail?id=1211471#c12\n */\nexport function isEqualNode(oldTag, newTag) {\n if (oldTag instanceof HTMLElement && newTag instanceof HTMLElement) {\n const nonce = newTag.getAttribute(`nonce`)\n // Only strip the nonce if `oldTag` has had it stripped. An element's nonce attribute will not\n // be stripped if there is no content security policy response header that includes a nonce.\n if (nonce && !oldTag.getAttribute(`nonce`)) {\n const cloneTag = newTag.cloneNode(true)\n cloneTag.setAttribute(`nonce`, ``)\n cloneTag.nonce = nonce\n return nonce === oldTag.nonce && oldTag.isEqualNode(cloneTag)\n }\n }\n\n return oldTag.isEqualNode(newTag)\n}\n\nexport function diffNodes({ oldNodes, newNodes, onStale, onNew }) {\n for (const existingHeadElement of oldNodes) {\n const indexInNewNodes = newNodes.findIndex(e =>\n isEqualNode(e, existingHeadElement)\n )\n\n if (indexInNewNodes === -1) {\n onStale(existingHeadElement)\n } else {\n // this node is re-created as-is, so we keep old node, and remove it from list of new nodes (as we handled it already here)\n newNodes.splice(indexInNewNodes, 1)\n }\n }\n\n // remaing new nodes didn't have matching old node, so need to be added\n for (const newNode of newNodes) {\n onNew(newNode)\n }\n}\n\nexport function getValidHeadNodesAndAttributes(\n rootNode,\n htmlAndBodyAttributes = {\n html: {},\n body: {},\n }\n) {\n const seenIds = new Map()\n const validHeadNodes = []\n\n // Filter out non-element nodes before looping since we don't care about them\n for (const node of rootNode.childNodes) {\n const nodeName = node.nodeName.toLowerCase()\n const id = node.attributes?.id?.value\n\n if (!isElementType(node)) continue\n\n if (isValidNodeName(nodeName)) {\n // and tags are treated differently, in that we don't render them, we only extract the attributes and apply them separetely\n if (nodeName === `html` || nodeName === `body`) {\n for (const attribute of node.attributes) {\n const isStyleAttribute = attribute.name === `style`\n\n // Merge attributes for same nodeName from previous loop iteration\n htmlAndBodyAttributes[nodeName] = {\n ...htmlAndBodyAttributes[nodeName],\n }\n\n if (!isStyleAttribute) {\n htmlAndBodyAttributes[nodeName][attribute.name] = attribute.value\n }\n\n // If there is already a style attribute, we need to merge them as otherwise the last one will \"win\"\n if (isStyleAttribute) {\n htmlAndBodyAttributes[nodeName].style = `${\n htmlAndBodyAttributes[nodeName]?.style\n ? htmlAndBodyAttributes[nodeName].style\n : ``\n }${attribute.value} `\n }\n }\n } else {\n let clonedNode = node.cloneNode(true)\n clonedNode.setAttribute(`data-gatsby-head`, true)\n\n // // This is hack to make script tags work\n if (clonedNode.nodeName.toLowerCase() === `script`) {\n clonedNode = massageScript(clonedNode)\n }\n // Duplicate ids are not allowed in the head, so we need to dedupe them\n if (id) {\n if (!seenIds.has(id)) {\n validHeadNodes.push(clonedNode)\n seenIds.set(id, validHeadNodes.length - 1)\n } else {\n const indexOfPreviouslyInsertedNode = seenIds.get(id)\n validHeadNodes[\n indexOfPreviouslyInsertedNode\n ].parentNode?.removeChild(\n validHeadNodes[indexOfPreviouslyInsertedNode]\n )\n validHeadNodes[indexOfPreviouslyInsertedNode] = clonedNode\n }\n } else {\n validHeadNodes.push(clonedNode)\n }\n }\n } else {\n warnForInvalidTag(nodeName)\n }\n\n if (node.childNodes.length) {\n validHeadNodes.push(\n ...getValidHeadNodesAndAttributes(node, htmlAndBodyAttributes)\n .validHeadNodes\n )\n }\n }\n\n return { validHeadNodes, htmlAndBodyAttributes }\n}\n\nfunction massageScript(node) {\n const script = document.createElement(`script`)\n for (const attr of node.attributes) {\n script.setAttribute(attr.name, attr.value)\n }\n script.innerHTML = node.innerHTML\n\n return script\n}\n\nexport function isValidNodeName(nodeName) {\n return VALID_NODE_NAMES.includes(nodeName)\n}\n/*\n * For Head, we only care about element nodes(type = 1), so this util is used to skip over non-element nodes\n * For Node type, see https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\n */\nexport function isElementType(node) {\n return node.nodeType === 1\n}\n\n/**\n * Removes all the head elements that were added by `Head`\n */\nexport function removePrevHeadElements() {\n const prevHeadNodes = document.querySelectorAll(`[data-gatsby-head]`)\n for (const node of prevHeadNodes) {\n node.parentNode.removeChild(node)\n }\n}\n\nexport function applyHtmlAndBodyAttributes(htmlAndBodyAttributes) {\n if (!htmlAndBodyAttributes) return\n\n const { html, body } = htmlAndBodyAttributes\n\n const htmlElement = document.querySelector(`html`)\n if (htmlElement) {\n Object.entries(html).forEach(([attributeName, attributeValue]) => {\n htmlElement.setAttribute(attributeName, attributeValue)\n })\n }\n\n const bodyElement = document.querySelector(`body`)\n if (bodyElement) {\n Object.entries(body).forEach(([attributeName, attributeValue]) => {\n bodyElement.setAttribute(attributeName, attributeValue)\n })\n }\n}\n\nexport function removeHtmlAndBodyAttributes(htmlAndBodyattributeList) {\n if (!htmlAndBodyattributeList) return\n\n const { html, body } = htmlAndBodyattributeList\n\n if (html) {\n const htmlElement = document.querySelector(`html`)\n html.forEach(attributeName => {\n if (htmlElement) {\n htmlElement.removeAttribute(attributeName)\n }\n })\n }\n\n if (body) {\n const bodyElement = document.querySelector(`body`)\n body.forEach(attributeName => {\n if (bodyElement) {\n bodyElement.removeAttribute(attributeName)\n }\n })\n }\n}\n","import React from \"react\"\nimport { useEffect } from \"react\"\nimport { StaticQueryContext } from \"gatsby\"\nimport { LocationProvider } from \"@gatsbyjs/reach-router\"\nimport { reactDOMUtils } from \"../react-dom-utils\"\nimport { FireCallbackInEffect } from \"./components/fire-callback-in-effect\"\nimport {\n headExportValidator,\n filterHeadProps,\n diffNodes,\n getValidHeadNodesAndAttributes,\n removePrevHeadElements,\n applyHtmlAndBodyAttributes,\n removeHtmlAndBodyAttributes,\n} from \"./utils\"\nimport { apiRunner } from \"../api-runner-browser\"\n\nconst hiddenRoot = document.createElement(`div`)\nconst keysOfHtmlAndBodyAttributes = {\n html: [],\n body: [],\n}\n\nconst onHeadRendered = () => {\n const { validHeadNodes, htmlAndBodyAttributes } =\n getValidHeadNodesAndAttributes(hiddenRoot)\n\n keysOfHtmlAndBodyAttributes.html = Object.keys(htmlAndBodyAttributes.html)\n keysOfHtmlAndBodyAttributes.body = Object.keys(htmlAndBodyAttributes.body)\n\n applyHtmlAndBodyAttributes(htmlAndBodyAttributes)\n\n /**\n * The rest of the code block below is a diffing mechanism to ensure that\n * the head elements aren't duplicted on every re-render.\n */\n const existingHeadElements = document.querySelectorAll(`[data-gatsby-head]`)\n\n if (existingHeadElements.length === 0) {\n document.head.append(...validHeadNodes)\n return\n }\n\n const newHeadNodes = []\n diffNodes({\n oldNodes: existingHeadElements,\n newNodes: validHeadNodes,\n onStale: node => node.parentNode.removeChild(node),\n onNew: node => newHeadNodes.push(node),\n })\n\n document.head.append(...newHeadNodes)\n}\n\nif (process.env.BUILD_STAGE === `develop`) {\n // sigh ... and elements are not valid descedents of
(our hidden element)\n // react-dom in dev mode will warn about this. There doesn't seem to be a way to render arbitrary\n // user Head without hitting this issue (our hidden element could be just \"new Document()\", but\n // this can only have 1 child, and we don't control what is being rendered so that's not an option)\n // instead we continue to render to
, and just silence warnings for and elements\n // https://github.com/facebook/react/blob/e2424f33b3ad727321fc12e75c5e94838e84c2b5/packages/react-dom-bindings/src/client/validateDOMNesting.js#L498-L520\n const originalConsoleError = console.error.bind(console)\n console.error = (...args) => {\n if (\n Array.isArray(args) &&\n args.length >= 2 &&\n args[0]?.includes?.(`validateDOMNesting(...): %s cannot appear as`) &&\n (args[1] === `` || args[1] === ``)\n ) {\n return undefined\n }\n return originalConsoleError(...args)\n }\n\n /* We set up observer to be able to regenerate after react-refresh\n updates our hidden element.\n */\n const observer = new MutationObserver(onHeadRendered)\n observer.observe(hiddenRoot, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true,\n })\n}\n\nexport function headHandlerForBrowser({\n pageComponent,\n staticQueryResults,\n pageComponentProps,\n}) {\n useEffect(() => {\n if (pageComponent?.Head) {\n headExportValidator(pageComponent.Head)\n\n const { render } = reactDOMUtils()\n\n const HeadElement = (\n \n )\n\n const WrapHeadElement = apiRunner(\n `wrapRootElement`,\n { element: HeadElement },\n HeadElement,\n ({ result }) => {\n return { element: result }\n }\n ).pop()\n\n render(\n // just a hack to call the callback after react has done first render\n // Note: In dev, we call onHeadRendered twice( in FireCallbackInEffect and after mutualution observer dectects initail render into hiddenRoot) this is for hot reloading\n // In Prod we only call onHeadRendered in FireCallbackInEffect to render to head\n \n \n {WrapHeadElement}\n \n ,\n hiddenRoot\n )\n }\n\n return () => {\n removePrevHeadElements()\n removeHtmlAndBodyAttributes(keysOfHtmlAndBodyAttributes)\n }\n })\n}\n","import React, { Suspense, createElement } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport { grabMatchParams } from \"./find-path\"\nimport { headHandlerForBrowser } from \"./head/head-export-handler-for-browser\"\n\n// Renders page\nfunction PageRenderer(props) {\n const pageComponentProps = {\n ...props,\n params: {\n ...grabMatchParams(props.location.pathname),\n ...props.pageResources.json.pageContext.__params,\n },\n }\n\n const preferDefault = m => (m && m.default) || m\n\n let pageElement\n if (props.pageResources.partialHydration) {\n pageElement = props.pageResources.partialHydration\n } else {\n pageElement = createElement(preferDefault(props.pageResources.component), {\n ...pageComponentProps,\n key: props.path || props.pageResources.page.path,\n })\n }\n\n const pageComponent = props.pageResources.head\n\n headHandlerForBrowser({\n pageComponent,\n staticQueryResults: props.pageResources.staticQueryResults,\n pageComponentProps,\n })\n\n const wrappedPage = apiRunner(\n `wrapPageElement`,\n {\n element: pageElement,\n props: pageComponentProps,\n },\n pageElement,\n ({ result }) => {\n return { element: result, props: pageComponentProps }\n }\n ).pop()\n\n return wrappedPage\n}\n\nPageRenderer.propTypes = {\n location: PropTypes.object.isRequired,\n pageResources: PropTypes.object.isRequired,\n data: PropTypes.object,\n pageContext: PropTypes.object.isRequired,\n}\n\nexport default PageRenderer\n","// This is extracted to separate module because it's shared\n// between browser and SSR code\nexport const RouteAnnouncerProps = {\n id: `gatsby-announcer`,\n style: {\n position: `absolute`,\n top: 0,\n width: 1,\n height: 1,\n padding: 0,\n overflow: `hidden`,\n clip: `rect(0, 0, 0, 0)`,\n whiteSpace: `nowrap`,\n border: 0,\n },\n \"aria-live\": `assertive`,\n \"aria-atomic\": `true`,\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport { maybeGetBrowserRedirect } from \"./redirect-utils.js\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport emitter from \"./emitter\"\nimport { RouteAnnouncerProps } from \"./route-announcer-props\"\nimport {\n navigate as reachNavigate,\n globalHistory,\n} from \"@gatsbyjs/reach-router\"\nimport { parsePath } from \"gatsby-link\"\n\nfunction maybeRedirect(pathname) {\n const redirect = maybeGetBrowserRedirect(pathname)\n const { hash, search } = window.location\n\n if (redirect != null) {\n window.___replace(redirect.toPath + search + hash)\n return true\n } else {\n return false\n }\n}\n\n// Catch unhandled chunk loading errors and force a restart of the app.\nlet nextRoute = ``\n\nwindow.addEventListener(`unhandledrejection`, event => {\n if (/loading chunk \\d* failed./i.test(event.reason)) {\n if (nextRoute) {\n window.location.pathname = nextRoute\n }\n }\n})\n\nconst onPreRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(location.pathname)) {\n nextRoute = location.pathname\n apiRunner(`onPreRouteUpdate`, { location, prevLocation })\n }\n}\n\nconst onRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(location.pathname)) {\n apiRunner(`onRouteUpdate`, { location, prevLocation })\n if (\n process.env.GATSBY_QUERY_ON_DEMAND &&\n process.env.GATSBY_QUERY_ON_DEMAND_LOADING_INDICATOR === `true`\n ) {\n emitter.emit(`onRouteUpdate`, { location, prevLocation })\n }\n }\n}\n\nconst navigate = (to, options = {}) => {\n // Support forward/backward navigation with numbers\n // navigate(-2) (jumps back 2 history steps)\n // navigate(2) (jumps forward 2 history steps)\n if (typeof to === `number`) {\n globalHistory.navigate(to)\n return\n }\n\n const { pathname, search, hash } = parsePath(to)\n const redirect = maybeGetBrowserRedirect(pathname)\n\n // If we're redirecting, just replace the passed in pathname\n // to the one we want to redirect to.\n if (redirect) {\n to = redirect.toPath + search + hash\n }\n\n // If we had a service worker update, no matter the path, reload window and\n // reset the pathname whitelist\n if (window.___swUpdated) {\n window.location = pathname + search + hash\n return\n }\n\n // Start a timer to wait for a second before transitioning and showing a\n // loader in case resources aren't around yet.\n const timeoutId = setTimeout(() => {\n emitter.emit(`onDelayedLoadPageResources`, { pathname })\n apiRunner(`onRouteUpdateDelayed`, {\n location: window.location,\n })\n }, 1000)\n\n loader.loadPage(pathname + search).then(pageResources => {\n // If no page resources, then refresh the page\n // Do this, rather than simply `window.location.reload()`, so that\n // pressing the back/forward buttons work - otherwise when pressing\n // back, the browser will just change the URL and expect JS to handle\n // the change, which won't always work since it might not be a Gatsby\n // page.\n if (!pageResources || pageResources.status === PageResourceStatus.Error) {\n window.history.replaceState({}, ``, location.href)\n window.location = pathname\n clearTimeout(timeoutId)\n return\n }\n\n // If the loaded page has a different compilation hash to the\n // window, then a rebuild has occurred on the server. Reload.\n if (process.env.NODE_ENV === `production` && pageResources) {\n if (\n pageResources.page.webpackCompilationHash !==\n window.___webpackCompilationHash\n ) {\n // Purge plugin-offline cache\n if (\n `serviceWorker` in navigator &&\n navigator.serviceWorker.controller !== null &&\n navigator.serviceWorker.controller.state === `activated`\n ) {\n navigator.serviceWorker.controller.postMessage({\n gatsbyApi: `clearPathResources`,\n })\n }\n\n window.location = pathname + search + hash\n }\n }\n reachNavigate(to, options)\n clearTimeout(timeoutId)\n })\n}\n\nfunction shouldUpdateScroll(prevRouterProps, { location }) {\n const { pathname, hash } = location\n const results = apiRunner(`shouldUpdateScroll`, {\n prevRouterProps,\n // `pathname` for backwards compatibility\n pathname,\n routerProps: { location },\n getSavedScrollPosition: args => [\n 0,\n // FIXME this is actually a big code smell, we should fix this\n // eslint-disable-next-line @babel/no-invalid-this\n this._stateStorage.read(args, args.key),\n ],\n })\n if (results.length > 0) {\n // Use the latest registered shouldUpdateScroll result, this allows users to override plugin's configuration\n // @see https://github.com/gatsbyjs/gatsby/issues/12038\n return results[results.length - 1]\n }\n\n if (prevRouterProps) {\n const {\n location: { pathname: oldPathname },\n } = prevRouterProps\n if (oldPathname === pathname) {\n // Scroll to element if it exists, if it doesn't, or no hash is provided,\n // scroll to top.\n return hash ? decodeURI(hash.slice(1)) : [0, 0]\n }\n }\n return true\n}\n\nfunction init() {\n // The \"scroll-behavior\" package expects the \"action\" to be on the location\n // object so let's copy it over.\n globalHistory.listen(args => {\n args.location.action = args.action\n })\n\n window.___push = to => navigate(to, { replace: false })\n window.___replace = to => navigate(to, { replace: true })\n window.___navigate = (to, options) => navigate(to, options)\n}\n\nclass RouteAnnouncer extends React.Component {\n constructor(props) {\n super(props)\n this.announcementRef = React.createRef()\n }\n\n componentDidUpdate(prevProps, nextProps) {\n requestAnimationFrame(() => {\n let pageName = `new page at ${this.props.location.pathname}`\n if (document.title) {\n pageName = document.title\n }\n const pageHeadings = document.querySelectorAll(`#gatsby-focus-wrapper h1`)\n if (pageHeadings && pageHeadings.length) {\n pageName = pageHeadings[0].textContent\n }\n const newAnnouncement = `Navigated to ${pageName}`\n if (this.announcementRef.current) {\n const oldAnnouncement = this.announcementRef.current.innerText\n if (oldAnnouncement !== newAnnouncement) {\n this.announcementRef.current.innerText = newAnnouncement\n }\n }\n })\n }\n\n render() {\n return
\n }\n}\n\nconst compareLocationProps = (prevLocation, nextLocation) => {\n if (prevLocation.href !== nextLocation.href) {\n return true\n }\n\n if (prevLocation?.state?.key !== nextLocation?.state?.key) {\n return true\n }\n\n return false\n}\n\n// Fire on(Pre)RouteUpdate APIs\nclass RouteUpdates extends React.Component {\n constructor(props) {\n super(props)\n onPreRouteUpdate(props.location, null)\n }\n\n componentDidMount() {\n onRouteUpdate(this.props.location, null)\n }\n\n shouldComponentUpdate(nextProps) {\n if (compareLocationProps(this.props.location, nextProps.location)) {\n onPreRouteUpdate(nextProps.location, this.props.location)\n return true\n }\n return false\n }\n\n componentDidUpdate(prevProps) {\n if (compareLocationProps(prevProps.location, this.props.location)) {\n onRouteUpdate(this.props.location, prevProps.location)\n }\n }\n\n render() {\n return (\n \n {this.props.children}\n \n \n )\n }\n}\n\nRouteUpdates.propTypes = {\n location: PropTypes.object.isRequired,\n}\n\nexport { init, shouldUpdateScroll, RouteUpdates, maybeGetBrowserRedirect }\n","// Pulled from react-compat\n// https://github.com/developit/preact-compat/blob/7c5de00e7c85e2ffd011bf3af02899b63f699d3a/src/index.js#L349\nfunction shallowDiffers(a, b) {\n for (var i in a) {\n if (!(i in b)) return true;\n }for (var _i in b) {\n if (a[_i] !== b[_i]) return true;\n }return false;\n}\n\nexport default (function (instance, nextProps, nextState) {\n return shallowDiffers(instance.props, nextProps) || shallowDiffers(instance.state, nextState);\n});","import React from \"react\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport shallowCompare from \"shallow-compare\"\n\nclass EnsureResources extends React.Component {\n constructor(props) {\n super()\n const { location, pageResources } = props\n this.state = {\n location: { ...location },\n pageResources:\n pageResources ||\n loader.loadPageSync(location.pathname + location.search, {\n withErrorDetails: true,\n }),\n }\n }\n\n static getDerivedStateFromProps({ location }, prevState) {\n if (prevState.location.href !== location.href) {\n const pageResources = loader.loadPageSync(\n location.pathname + location.search,\n {\n withErrorDetails: true,\n }\n )\n\n return {\n pageResources,\n location: { ...location },\n }\n }\n\n return {\n location: { ...location },\n }\n }\n\n loadResources(rawPath) {\n loader.loadPage(rawPath).then(pageResources => {\n if (pageResources && pageResources.status !== PageResourceStatus.Error) {\n this.setState({\n location: { ...window.location },\n pageResources,\n })\n } else {\n window.history.replaceState({}, ``, location.href)\n window.location = rawPath\n }\n })\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n // Always return false if we're missing resources.\n if (!nextState.pageResources) {\n this.loadResources(\n nextProps.location.pathname + nextProps.location.search\n )\n return false\n }\n\n if (\n process.env.BUILD_STAGE === `develop` &&\n nextState.pageResources.stale\n ) {\n this.loadResources(\n nextProps.location.pathname + nextProps.location.search\n )\n return false\n }\n\n // Check if the component or json have changed.\n if (this.state.pageResources !== nextState.pageResources) {\n return true\n }\n if (\n this.state.pageResources.component !== nextState.pageResources.component\n ) {\n return true\n }\n\n if (this.state.pageResources.json !== nextState.pageResources.json) {\n return true\n }\n // Check if location has changed on a page using internal routing\n // via matchPath configuration.\n if (\n this.state.location.key !== nextState.location.key &&\n nextState.pageResources.page &&\n (nextState.pageResources.page.matchPath ||\n nextState.pageResources.page.path)\n ) {\n return true\n }\n return shallowCompare(this, nextProps, nextState)\n }\n\n render() {\n if (\n process.env.NODE_ENV !== `production` &&\n (!this.state.pageResources ||\n this.state.pageResources.status === PageResourceStatus.Error)\n ) {\n const message = `EnsureResources was not able to find resources for path: \"${this.props.location.pathname}\"\nThis typically means that an issue occurred building components for that path.\nRun \\`gatsby clean\\` to remove any cached elements.`\n if (this.state.pageResources?.error) {\n console.error(message)\n throw this.state.pageResources.error\n }\n\n throw new Error(message)\n }\n\n return this.props.children(this.state)\n }\n}\n\nexport default EnsureResources\n","import { apiRunner, apiRunnerAsync } from \"./api-runner-browser\"\nimport React from \"react\"\nimport { Router, navigate, Location, BaseContext } from \"@gatsbyjs/reach-router\"\nimport { ScrollContext } from \"gatsby-react-router-scroll\"\nimport { StaticQueryContext } from \"./static-query\"\nimport {\n SlicesMapContext,\n SlicesContext,\n SlicesResultsContext,\n} from \"./slice/context\"\nimport {\n shouldUpdateScroll,\n init as navigationInit,\n RouteUpdates,\n} from \"./navigation\"\nimport emitter from \"./emitter\"\nimport PageRenderer from \"./page-renderer\"\nimport asyncRequires from \"$virtual/async-requires\"\nimport {\n setLoader,\n ProdLoader,\n publicLoader,\n PageResourceStatus,\n getStaticQueryResults,\n getSliceResults,\n} from \"./loader\"\nimport EnsureResources from \"./ensure-resources\"\nimport stripPrefix from \"./strip-prefix\"\n\n// Generated during bootstrap\nimport matchPaths from \"$virtual/match-paths.json\"\nimport { reactDOMUtils } from \"./react-dom-utils\"\n\nconst loader = new ProdLoader(asyncRequires, matchPaths, window.pageData)\nsetLoader(loader)\nloader.setApiRunner(apiRunner)\n\nconst { render, hydrate } = reactDOMUtils()\n\nwindow.asyncRequires = asyncRequires\nwindow.___emitter = emitter\nwindow.___loader = publicLoader\n\nnavigationInit()\n\nconst reloadStorageKey = `gatsby-reload-compilation-hash-match`\n\napiRunnerAsync(`onClientEntry`).then(() => {\n // Let plugins register a service worker. The plugin just needs\n // to return true.\n if (apiRunner(`registerServiceWorker`).filter(Boolean).length > 0) {\n require(`./register-service-worker`)\n }\n\n // In gatsby v2 if Router is used in page using matchPaths\n // paths need to contain full path.\n // For example:\n // - page have `/app/*` matchPath\n // - inside template user needs to use `/app/xyz` as path\n // Resetting `basepath`/`baseuri` keeps current behaviour\n // to not introduce breaking change.\n // Remove this in v3\n const RouteHandler = props => (\n \n \n \n )\n\n const DataContext = React.createContext({})\n\n const slicesContext = {\n renderEnvironment: `browser`,\n }\n\n class GatsbyRoot extends React.Component {\n render() {\n const { children } = this.props\n return (\n \n {({ location }) => (\n \n {({ pageResources, location }) => {\n const staticQueryResults = getStaticQueryResults()\n const sliceResults = getSliceResults()\n\n return (\n \n \n \n \n \n {children}\n \n \n \n \n \n )\n }}\n \n )}\n \n )\n }\n }\n\n class LocationHandler extends React.Component {\n render() {\n return (\n \n {({ pageResources, location }) => (\n \n \n \n \n \n \n \n )}\n \n )\n }\n }\n\n const { pagePath, location: browserLoc } = window\n\n // Explicitly call navigate if the canonical path (window.pagePath)\n // is different to the browser path (window.location.pathname). SSR\n // page paths might include search params, while SSG and DSG won't.\n // If page path include search params we also compare query params.\n // But only if NONE of the following conditions hold:\n //\n // - The url matches a client side route (page.matchPath)\n // - it's a 404 page\n // - it's the offline plugin shell (/offline-plugin-app-shell-fallback/)\n if (\n pagePath &&\n __BASE_PATH__ + pagePath !==\n browserLoc.pathname + (pagePath.includes(`?`) ? browserLoc.search : ``) &&\n !(\n loader.findMatchPath(stripPrefix(browserLoc.pathname, __BASE_PATH__)) ||\n pagePath.match(/^\\/(404|500)(\\/?|.html)$/) ||\n pagePath.match(/^\\/offline-plugin-app-shell-fallback\\/?$/)\n )\n ) {\n navigate(\n __BASE_PATH__ +\n pagePath +\n (!pagePath.includes(`?`) ? browserLoc.search : ``) +\n browserLoc.hash,\n {\n replace: true,\n }\n )\n }\n\n // It's possible that sessionStorage can throw an exception if access is not granted, see https://github.com/gatsbyjs/gatsby/issues/34512\n const getSessionStorage = () => {\n try {\n return sessionStorage\n } catch {\n return null\n }\n }\n\n publicLoader.loadPage(browserLoc.pathname + browserLoc.search).then(page => {\n const sessionStorage = getSessionStorage()\n\n if (\n page?.page?.webpackCompilationHash &&\n page.page.webpackCompilationHash !== window.___webpackCompilationHash\n ) {\n // Purge plugin-offline cache\n if (\n `serviceWorker` in navigator &&\n navigator.serviceWorker.controller !== null &&\n navigator.serviceWorker.controller.state === `activated`\n ) {\n navigator.serviceWorker.controller.postMessage({\n gatsbyApi: `clearPathResources`,\n })\n }\n\n // We have not matching html + js (inlined `window.___webpackCompilationHash`)\n // with our data (coming from `app-data.json` file). This can cause issues such as\n // errors trying to load static queries (as list of static queries is inside `page-data`\n // which might not match to currently loaded `.js` scripts).\n // We are making attempt to reload if hashes don't match, but we also have to handle case\n // when reload doesn't fix it (possibly broken deploy) so we don't end up in infinite reload loop\n if (sessionStorage) {\n const isReloaded = sessionStorage.getItem(reloadStorageKey) === `1`\n\n if (!isReloaded) {\n sessionStorage.setItem(reloadStorageKey, `1`)\n window.location.reload(true)\n return\n }\n }\n }\n\n if (sessionStorage) {\n sessionStorage.removeItem(reloadStorageKey)\n }\n\n if (!page || page.status === PageResourceStatus.Error) {\n const message = `page resources for ${browserLoc.pathname} not found. Not rendering React`\n\n // if the chunk throws an error we want to capture the real error\n // This should help with https://github.com/gatsbyjs/gatsby/issues/19618\n if (page && page.error) {\n console.error(message)\n throw page.error\n }\n\n throw new Error(message)\n }\n\n const SiteRoot = apiRunner(\n `wrapRootElement`,\n { element: },\n ,\n ({ result }) => {\n return { element: result }\n }\n ).pop()\n\n const App = function App() {\n const onClientEntryRanRef = React.useRef(false)\n\n React.useEffect(() => {\n if (!onClientEntryRanRef.current) {\n onClientEntryRanRef.current = true\n if (performance.mark) {\n performance.mark(`onInitialClientRender`)\n }\n\n apiRunner(`onInitialClientRender`)\n }\n }, [])\n\n return {SiteRoot}\n }\n\n const focusEl = document.getElementById(`gatsby-focus-wrapper`)\n\n // Client only pages have any empty body so we just do a normal\n // render to avoid React complaining about hydration mis-matches.\n let defaultRenderer = render\n if (focusEl && focusEl.children.length) {\n defaultRenderer = hydrate\n }\n\n const renderer = apiRunner(\n `replaceHydrateFunction`,\n undefined,\n defaultRenderer\n )[0]\n\n function runRender() {\n const rootElement =\n typeof window !== `undefined`\n ? document.getElementById(`___gatsby`)\n : null\n\n renderer(, rootElement)\n }\n\n // https://github.com/madrobby/zepto/blob/b5ed8d607f67724788ec9ff492be297f64d47dfc/src/zepto.js#L439-L450\n // TODO remove IE 10 support\n const doc = document\n if (\n doc.readyState === `complete` ||\n (doc.readyState !== `loading` && !doc.documentElement.doScroll)\n ) {\n setTimeout(function () {\n runRender()\n }, 0)\n } else {\n const handler = function () {\n doc.removeEventListener(`DOMContentLoaded`, handler, false)\n window.removeEventListener(`load`, handler, false)\n\n runRender()\n }\n\n doc.addEventListener(`DOMContentLoaded`, handler, false)\n window.addEventListener(`load`, handler, false)\n }\n\n return\n })\n})\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport loader from \"./loader\"\nimport InternalPageRenderer from \"./page-renderer\"\n\nconst ProdPageRenderer = ({ location }) => {\n const pageResources = loader.loadPageSync(location.pathname)\n if (!pageResources) {\n return null\n }\n return React.createElement(InternalPageRenderer, {\n location,\n pageResources,\n ...pageResources.json,\n })\n}\n\nProdPageRenderer.propTypes = {\n location: PropTypes.shape({\n pathname: PropTypes.string.isRequired,\n }).isRequired,\n}\n\nexport default ProdPageRenderer\n","const preferDefault = m => (m && m.default) || m\n\nif (process.env.BUILD_STAGE === `develop`) {\n module.exports = preferDefault(require(`./public-page-renderer-dev`))\n} else if (process.env.BUILD_STAGE === `build-javascript`) {\n module.exports = preferDefault(require(`./public-page-renderer-prod`))\n} else {\n module.exports = () => null\n}\n","const map = new WeakMap()\n\nexport function reactDOMUtils() {\n const reactDomClient = require(`react-dom/client`)\n\n const render = (Component, el) => {\n let root = map.get(el)\n if (!root) {\n map.set(el, (root = reactDomClient.createRoot(el)))\n }\n root.render(Component)\n }\n\n const hydrate = (Component, el) => reactDomClient.hydrateRoot(el, Component)\n\n return { render, hydrate }\n}\n","import redirects from \"./redirects.json\"\n\n// Convert to a map for faster lookup in maybeRedirect()\n\nconst redirectMap = new Map()\nconst redirectIgnoreCaseMap = new Map()\n\nredirects.forEach(redirect => {\n if (redirect.ignoreCase) {\n redirectIgnoreCaseMap.set(redirect.fromPath, redirect)\n } else {\n redirectMap.set(redirect.fromPath, redirect)\n }\n})\n\nexport function maybeGetBrowserRedirect(pathname) {\n let redirect = redirectMap.get(pathname)\n if (!redirect) {\n redirect = redirectIgnoreCaseMap.get(pathname.toLowerCase())\n }\n return redirect\n}\n","import { apiRunner } from \"./api-runner-browser\"\n\nif (\n window.location.protocol !== `https:` &&\n window.location.hostname !== `localhost`\n) {\n console.error(\n `Service workers can only be used over HTTPS, or on localhost for development`\n )\n} else if (`serviceWorker` in navigator) {\n navigator.serviceWorker\n .register(`${__BASE_PATH__}/sw.js`)\n .then(function (reg) {\n reg.addEventListener(`updatefound`, () => {\n apiRunner(`onServiceWorkerUpdateFound`, { serviceWorker: reg })\n // The updatefound event implies that reg.installing is set; see\n // https://w3c.github.io/ServiceWorker/#service-worker-registration-updatefound-event\n const installingWorker = reg.installing\n console.log(`installingWorker`, installingWorker)\n installingWorker.addEventListener(`statechange`, () => {\n switch (installingWorker.state) {\n case `installed`:\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and the fresh content will\n // have been added to the cache.\n\n // We set a flag so Gatsby Link knows to refresh the page on next navigation attempt\n window.___swUpdated = true\n // We call the onServiceWorkerUpdateReady API so users can show update prompts.\n apiRunner(`onServiceWorkerUpdateReady`, { serviceWorker: reg })\n\n // If resources failed for the current page, reload.\n if (window.___failedResources) {\n console.log(`resources failed, SW updated - reloading`)\n window.location.reload()\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a \"Content is cached for offline use.\" message.\n console.log(`Content is now available offline!`)\n\n // Post to service worker that install is complete.\n // Delay to allow time for the event listener to be added --\n // otherwise fetch is called too soon and resources aren't cached.\n apiRunner(`onServiceWorkerInstalled`, { serviceWorker: reg })\n }\n break\n\n case `redundant`:\n console.error(`The installing service worker became redundant.`)\n apiRunner(`onServiceWorkerRedundant`, { serviceWorker: reg })\n break\n\n case `activated`:\n apiRunner(`onServiceWorkerActive`, { serviceWorker: reg })\n break\n }\n })\n })\n })\n .catch(function (e) {\n console.error(`Error during service worker registration:`, e)\n })\n}\n","import React from \"react\"\n\nconst SlicesResultsContext = React.createContext({})\nconst SlicesContext = React.createContext({})\nconst SlicesMapContext = React.createContext({})\nconst SlicesPropsContext = React.createContext({})\n\nexport {\n SlicesResultsContext,\n SlicesContext,\n SlicesMapContext,\n SlicesPropsContext,\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { createServerOrClientContext } from \"./context-utils\"\n\nconst StaticQueryContext = createServerOrClientContext(`StaticQuery`, {})\n\nfunction StaticQueryDataRenderer({ staticQueryData, data, query, render }) {\n const finalData = data\n ? data.data\n : staticQueryData[query] && staticQueryData[query].data\n\n return (\n \n {finalData && render(finalData)}\n {!finalData &&
Loading (StaticQuery)
}\n
\n )\n}\n\nlet warnedAboutStaticQuery = false\n\n// TODO(v6): Remove completely\nconst StaticQuery = props => {\n const { data, query, render, children } = props\n\n if (process.env.NODE_ENV === `development` && !warnedAboutStaticQuery) {\n console.warn(\n `The component is deprecated and will be removed in Gatsby v6. Use useStaticQuery instead. Refer to the migration guide for more information: https://gatsby.dev/migrating-4-to-5/#staticquery--is-deprecated`\n )\n warnedAboutStaticQuery = true\n }\n\n return (\n \n {staticQueryData => (\n \n )}\n \n )\n}\n\nStaticQuery.propTypes = {\n data: PropTypes.object,\n query: PropTypes.string.isRequired,\n render: PropTypes.func,\n children: PropTypes.func,\n}\n\nconst useStaticQuery = query => {\n if (\n typeof React.useContext !== `function` &&\n process.env.NODE_ENV === `development`\n ) {\n // TODO(v5): Remove since we require React >= 18\n throw new Error(\n `You're likely using a version of React that doesn't support Hooks\\n` +\n `Please update React and ReactDOM to 16.8.0 or later to use the useStaticQuery hook.`\n )\n }\n\n const context = React.useContext(StaticQueryContext)\n\n // query is a stringified number like `3303882` when wrapped with graphql, If a user forgets\n // to wrap the query in a grqphql, then casting it to a Number results in `NaN` allowing us to\n // catch the misuse of the API and give proper direction\n if (isNaN(Number(query))) {\n throw new Error(`useStaticQuery was called with a string but expects to be called using \\`graphql\\`. Try this:\n\nimport { useStaticQuery, graphql } from 'gatsby';\n\nuseStaticQuery(graphql\\`${query}\\`);\n`)\n }\n\n if (context[query]?.data) {\n return context[query].data\n } else {\n throw new Error(\n `The result of this StaticQuery could not be fetched.\\n\\n` +\n `This is likely a bug in Gatsby and if refreshing the page does not fix it, ` +\n `please open an issue in https://github.com/gatsbyjs/gatsby/issues`\n )\n }\n}\n\nexport { StaticQuery, StaticQueryContext, useStaticQuery }\n","import React from \"react\"\n\n// Ensure serverContext is not created more than once as React will throw when creating it more than once\n// https://github.com/facebook/react/blob/dd2d6522754f52c70d02c51db25eb7cbd5d1c8eb/packages/react/src/ReactServerContext.js#L101\nconst createServerContext = (name, defaultValue = null) => {\n /* eslint-disable no-undef */\n if (!globalThis.__SERVER_CONTEXT) {\n globalThis.__SERVER_CONTEXT = {}\n }\n\n if (!globalThis.__SERVER_CONTEXT[name]) {\n globalThis.__SERVER_CONTEXT[name] = React.createServerContext(\n name,\n defaultValue\n )\n }\n\n return globalThis.__SERVER_CONTEXT[name]\n}\n\nfunction createServerOrClientContext(name, defaultValue) {\n if (React.createServerContext) {\n return createServerContext(name, defaultValue)\n }\n\n return React.createContext(defaultValue)\n}\n\nexport { createServerOrClientContext }\n","/**\n * Remove a prefix from a string. Return the input string if the given prefix\n * isn't found.\n */\n\nexport default function stripPrefix(str, prefix = ``) {\n if (!prefix) {\n return str\n }\n\n if (str === prefix) {\n return `/`\n }\n\n if (str.startsWith(`${prefix}/`)) {\n return str.slice(prefix.length)\n }\n\n return str\n}\n","\"use strict\";\n\nvar offsetY = 0;\nvar getTargetOffset = function getTargetOffset(hash) {\n var id = window.decodeURI(hash.replace(\"#\", \"\"));\n if (id !== \"\") {\n var element = document.getElementById(id);\n if (element) {\n var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;\n var clientTop = document.documentElement.clientTop || document.body.clientTop || 0;\n var computedStyles = window.getComputedStyle(element);\n var scrollMarginTop = computedStyles.getPropertyValue(\"scroll-margin-top\") || computedStyles.getPropertyValue(\"scroll-snap-margin-top\") || \"0px\";\n return element.getBoundingClientRect().top + scrollTop - parseInt(scrollMarginTop, 10) - clientTop - offsetY;\n }\n }\n return null;\n};\nexports.onInitialClientRender = function (_, pluginOptions) {\n if (pluginOptions.offsetY) {\n offsetY = pluginOptions.offsetY;\n }\n requestAnimationFrame(function () {\n var offset = getTargetOffset(window.location.hash);\n if (offset !== null) {\n window.scrollTo(0, offset);\n }\n });\n};\nexports.shouldUpdateScroll = function (_ref) {\n var location = _ref.routerProps.location;\n var offset = getTargetOffset(location.hash);\n return offset !== null ? [0, offset] : true;\n};","\"use strict\";\n\nexports.DEFAULT_OPTIONS = {\n maxWidth: 650,\n wrapperStyle: \"\",\n backgroundColor: \"white\",\n linkImagesToOriginal: true,\n showCaptions: false,\n markdownCaptions: false,\n withWebp: false,\n withAvif: false,\n tracedSVG: false,\n loading: \"lazy\",\n decoding: \"async\",\n disableBgImageOnAlpha: false,\n disableBgImage: false\n};\nexports.EMPTY_ALT = \"GATSBY_EMPTY_ALT\";\nexports.imageClass = \"gatsby-resp-image-image\";\nexports.imageWrapperClass = \"gatsby-resp-image-wrapper\";\nexports.imageBackgroundClass = \"gatsby-resp-image-background-image\";","\"use strict\";\n\nvar _require = require(\"./constants\"),\n DEFAULT_OPTIONS = _require.DEFAULT_OPTIONS,\n imageClass = _require.imageClass,\n imageBackgroundClass = _require.imageBackgroundClass,\n imageWrapperClass = _require.imageWrapperClass;\nexports.onRouteUpdate = function (apiCallbackContext, pluginOptions) {\n var options = Object.assign({}, DEFAULT_OPTIONS, pluginOptions);\n var imageWrappers = document.querySelectorAll(\".\" + imageWrapperClass);\n\n // https://css-tricks.com/snippets/javascript/loop-queryselectorall-matches/\n // for cross-browser looping through NodeList without polyfills\n var _loop = function _loop() {\n var imageWrapper = imageWrappers[i];\n var backgroundElement = imageWrapper.querySelector(\".\" + imageBackgroundClass);\n var imageElement = imageWrapper.querySelector(\".\" + imageClass);\n var onImageLoad = function onImageLoad() {\n backgroundElement.style.transition = \"opacity 0.5s 0.5s\";\n imageElement.style.transition = \"opacity 0.5s\";\n onImageComplete();\n };\n var onImageComplete = function onImageComplete() {\n backgroundElement.style.opacity = 0;\n imageElement.style.opacity = 1;\n imageElement.style.color = \"inherit\";\n imageElement.style.boxShadow = \"inset 0px 0px 0px 400px \" + options.backgroundColor;\n imageElement.removeEventListener(\"load\", onImageLoad);\n imageElement.removeEventListener(\"error\", onImageComplete);\n };\n imageElement.style.opacity = 0;\n imageElement.addEventListener(\"load\", onImageLoad);\n imageElement.addEventListener(\"error\", onImageComplete);\n if (imageElement.complete) {\n onImageComplete();\n }\n };\n for (var i = 0; i < imageWrappers.length; i++) {\n _loop();\n }\n};","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","/**\n * @license React\n * react-server-dom-webpack.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var k=require(\"react\"),l={stream:!0},n=new Map,p=Symbol.for(\"react.element\"),q=Symbol.for(\"react.lazy\"),r=Symbol.for(\"react.default_value\"),t=k.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ContextRegistry;function u(a){t[a]||(t[a]=k.createServerContext(a,r));return t[a]}function v(a,b,c){this._status=a;this._value=b;this._response=c}v.prototype.then=function(a){0===this._status?(null===this._value&&(this._value=[]),this._value.push(a)):a()};\nfunction w(a){switch(a._status){case 3:return a._value;case 1:var b=JSON.parse(a._value,a._response._fromJSON);a._status=3;return a._value=b;case 2:b=a._value;for(var c=b.chunks,d=0;d {\n const { forward = [], ...filteredConfig } = config || {};\n const configStr = JSON.stringify(filteredConfig, (k, v) => {\n if (typeof v === 'function') {\n v = String(v);\n if (v.startsWith(k + '(')) {\n v = 'function ' + v;\n }\n }\n return v;\n });\n return [\n `!(function(w,p,f,c){`,\n Object.keys(filteredConfig).length > 0\n ? `c=w[p]=Object.assign(w[p]||{},${configStr});`\n : `c=w[p]=w[p]||{};`,\n `c[f]=(c[f]||[])`,\n forward.length > 0 ? `.concat(${JSON.stringify(forward)})` : ``,\n `})(window,'partytown','forward');`,\n snippetCode,\n ].join('');\n};\n\n/**\n * The `type` attribute for Partytown scripts, which does two things:\n *\n * 1. Prevents the ` - \ No newline at end of file + \ No newline at end of file diff --git a/articles/compare_view_example/index.html b/articles/compare_view_example/index.html index 76007445..1be69a91 100644 --- a/articles/compare_view_example/index.html +++ b/articles/compare_view_example/index.html @@ -52,6 +52,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/articles/index.html b/articles/index.html index 2e34d0bc..0e4f3961 100644 --- a/articles/index.html +++ b/articles/index.html @@ -52,6 +52,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/articles/installing_gentoo/index.html b/articles/installing_gentoo/index.html index cceef228..624bd48f 100644 --- a/articles/installing_gentoo/index.html +++ b/articles/installing_gentoo/index.html @@ -311,6 +311,6 @@

- window.___chunkMapping="{\"app\":[\"/app-9d8349539d1a53475fba.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-0e4184ff774d07ff7424.js\"],\"component---src-pages-about-tsx\":[\"/component---src-pages-about-tsx-e78dd311a29d07914929.js\"],\"component---src-pages-articles-tsx\":[\"/component---src-pages-articles-tsx-aee777c739ad265b4b37.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-9ee5b786a2e7b89276c9.js\"],\"component---src-pages-photography-index-tsx\":[\"/component---src-pages-photography-index-tsx-8d1e8199fe3d0cfa0451.js\"],\"component---src-pages-photography-leaving-home-tsx\":[\"/component---src-pages-photography-leaving-home-tsx-1d31d0fc72b427f62866.js\"],\"component---src-pages-photography-to-vanish-tsx\":[\"/component---src-pages-photography-to-vanish-tsx-96906898296e8346f439.js\"],\"component---src-pages-photography-transient-tsx\":[\"/component---src-pages-photography-transient-tsx-da3c3d6b2e8e37152883.js\"],\"component---src-pages-privacy-tsx\":[\"/component---src-pages-privacy-tsx-f5b20c36c4a2a18f1f54.js\"],\"component---src-pages-projects-tsx\":[\"/component---src-pages-projects-tsx-6913816ab911269673c3.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md-0dc7578afbe0f6804be1.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md-7987ecfa3f60efdef757.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md-0fabff1b1842545c8a5d.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md-1473237b99aadc49bedc.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md-28fdf47d2f96c11d9211.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md-c1cd5142d52b0620fa6e.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md-6c3758660f2fd26eb3aa.js\"],\"component---src-templates-projects-language-tsx\":[\"/component---src-templates-projects-language-tsx-cad086841d9502611b71.js\"]}"; + window.___chunkMapping="{\"app\":[\"/app-5dbf3959725da9267ec3.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-0e4184ff774d07ff7424.js\"],\"component---src-pages-about-tsx\":[\"/component---src-pages-about-tsx-e78dd311a29d07914929.js\"],\"component---src-pages-articles-tsx\":[\"/component---src-pages-articles-tsx-aee777c739ad265b4b37.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-ad7c035d82f1d9159f1c.js\"],\"component---src-pages-photography-index-tsx\":[\"/component---src-pages-photography-index-tsx-8d1e8199fe3d0cfa0451.js\"],\"component---src-pages-photography-leaving-home-tsx\":[\"/component---src-pages-photography-leaving-home-tsx-1d31d0fc72b427f62866.js\"],\"component---src-pages-photography-to-vanish-tsx\":[\"/component---src-pages-photography-to-vanish-tsx-96906898296e8346f439.js\"],\"component---src-pages-photography-transient-tsx\":[\"/component---src-pages-photography-transient-tsx-da3c3d6b2e8e37152883.js\"],\"component---src-pages-privacy-tsx\":[\"/component---src-pages-privacy-tsx-f5b20c36c4a2a18f1f54.js\"],\"component---src-pages-projects-tsx\":[\"/component---src-pages-projects-tsx-cf9175c85e5ff3d0840f.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md-0dc7578afbe0f6804be1.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md-7987ecfa3f60efdef757.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md-0fabff1b1842545c8a5d.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md-1473237b99aadc49bedc.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md-28fdf47d2f96c11d9211.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md-c1cd5142d52b0620fa6e.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md-6c3758660f2fd26eb3aa.js\"],\"component---src-templates-projects-language-tsx\":[\"/component---src-templates-projects-language-tsx-0097dee73f39d18c6125.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/articles/lvim_in_distrobox/index.html b/articles/lvim_in_distrobox/index.html index ad143c4a..a2370e58 100644 --- a/articles/lvim_in_distrobox/index.html +++ b/articles/lvim_in_distrobox/index.html @@ -105,6 +105,6 @@

- window.___chunkMapping="{\"app\":[\"/app-9d8349539d1a53475fba.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-0e4184ff774d07ff7424.js\"],\"component---src-pages-about-tsx\":[\"/component---src-pages-about-tsx-e78dd311a29d07914929.js\"],\"component---src-pages-articles-tsx\":[\"/component---src-pages-articles-tsx-aee777c739ad265b4b37.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-9ee5b786a2e7b89276c9.js\"],\"component---src-pages-photography-index-tsx\":[\"/component---src-pages-photography-index-tsx-8d1e8199fe3d0cfa0451.js\"],\"component---src-pages-photography-leaving-home-tsx\":[\"/component---src-pages-photography-leaving-home-tsx-1d31d0fc72b427f62866.js\"],\"component---src-pages-photography-to-vanish-tsx\":[\"/component---src-pages-photography-to-vanish-tsx-96906898296e8346f439.js\"],\"component---src-pages-photography-transient-tsx\":[\"/component---src-pages-photography-transient-tsx-da3c3d6b2e8e37152883.js\"],\"component---src-pages-privacy-tsx\":[\"/component---src-pages-privacy-tsx-f5b20c36c4a2a18f1f54.js\"],\"component---src-pages-projects-tsx\":[\"/component---src-pages-projects-tsx-6913816ab911269673c3.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md-0dc7578afbe0f6804be1.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md-7987ecfa3f60efdef757.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md-0fabff1b1842545c8a5d.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md-1473237b99aadc49bedc.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md-28fdf47d2f96c11d9211.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md-c1cd5142d52b0620fa6e.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md-6c3758660f2fd26eb3aa.js\"],\"component---src-templates-projects-language-tsx\":[\"/component---src-templates-projects-language-tsx-cad086841d9502611b71.js\"]}"; + window.___chunkMapping="{\"app\":[\"/app-5dbf3959725da9267ec3.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-0e4184ff774d07ff7424.js\"],\"component---src-pages-about-tsx\":[\"/component---src-pages-about-tsx-e78dd311a29d07914929.js\"],\"component---src-pages-articles-tsx\":[\"/component---src-pages-articles-tsx-aee777c739ad265b4b37.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-ad7c035d82f1d9159f1c.js\"],\"component---src-pages-photography-index-tsx\":[\"/component---src-pages-photography-index-tsx-8d1e8199fe3d0cfa0451.js\"],\"component---src-pages-photography-leaving-home-tsx\":[\"/component---src-pages-photography-leaving-home-tsx-1d31d0fc72b427f62866.js\"],\"component---src-pages-photography-to-vanish-tsx\":[\"/component---src-pages-photography-to-vanish-tsx-96906898296e8346f439.js\"],\"component---src-pages-photography-transient-tsx\":[\"/component---src-pages-photography-transient-tsx-da3c3d6b2e8e37152883.js\"],\"component---src-pages-privacy-tsx\":[\"/component---src-pages-privacy-tsx-f5b20c36c4a2a18f1f54.js\"],\"component---src-pages-projects-tsx\":[\"/component---src-pages-projects-tsx-cf9175c85e5ff3d0840f.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md-0dc7578afbe0f6804be1.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md-7987ecfa3f60efdef757.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md-0fabff1b1842545c8a5d.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md-1473237b99aadc49bedc.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md-28fdf47d2f96c11d9211.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md-c1cd5142d52b0620fa6e.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md-6c3758660f2fd26eb3aa.js\"],\"component---src-templates-projects-language-tsx\":[\"/component---src-templates-projects-language-tsx-0097dee73f39d18c6125.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/articles/maki_atoms_and_time_travel/index.html b/articles/maki_atoms_and_time_travel/index.html index dc9a1bfa..5a216871 100644 --- a/articles/maki_atoms_and_time_travel/index.html +++ b/articles/maki_atoms_and_time_travel/index.html @@ -348,6 +348,6 @@

- window.___chunkMapping="{\"app\":[\"/app-9d8349539d1a53475fba.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-0e4184ff774d07ff7424.js\"],\"component---src-pages-about-tsx\":[\"/component---src-pages-about-tsx-e78dd311a29d07914929.js\"],\"component---src-pages-articles-tsx\":[\"/component---src-pages-articles-tsx-aee777c739ad265b4b37.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-9ee5b786a2e7b89276c9.js\"],\"component---src-pages-photography-index-tsx\":[\"/component---src-pages-photography-index-tsx-8d1e8199fe3d0cfa0451.js\"],\"component---src-pages-photography-leaving-home-tsx\":[\"/component---src-pages-photography-leaving-home-tsx-1d31d0fc72b427f62866.js\"],\"component---src-pages-photography-to-vanish-tsx\":[\"/component---src-pages-photography-to-vanish-tsx-96906898296e8346f439.js\"],\"component---src-pages-photography-transient-tsx\":[\"/component---src-pages-photography-transient-tsx-da3c3d6b2e8e37152883.js\"],\"component---src-pages-privacy-tsx\":[\"/component---src-pages-privacy-tsx-f5b20c36c4a2a18f1f54.js\"],\"component---src-pages-projects-tsx\":[\"/component---src-pages-projects-tsx-6913816ab911269673c3.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md-0dc7578afbe0f6804be1.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md-7987ecfa3f60efdef757.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md-0fabff1b1842545c8a5d.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md-1473237b99aadc49bedc.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md-28fdf47d2f96c11d9211.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md-c1cd5142d52b0620fa6e.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md-6c3758660f2fd26eb3aa.js\"],\"component---src-templates-projects-language-tsx\":[\"/component---src-templates-projects-language-tsx-cad086841d9502611b71.js\"]}"; + window.___chunkMapping="{\"app\":[\"/app-5dbf3959725da9267ec3.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-0e4184ff774d07ff7424.js\"],\"component---src-pages-about-tsx\":[\"/component---src-pages-about-tsx-e78dd311a29d07914929.js\"],\"component---src-pages-articles-tsx\":[\"/component---src-pages-articles-tsx-aee777c739ad265b4b37.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-ad7c035d82f1d9159f1c.js\"],\"component---src-pages-photography-index-tsx\":[\"/component---src-pages-photography-index-tsx-8d1e8199fe3d0cfa0451.js\"],\"component---src-pages-photography-leaving-home-tsx\":[\"/component---src-pages-photography-leaving-home-tsx-1d31d0fc72b427f62866.js\"],\"component---src-pages-photography-to-vanish-tsx\":[\"/component---src-pages-photography-to-vanish-tsx-96906898296e8346f439.js\"],\"component---src-pages-photography-transient-tsx\":[\"/component---src-pages-photography-transient-tsx-da3c3d6b2e8e37152883.js\"],\"component---src-pages-privacy-tsx\":[\"/component---src-pages-privacy-tsx-f5b20c36c4a2a18f1f54.js\"],\"component---src-pages-projects-tsx\":[\"/component---src-pages-projects-tsx-cf9175c85e5ff3d0840f.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md-0dc7578afbe0f6804be1.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md-7987ecfa3f60efdef757.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md-0fabff1b1842545c8a5d.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md-1473237b99aadc49bedc.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md-28fdf47d2f96c11d9211.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md-c1cd5142d52b0620fa6e.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md-6c3758660f2fd26eb3aa.js\"],\"component---src-templates-projects-language-tsx\":[\"/component---src-templates-projects-language-tsx-0097dee73f39d18c6125.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/articles/manim_intro/index.html b/articles/manim_intro/index.html index caf8565d..862302a6 100644 --- a/articles/manim_intro/index.html +++ b/articles/manim_intro/index.html @@ -87,6 +87,6 @@

- window.___chunkMapping="{\"app\":[\"/app-9d8349539d1a53475fba.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-0e4184ff774d07ff7424.js\"],\"component---src-pages-about-tsx\":[\"/component---src-pages-about-tsx-e78dd311a29d07914929.js\"],\"component---src-pages-articles-tsx\":[\"/component---src-pages-articles-tsx-aee777c739ad265b4b37.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-9ee5b786a2e7b89276c9.js\"],\"component---src-pages-photography-index-tsx\":[\"/component---src-pages-photography-index-tsx-8d1e8199fe3d0cfa0451.js\"],\"component---src-pages-photography-leaving-home-tsx\":[\"/component---src-pages-photography-leaving-home-tsx-1d31d0fc72b427f62866.js\"],\"component---src-pages-photography-to-vanish-tsx\":[\"/component---src-pages-photography-to-vanish-tsx-96906898296e8346f439.js\"],\"component---src-pages-photography-transient-tsx\":[\"/component---src-pages-photography-transient-tsx-da3c3d6b2e8e37152883.js\"],\"component---src-pages-privacy-tsx\":[\"/component---src-pages-privacy-tsx-f5b20c36c4a2a18f1f54.js\"],\"component---src-pages-projects-tsx\":[\"/component---src-pages-projects-tsx-6913816ab911269673c3.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md-0dc7578afbe0f6804be1.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md-7987ecfa3f60efdef757.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md-0fabff1b1842545c8a5d.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md-1473237b99aadc49bedc.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md-28fdf47d2f96c11d9211.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md-c1cd5142d52b0620fa6e.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md-6c3758660f2fd26eb3aa.js\"],\"component---src-templates-projects-language-tsx\":[\"/component---src-templates-projects-language-tsx-cad086841d9502611b71.js\"]}"; + window.___chunkMapping="{\"app\":[\"/app-5dbf3959725da9267ec3.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-0e4184ff774d07ff7424.js\"],\"component---src-pages-about-tsx\":[\"/component---src-pages-about-tsx-e78dd311a29d07914929.js\"],\"component---src-pages-articles-tsx\":[\"/component---src-pages-articles-tsx-aee777c739ad265b4b37.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-ad7c035d82f1d9159f1c.js\"],\"component---src-pages-photography-index-tsx\":[\"/component---src-pages-photography-index-tsx-8d1e8199fe3d0cfa0451.js\"],\"component---src-pages-photography-leaving-home-tsx\":[\"/component---src-pages-photography-leaving-home-tsx-1d31d0fc72b427f62866.js\"],\"component---src-pages-photography-to-vanish-tsx\":[\"/component---src-pages-photography-to-vanish-tsx-96906898296e8346f439.js\"],\"component---src-pages-photography-transient-tsx\":[\"/component---src-pages-photography-transient-tsx-da3c3d6b2e8e37152883.js\"],\"component---src-pages-privacy-tsx\":[\"/component---src-pages-privacy-tsx-f5b20c36c4a2a18f1f54.js\"],\"component---src-pages-projects-tsx\":[\"/component---src-pages-projects-tsx-cf9175c85e5ff3d0840f.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md-0dc7578afbe0f6804be1.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md-7987ecfa3f60efdef757.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md-0fabff1b1842545c8a5d.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md-1473237b99aadc49bedc.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md-28fdf47d2f96c11d9211.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md-c1cd5142d52b0620fa6e.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md-6c3758660f2fd26eb3aa.js\"],\"component---src-templates-projects-language-tsx\":[\"/component---src-templates-projects-language-tsx-0097dee73f39d18c6125.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/articles/revealjs/index.html b/articles/revealjs/index.html index bd1f8383..e6caa651 100644 --- a/articles/revealjs/index.html +++ b/articles/revealjs/index.html @@ -270,6 +270,6 @@

- window.___chunkMapping="{\"app\":[\"/app-9d8349539d1a53475fba.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-0e4184ff774d07ff7424.js\"],\"component---src-pages-about-tsx\":[\"/component---src-pages-about-tsx-e78dd311a29d07914929.js\"],\"component---src-pages-articles-tsx\":[\"/component---src-pages-articles-tsx-aee777c739ad265b4b37.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-9ee5b786a2e7b89276c9.js\"],\"component---src-pages-photography-index-tsx\":[\"/component---src-pages-photography-index-tsx-8d1e8199fe3d0cfa0451.js\"],\"component---src-pages-photography-leaving-home-tsx\":[\"/component---src-pages-photography-leaving-home-tsx-1d31d0fc72b427f62866.js\"],\"component---src-pages-photography-to-vanish-tsx\":[\"/component---src-pages-photography-to-vanish-tsx-96906898296e8346f439.js\"],\"component---src-pages-photography-transient-tsx\":[\"/component---src-pages-photography-transient-tsx-da3c3d6b2e8e37152883.js\"],\"component---src-pages-privacy-tsx\":[\"/component---src-pages-privacy-tsx-f5b20c36c4a2a18f1f54.js\"],\"component---src-pages-projects-tsx\":[\"/component---src-pages-projects-tsx-6913816ab911269673c3.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md-0dc7578afbe0f6804be1.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md-7987ecfa3f60efdef757.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md-0fabff1b1842545c8a5d.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md-1473237b99aadc49bedc.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md-28fdf47d2f96c11d9211.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md-c1cd5142d52b0620fa6e.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md-6c3758660f2fd26eb3aa.js\"],\"component---src-templates-projects-language-tsx\":[\"/component---src-templates-projects-language-tsx-cad086841d9502611b71.js\"]}"; + window.___chunkMapping="{\"app\":[\"/app-5dbf3959725da9267ec3.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-0e4184ff774d07ff7424.js\"],\"component---src-pages-about-tsx\":[\"/component---src-pages-about-tsx-e78dd311a29d07914929.js\"],\"component---src-pages-articles-tsx\":[\"/component---src-pages-articles-tsx-aee777c739ad265b4b37.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-ad7c035d82f1d9159f1c.js\"],\"component---src-pages-photography-index-tsx\":[\"/component---src-pages-photography-index-tsx-8d1e8199fe3d0cfa0451.js\"],\"component---src-pages-photography-leaving-home-tsx\":[\"/component---src-pages-photography-leaving-home-tsx-1d31d0fc72b427f62866.js\"],\"component---src-pages-photography-to-vanish-tsx\":[\"/component---src-pages-photography-to-vanish-tsx-96906898296e8346f439.js\"],\"component---src-pages-photography-transient-tsx\":[\"/component---src-pages-photography-transient-tsx-da3c3d6b2e8e37152883.js\"],\"component---src-pages-privacy-tsx\":[\"/component---src-pages-privacy-tsx-f5b20c36c4a2a18f1f54.js\"],\"component---src-pages-projects-tsx\":[\"/component---src-pages-projects-tsx-cf9175c85e5ff3d0840f.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md-0dc7578afbe0f6804be1.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md-7987ecfa3f60efdef757.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md-0fabff1b1842545c8a5d.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md-1473237b99aadc49bedc.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md-28fdf47d2f96c11d9211.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md-c1cd5142d52b0620fa6e.js\"],\"component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md\":[\"/component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md-6c3758660f2fd26eb3aa.js\"],\"component---src-templates-projects-language-tsx\":[\"/component---src-templates-projects-language-tsx-0097dee73f39d18c6125.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/c804ae579c3e2b4740c8c44db44e41913c869de7-2c42feaa3017eda97d1c.js b/c804ae579c3e2b4740c8c44db44e41913c869de7-2c42feaa3017eda97d1c.js new file mode 100644 index 00000000..a77aa874 --- /dev/null +++ b/c804ae579c3e2b4740c8c44db44e41913c869de7-2c42feaa3017eda97d1c.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkhomepage=self.webpackChunkhomepage||[]).push([[9],{4020:function(e){var t="%[a-f0-9]{2}",n=new RegExp("("+t+")|([^%]+?)","gi"),r=new RegExp("("+t+")+","gi");function o(e,t){try{return[decodeURIComponent(e.join(""))]}catch(c){}if(1===e.length)return e;t=t||1;var n=e.slice(0,t),r=e.slice(t);return Array.prototype.concat.call([],o(n),o(r))}function c(e){try{return decodeURIComponent(e)}catch(c){for(var t=e.match(n)||[],r=1;r{const t=e.icon,n=e.alt?e.alt:"icon",c=e.icon_mono?e.icon_mono:t;return r.createElement("div",{className:"hover_icon-module--icon_wrapper--987b2 "+e.className},r.createElement("img",{className:"hover_icon-module--icon--32e2a "+e.icon_class,src:t,alt:n}),r.createElement("div",{className:"hover_icon-module--icon_mono--d29ed "+e.icon_mono_class,style:(0,o.Z)(c)}))}},9131:function(e,t,n){n.d(t,{Z:function(){return s},_:function(){return a}});var r=n(8032),o=n(7294),c=n(8300),i=n(6669);function a(e){var t,n,o,i,a,s,l,u,d;return{id:e.node.id,date:null===(t=e.node.frontmatter)||void 0===t?void 0:t.date,languages:null===(n=e.node.frontmatter)||void 0===n?void 0:n.languages.map((e=>c.M.get(e))),priority:parseInt(null===(o=e.node.frontmatter)||void 0===o?void 0:o.priority),dependencies:null===(i=e.node.frontmatter)||void 0===i?void 0:i.dependencies,description:null===(a=e.node.frontmatter)||void 0===a?void 0:a.description,slug:null===(s=e.node.frontmatter)||void 0===s?void 0:s.slug,link:null===(l=e.node.frontmatter)||void 0===l?void 0:l.link,title:null===(u=e.node.frontmatter)||void 0===u?void 0:u.title,thumb:(0,r.c)(null===(d=e.node.frontmatter)||void 0===d?void 0:d.thumb)}}var s=e=>{const t=e.count;let n={"--full-width":100/t+"%","--half-width":100/Math.ceil(t/2)+"%","--quarter-width":100/Math.ceil(t/4)+"%"};return o.createElement("div",{className:"project_list-module--projects--af962 "+e.className},e.projects.map((e=>o.createElement("a",{href:e.link,target:"_blank",key:e.id,className:"project_list-module--project--b34f6",style:n},o.createElement("div",{className:"project_list-module--content--5f844"},o.createElement("div",{className:"project_list-module--image_wrapper--74566"},o.createElement(r.G,{className:"project_list-module--image--b05ea",image:e.thumb,alt:"thumbnail"}),o.createElement("div",{className:"project_list-module--overlay--5d8c1"},o.createElement("h2",{className:"project_list-module--heading--5ad99"},e.title),o.createElement("div",{className:"project_list-module--languages--0bce7"},e.languages.map((t=>o.createElement(i.Z,{className:"project_list-module--language_icon--5e033",key:""+e.id+t.id,icon:t.icon,icon_mono:t.icon_mono,alt:t.id,icon_class:"project_list-module--icon--69fe8",icon_mono_class:"project_list-module--icon_mono--7fdf0"})))))),o.createElement("hr",null),o.createElement("div",{className:"project_list-module--text--25836"},o.createElement("p",null,e.description)))))))}},5777:function(e,t,n){n.d(t,{Cp:function(){return i},K:function(){return o},_9:function(){return r},dZ:function(){return a},ki:function(){return c}});const r=1,o=2,c=30,i=40,a=50},8300:function(e,t,n){n.d(t,{M:function(){return r}});const r=new Map([["python",{id:"python",name:"Python",icon:"/icons/python.svg",icon_mono:"/icons/python.svg"}],["cpp",{id:"cpp",name:"C++",icon:"/icons/c-plusplus.svg",icon_mono:"/icons/c-plusplus_mono.svg"}],["typescript",{id:"typescript",name:"TypeScript",icon:"/icons/typescript-icon.svg",icon_mono:"/icons/typescript-icon_mono.svg"}],["java",{id:"java",name:"Java",icon:"/icons/java.svg",icon_mono:"/icons/java.svg"}],["rust",{id:"rust",name:"Rust",icon:"/icons/rust.svg",icon_mono:"/icons/rust.svg"}],["c",{id:"c",name:"C",icon:"/icons/c.svg",icon_mono:"/icons/c.svg"}]])},9962:function(e,t,n){n.d(t,{E:function(){return i}});var r=n(7294),o=n(7896),c=n(7563);const i=e=>t=>r.createElement(o.Location,null,(n=>{let{location:o,navigate:i}=n;return r.createElement(e,Object.assign({},t,{location:o,navigate:i,search:o.search?c.parse(o.search):{}}))}))},2101:function(e,t,n){n.d(t,{CH:function(){return c},Ge:function(){return r},OF:function(){return i},p4:function(){return o}});var r="utils-module--block--dae27",o="utils-module--link--f5973",c="utils-module--main_block--4b45a",i="utils-module--spacer--54e98"},7563:function(e,t,n){const r=n(610),o=n(4020),c=n(500),i=n(2806);function a(e){if("string"!=typeof e||1!==e.length)throw new TypeError("arrayFormatSeparator must be single character string")}function s(e,t){return t.encode?t.strict?r(e):encodeURIComponent(e):e}function l(e,t){return t.decode?o(e):e}function u(e){return Array.isArray(e)?e.sort():"object"==typeof e?u(Object.keys(e)).sort(((e,t)=>Number(e)-Number(t))).map((t=>e[t])):e}function d(e){const t=e.indexOf("#");return-1!==t&&(e=e.slice(0,t)),e}function m(e){const t=(e=d(e)).indexOf("?");return-1===t?"":e.slice(t+1)}function p(e,t){return t.parseNumbers&&!Number.isNaN(Number(e))&&"string"==typeof e&&""!==e.trim()?e=Number(e):!t.parseBooleans||null===e||"true"!==e.toLowerCase()&&"false"!==e.toLowerCase()||(e="true"===e.toLowerCase()),e}function f(e,t){a((t=Object.assign({decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1},t)).arrayFormatSeparator);const n=function(e){let t;switch(e.arrayFormat){case"index":return(e,n,r)=>{t=/\[(\d*)\]$/.exec(e),e=e.replace(/\[\d*\]$/,""),t?(void 0===r[e]&&(r[e]={}),r[e][t[1]]=n):r[e]=n};case"bracket":return(e,n,r)=>{t=/(\[\])$/.exec(e),e=e.replace(/\[\]$/,""),t?void 0!==r[e]?r[e]=[].concat(r[e],n):r[e]=[n]:r[e]=n};case"comma":case"separator":return(t,n,r)=>{const o="string"==typeof n&&n.includes(e.arrayFormatSeparator),c="string"==typeof n&&!o&&l(n,e).includes(e.arrayFormatSeparator);n=c?l(n,e):n;const i=o||c?n.split(e.arrayFormatSeparator).map((t=>l(t,e))):null===n?n:l(n,e);r[t]=i};default:return(e,t,n)=>{void 0!==n[e]?n[e]=[].concat(n[e],t):n[e]=t}}}(t),r=Object.create(null);if("string"!=typeof e)return r;if(!(e=e.trim().replace(/^[?#&]/,"")))return r;for(const o of e.split("&")){if(""===o)continue;let[e,i]=c(t.decode?o.replace(/\+/g," "):o,"=");i=void 0===i?null:["comma","separator"].includes(t.arrayFormat)?i:l(i,t),n(l(e,t),i,r)}for(const o of Object.keys(r)){const e=r[o];if("object"==typeof e&&null!==e)for(const n of Object.keys(e))e[n]=p(e[n],t);else r[o]=p(e,t)}return!1===t.sort?r:(!0===t.sort?Object.keys(r).sort():Object.keys(r).sort(t.sort)).reduce(((e,t)=>{const n=r[t];return Boolean(n)&&"object"==typeof n&&!Array.isArray(n)?e[t]=u(n):e[t]=n,e}),Object.create(null))}t.extract=m,t.parse=f,t.stringify=(e,t)=>{if(!e)return"";a((t=Object.assign({encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:","},t)).arrayFormatSeparator);const n=n=>t.skipNull&&null==e[n]||t.skipEmptyString&&""===e[n],r=function(e){switch(e.arrayFormat){case"index":return t=>(n,r)=>{const o=n.length;return void 0===r||e.skipNull&&null===r||e.skipEmptyString&&""===r?n:null===r?[...n,[s(t,e),"[",o,"]"].join("")]:[...n,[s(t,e),"[",s(o,e),"]=",s(r,e)].join("")]};case"bracket":return t=>(n,r)=>void 0===r||e.skipNull&&null===r||e.skipEmptyString&&""===r?n:null===r?[...n,[s(t,e),"[]"].join("")]:[...n,[s(t,e),"[]=",s(r,e)].join("")];case"comma":case"separator":return t=>(n,r)=>null==r||0===r.length?n:0===n.length?[[s(t,e),"=",s(r,e)].join("")]:[[n,s(r,e)].join(e.arrayFormatSeparator)];default:return t=>(n,r)=>void 0===r||e.skipNull&&null===r||e.skipEmptyString&&""===r?n:null===r?[...n,s(t,e)]:[...n,[s(t,e),"=",s(r,e)].join("")]}}(t),o={};for(const i of Object.keys(e))n(i)||(o[i]=e[i]);const c=Object.keys(o);return!1!==t.sort&&c.sort(t.sort),c.map((n=>{const o=e[n];return void 0===o?"":null===o?s(n,t):Array.isArray(o)?o.reduce(r(n),[]).join("&"):s(n,t)+"="+s(o,t)})).filter((e=>e.length>0)).join("&")},t.parseUrl=(e,t)=>{t=Object.assign({decode:!0},t);const[n,r]=c(e,"#");return Object.assign({url:n.split("?")[0]||"",query:f(m(e),t)},t&&t.parseFragmentIdentifier&&r?{fragmentIdentifier:l(r,t)}:{})},t.stringifyUrl=(e,n)=>{n=Object.assign({encode:!0,strict:!0},n);const r=d(e.url).split("?")[0]||"",o=t.extract(e.url),c=t.parse(o,{sort:!1}),i=Object.assign(c,e.query);let a=t.stringify(i,n);a&&(a=`?${a}`);let l=function(e){let t="";const n=e.indexOf("#");return-1!==n&&(t=e.slice(n)),t}(e.url);return e.fragmentIdentifier&&(l=`#${s(e.fragmentIdentifier,n)}`),`${r}${a}${l}`},t.pick=(e,n,r)=>{r=Object.assign({parseFragmentIdentifier:!0},r);const{url:o,query:c,fragmentIdentifier:a}=t.parseUrl(e,r);return t.stringifyUrl({url:o,query:i(c,n),fragmentIdentifier:a},r)},t.exclude=(e,n,r)=>{const o=Array.isArray(n)?e=>!n.includes(e):(e,t)=>!n(e,t);return t.pick(e,o,r)}},500:function(e){e.exports=(e,t)=>{if("string"!=typeof e||"string"!=typeof t)throw new TypeError("Expected the arguments to be of type `string`");if(""===t)return[e];const n=e.indexOf(t);return-1===n?[e]:[e.slice(0,n),e.slice(n+t.length)]}},610:function(e){e.exports=e=>encodeURIComponent(e).replace(/[!'()*]/g,(e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`))}}]); +//# sourceMappingURL=c804ae579c3e2b4740c8c44db44e41913c869de7-2c42feaa3017eda97d1c.js.map \ No newline at end of file diff --git a/c804ae579c3e2b4740c8c44db44e41913c869de7-2c42feaa3017eda97d1c.js.map b/c804ae579c3e2b4740c8c44db44e41913c869de7-2c42feaa3017eda97d1c.js.map new file mode 100644 index 00000000..f4a1a776 --- /dev/null +++ b/c804ae579c3e2b4740c8c44db44e41913c869de7-2c42feaa3017eda97d1c.js.map @@ -0,0 +1 @@ +{"version":3,"file":"c804ae579c3e2b4740c8c44db44e41913c869de7-2c42feaa3017eda97d1c.js","mappings":"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","sources":["webpack://homepage/./node_modules/decode-uri-component/index.js","webpack://homepage/./node_modules/filter-obj/index.js","webpack://homepage/./src/components/hover_icon.tsx","webpack://homepage/./src/components/project_list.tsx","webpack://homepage/./src/styles/project_list.module.scss","webpack://homepage/./src/utils/consts.tsx","webpack://homepage/./src/utils/languages.tsx","webpack://homepage/./src/utils/with_location.tsx","webpack://homepage/./src/styles/utils.module.scss","webpack://homepage/./node_modules/query-string/index.js","webpack://homepage/./node_modules/split-on-first/index.js","webpack://homepage/./node_modules/strict-uri-encode/index.js"],"sourcesContent":["'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher) || [];\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n","import React from \"react\";\n\nimport * as styles from \"src/styles/hover_icon.module.scss\";\nimport get_mask from \"src/utils/svg_mask\";\n\ninterface HoverIconProps {\n icon: string;\n alt?: string;\n icon_mono?: string;\n className?: string;\n // used to add hover effect to out-of-scope elements\n icon_class?: string;\n icon_mono_class?: string;\n}\nconst HoverIcon = (props: HoverIconProps) => {\n const icon = props.icon;\n const alt = props.alt ? props.alt : \"icon\";\n const icon_mono = props.icon_mono ? props.icon_mono : icon;\n return (\n
\n \n
\n

\n );\n};\nexport default HoverIcon;\n","import { getImage, GatsbyImage, IGatsbyImageData, ImageDataLike } from \"gatsby-plugin-image\";\nimport React from \"react\";\n\nimport * as styles from \"src/styles/project_list.module.scss\";\nimport { Language, languages } from \"src/utils/languages\";\nimport HoverIcon from \"./hover_icon\";\n\nexport type Project = {\n id: number;\n date: string;\n languages: Language[];\n priority: number;\n dependencies: string[];\n description: string;\n slug: string;\n link: string;\n title: string;\n thumb: IGatsbyImageData;\n}\n\nexport function gql_to_project(project: any): Project {\n return {\n id: project.node.id,\n date: project.node.frontmatter?.date,\n languages: project.node.frontmatter?.languages.map((language: string) => languages.get(language)),\n priority: parseInt(project.node.frontmatter?.priority),\n dependencies: project.node.frontmatter?.dependencies,\n description: project.node.frontmatter?.description,\n slug: project.node.frontmatter?.slug,\n link: project.node.frontmatter?.link,\n title: project.node.frontmatter?.title,\n thumb: getImage(project.node.frontmatter?.thumb as ImageDataLike)!,\n };\n}\n\ninterface ProjectListProps {\n projects: Project[];\n count: number;\n className?: string;\n}\nconst ProjectList = (props: ProjectListProps) => {\n const count = props.count;\n const full_width = `${100 / count}%`;\n const half_width = `${100 / Math.ceil(count / 2)}%`;\n const quarter_width = `${100 / Math.ceil(count / 4)}%`;\n let width_properties = {\n \"--full-width\": full_width,\n \"--half-width\": half_width,\n \"--quarter-width\": quarter_width,\n } as React.CSSProperties;\n return (\n );\n};\nexport default ProjectList;\n","// extracted by mini-css-extract-plugin\nexport var content = \"project_list-module--content--5f844\";\nexport var heading = \"project_list-module--heading--5ad99\";\nexport var icon = \"project_list-module--icon--69fe8\";\nexport var icon_mono = \"project_list-module--icon_mono--7fdf0\";\nexport var image = \"project_list-module--image--b05ea\";\nexport var image_wrapper = \"project_list-module--image_wrapper--74566\";\nexport var language_icon = \"project_list-module--language_icon--5e033\";\nexport var languages = \"project_list-module--languages--0bce7\";\nexport var overlay = \"project_list-module--overlay--5d8c1\";\nexport var project = \"project_list-module--project--b34f6\";\nexport var projects = \"project_list-module--projects--af962\";\nexport var text = \"project_list-module--text--25836\";","// highgest priority shown on index\nexport const max_priority_highlight = 1;\n// highest priority shown in project list\nexport const max_priority_list_default = 2;\n// highest priority shown in language specific project list\nexport const max_priority_language_default = 30;\n// highest priority shown in project list when \"show all\" has been selected\n// highest priority shown in language specific project list when \"show all\" has been selected\nexport const max_priority_list_all = 40;\nexport const max_priority_language_all = 50;\n\n// highlight (very impressive):\n// 0 - flagship project\n// 1 - highly polished / very interesting\n\n// projects (impressive):\n// 2 - polished\n// 3 - polished, bad docs\n// 4 - interesting experiment\n// 6 - polished, unmaintained\n\n// language specific projects (not so impressive):\n// 7 - polished, little use\n// 8 - polished, abandoned\n// 9 - unpolished\n// 21 - early stuff\n\n// all projects:\n// 31 - break fourth wall\n// 32 - show off, no use\n// 33 - show off, no use, less interesting\n// 34 - exotic\n// 35 - \"good\" java\n\n// all language specific languages:\n// 41 - unpolished, exotic\n\n// break url:\n// 51 - broken garbage\n\nexport const present_url = \"http://127.0.0.1:8080\";\n\n","export type Language = {\n id: string;\n name: string;\n icon: string;\n icon_mono: string;\n};\n\nexport const languages = new Map([\n [\"python\", {\n id: \"python\",\n name: \"Python\",\n icon: \"/icons/python.svg\",\n icon_mono: \"/icons/python.svg\"\n }],\n [\"cpp\", {\n id: \"cpp\",\n name: \"C++\",\n icon: \"/icons/c-plusplus.svg\",\n icon_mono: \"/icons/c-plusplus_mono.svg\"\n }],\n [\"typescript\", {\n id: \"typescript\",\n name: \"TypeScript\",\n icon: \"/icons/typescript-icon.svg\",\n icon_mono: \"/icons/typescript-icon_mono.svg\"\n }],\n [\"java\", {\n id: \"java\",\n name: \"Java\",\n icon: \"/icons/java.svg\",\n icon_mono: \"/icons/java.svg\"\n }],\n [\"rust\", {\n id: \"rust\",\n name: \"Rust\",\n icon: \"/icons/rust.svg\",\n icon_mono: \"/icons/rust.svg\"\n }],\n [\"c\", {\n id: \"c\",\n name: \"C\",\n icon: \"/icons/c.svg\",\n icon_mono: \"/icons/c.svg\"\n }],\n]);\n","import React from \"react\";\nimport { Location, WindowLocation, NavigateFn } from \"@reach/router\";\nimport queryString from \"query-string\";\n\nexport interface PropsWithLocation {\n location: WindowLocation;\n navigate: NavigateFn;\n search: queryString.ParsedQuery;\n}\n// add location related info to props\nexport const with_location = (ComponentToWrap: React.FC) => (props: any) =>\n \n {({ location, navigate }) => (\n \n )}\n ;\n\n","// extracted by mini-css-extract-plugin\nexport var block = \"utils-module--block--dae27\";\nexport var link = \"utils-module--link--f5973\";\nexport var main_block = \"utils-module--main_block--4b45a\";\nexport var spacer = \"utils-module--spacer--54e98\";","'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (value === null || value === undefined || value.length === 0) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${encode(object.fragmentIdentifier, options)}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n","'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n","'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n"],"names":["token","singleMatcher","RegExp","multiMatcher","decodeComponents","components","split","decodeURIComponent","join","err","length","left","slice","right","Array","prototype","concat","call","decode","input","tokens","match","i","module","exports","encodedURI","TypeError","replace","replaceMap","exec","result","entries","Object","keys","key","customDecodeURIComponent","obj","predicate","ret","isArr","isArray","val","indexOf","props","icon","alt","icon_mono","React","className","styles","icon_class","src","icon_mono_class","style","get_mask","gql_to_project","project","_project$node$frontma","_project$node$frontma2","_project$node$frontma3","_project$node$frontma4","_project$node$frontma5","_project$node$frontma6","_project$node$frontma7","_project$node$frontma8","_project$node$frontma9","id","node","date","frontmatter","languages","map","language","get","priority","parseInt","dependencies","description","slug","link","title","thumb","getImage","count","width_properties","Math","ceil","projects","href","target","GatsbyImage","image","HoverIcon","max_priority_highlight","max_priority_list_default","max_priority_language_default","max_priority_list_all","max_priority_language_all","Map","name","with_location","ComponentToWrap","Location","_ref","location","navigate","assign","search","queryString","block","main_block","spacer","strictUriEncode","decodeComponent","splitOnFirst","filterObject","validateArrayFormatSeparator","value","encode","options","strict","encodeURIComponent","keysSorter","sort","a","b","Number","removeHash","hashStart","extract","queryStart","parseValue","parseNumbers","isNaN","trim","parseBooleans","toLowerCase","parse","query","arrayFormat","arrayFormatSeparator","formatter","accumulator","undefined","includes","isEncodedArray","newValue","item","parserForArrayFormat","create","param","k","reduce","Boolean","stringify","object","shouldFilter","skipNull","skipEmptyString","index","encoderForArrayFormat","objectCopy","filter","x","parseUrl","url","url_","hash","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","queryFromUrl","parsedQueryFromUrl","getHash","pick","exclude","exclusionFilter","string","separator","separatorIndex","str","charCodeAt","toString","toUpperCase"],"sourceRoot":""} \ No newline at end of file diff --git a/chunk-map.json b/chunk-map.json index 091df530..de9607b7 100644 --- a/chunk-map.json +++ b/chunk-map.json @@ -1 +1 @@ -{"app":["/app-9d8349539d1a53475fba.js"],"component---src-pages-404-tsx":["/component---src-pages-404-tsx-0e4184ff774d07ff7424.js"],"component---src-pages-about-tsx":["/component---src-pages-about-tsx-e78dd311a29d07914929.js"],"component---src-pages-articles-tsx":["/component---src-pages-articles-tsx-aee777c739ad265b4b37.js"],"component---src-pages-index-tsx":["/component---src-pages-index-tsx-9ee5b786a2e7b89276c9.js"],"component---src-pages-photography-index-tsx":["/component---src-pages-photography-index-tsx-8d1e8199fe3d0cfa0451.js"],"component---src-pages-photography-leaving-home-tsx":["/component---src-pages-photography-leaving-home-tsx-1d31d0fc72b427f62866.js"],"component---src-pages-photography-to-vanish-tsx":["/component---src-pages-photography-to-vanish-tsx-96906898296e8346f439.js"],"component---src-pages-photography-transient-tsx":["/component---src-pages-photography-transient-tsx-da3c3d6b2e8e37152883.js"],"component---src-pages-privacy-tsx":["/component---src-pages-privacy-tsx-f5b20c36c4a2a18f1f54.js"],"component---src-pages-projects-tsx":["/component---src-pages-projects-tsx-6913816ab911269673c3.js"],"component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md":["/component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md-0dc7578afbe0f6804be1.js"],"component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md":["/component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md-7987ecfa3f60efdef757.js"],"component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md":["/component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md-0fabff1b1842545c8a5d.js"],"component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md":["/component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md-1473237b99aadc49bedc.js"],"component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md":["/component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md-28fdf47d2f96c11d9211.js"],"component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md":["/component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md-c1cd5142d52b0620fa6e.js"],"component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md":["/component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md-6c3758660f2fd26eb3aa.js"],"component---src-templates-projects-language-tsx":["/component---src-templates-projects-language-tsx-cad086841d9502611b71.js"]} \ No newline at end of file +{"app":["/app-5dbf3959725da9267ec3.js"],"component---src-pages-404-tsx":["/component---src-pages-404-tsx-0e4184ff774d07ff7424.js"],"component---src-pages-about-tsx":["/component---src-pages-about-tsx-e78dd311a29d07914929.js"],"component---src-pages-articles-tsx":["/component---src-pages-articles-tsx-aee777c739ad265b4b37.js"],"component---src-pages-index-tsx":["/component---src-pages-index-tsx-ad7c035d82f1d9159f1c.js"],"component---src-pages-photography-index-tsx":["/component---src-pages-photography-index-tsx-8d1e8199fe3d0cfa0451.js"],"component---src-pages-photography-leaving-home-tsx":["/component---src-pages-photography-leaving-home-tsx-1d31d0fc72b427f62866.js"],"component---src-pages-photography-to-vanish-tsx":["/component---src-pages-photography-to-vanish-tsx-96906898296e8346f439.js"],"component---src-pages-photography-transient-tsx":["/component---src-pages-photography-transient-tsx-da3c3d6b2e8e37152883.js"],"component---src-pages-privacy-tsx":["/component---src-pages-privacy-tsx-f5b20c36c4a2a18f1f54.js"],"component---src-pages-projects-tsx":["/component---src-pages-projects-tsx-cf9175c85e5ff3d0840f.js"],"component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md":["/component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md-0dc7578afbe0f6804be1.js"],"component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md":["/component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md-7987ecfa3f60efdef757.js"],"component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md":["/component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md-0fabff1b1842545c8a5d.js"],"component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md":["/component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md-1473237b99aadc49bedc.js"],"component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md":["/component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md-28fdf47d2f96c11d9211.js"],"component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md":["/component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md-c1cd5142d52b0620fa6e.js"],"component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md":["/component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md-6c3758660f2fd26eb3aa.js"],"component---src-templates-projects-language-tsx":["/component---src-templates-projects-language-tsx-0097dee73f39d18c6125.js"]} \ No newline at end of file diff --git a/component---src-pages-index-tsx-9ee5b786a2e7b89276c9.js.map b/component---src-pages-index-tsx-9ee5b786a2e7b89276c9.js.map deleted file mode 100644 index fe2926bc..00000000 --- a/component---src-pages-index-tsx-9ee5b786a2e7b89276c9.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"component---src-pages-index-tsx-9ee5b786a2e7b89276c9.js","mappings":"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","sources":["webpack://homepage/./src/components/article_list.tsx","webpack://homepage/./src/styles/article_list.module.scss","webpack://homepage/./src/components/hover_icon.tsx","webpack://homepage/./src/components/project_list.tsx","webpack://homepage/./src/styles/project_list.module.scss","webpack://homepage/./src/components/sub_heading.tsx","webpack://homepage/./src/styles/home.module.scss","webpack://homepage/./src/pages/index.tsx","webpack://homepage/./src/utils/consts.tsx","webpack://homepage/./src/utils/languages.tsx","webpack://homepage/./src/styles/photography.module.scss","webpack://homepage/./src/styles/utils.module.scss"],"sourcesContent":["import React from \"react\";\nimport { Link } from \"gatsby\";\nimport { getImage, GatsbyImage, IGatsbyImageData, ImageDataLike } from \"gatsby-plugin-image\";\n\nimport * as styles from \"src/styles/article_list.module.scss\";\n\nexport type Article = {\n id: number;\n date: string;\n description: string;\n slug: string;\n title: string;\n thumb: IGatsbyImageData;\n}\n\nexport function gql_to_article(article: any): Article {\n return {\n id: article.node.id,\n date: article.node.frontmatter?.date,\n description: article.node.frontmatter?.description,\n slug: article.node.frontmatter?.slug,\n title: article.node.frontmatter?.title,\n thumb: getImage(article.node.frontmatter?.thumb as ImageDataLike)!,\n };\n}\n\ninterface ArticleListProps {\n articles: Article[];\n className?: string;\n}\nconst ArticleList = (props: ArticleListProps) => {\n return (\n
\n {props.articles.map(article =>\n \n
\n \n
\n
\n
\n

{article.title}

\n
\n
\n {article.description.split(\"\\n\").map((paragraph, idx) =>\n

{paragraph}

\n )}\n
\n
\n\n

{article.date}

\n
\n \n )}\n
\n );\n};\nexport default ArticleList;\n\n","// extracted by mini-css-extract-plugin\nexport var article = \"article_list-module--article--c6401\";\nexport var body = \"article_list-module--body--3e20f\";\nexport var date = \"article_list-module--date--19031\";\nexport var heading = \"article_list-module--heading--a4285\";\nexport var image = \"article_list-module--image--065e9\";","import React from \"react\";\n\nimport * as styles from \"src/styles/hover_icon.module.scss\";\nimport get_mask from \"src/utils/svg_mask\";\n\ninterface HoverIconProps {\n icon: string;\n alt?: string;\n icon_mono?: string;\n className?: string;\n // used to add hover effect to out-of-scope elements\n icon_class?: string;\n icon_mono_class?: string;\n}\nconst HoverIcon = (props: HoverIconProps) => {\n const icon = props.icon;\n const alt = props.alt ? props.alt : \"icon\";\n const icon_mono = props.icon_mono ? props.icon_mono : icon;\n return (\n
\n \n
\n
\n );\n};\nexport default HoverIcon;\n","import { getImage, GatsbyImage, IGatsbyImageData, ImageDataLike } from \"gatsby-plugin-image\";\nimport React from \"react\";\n\nimport * as styles from \"src/styles/project_list.module.scss\";\nimport { Language, languages } from \"src/utils/languages\";\nimport HoverIcon from \"./hover_icon\";\n\nexport type Project = {\n id: number;\n date: string;\n languages: Language[];\n priority: number;\n dependencies: string[];\n description: string;\n slug: string;\n link: string;\n title: string;\n thumb: IGatsbyImageData;\n}\n\nexport function gql_to_project(project: any): Project {\n return {\n id: project.node.id,\n date: project.node.frontmatter?.date,\n languages: project.node.frontmatter?.languages.map((language: string) => languages.get(language)),\n priority: parseInt(project.node.frontmatter?.priority),\n dependencies: project.node.frontmatter?.dependencies,\n description: project.node.frontmatter?.description,\n slug: project.node.frontmatter?.slug,\n link: project.node.frontmatter?.link,\n title: project.node.frontmatter?.title,\n thumb: getImage(project.node.frontmatter?.thumb as ImageDataLike)!,\n };\n}\n\ninterface ProjectListProps {\n projects: Project[];\n count: number;\n className?: string;\n}\nconst ProjectList = (props: ProjectListProps) => {\n const count = props.count;\n const full_width = `${100 / count}%`;\n const half_width = `${100 / Math.ceil(count / 2)}%`;\n const quarter_width = `${100 / Math.ceil(count / 4)}%`;\n let width_properties = {\n \"--full-width\": full_width,\n \"--half-width\": half_width,\n \"--quarter-width\": quarter_width,\n } as React.CSSProperties;\n return (\n );\n};\nexport default ProjectList;\n","// extracted by mini-css-extract-plugin\nexport var content = \"project_list-module--content--5f844\";\nexport var heading = \"project_list-module--heading--5ad99\";\nexport var icon = \"project_list-module--icon--69fe8\";\nexport var icon_mono = \"project_list-module--icon_mono--7fdf0\";\nexport var image = \"project_list-module--image--b05ea\";\nexport var image_wrapper = \"project_list-module--image_wrapper--74566\";\nexport var language_icon = \"project_list-module--language_icon--5e033\";\nexport var languages = \"project_list-module--languages--0bce7\";\nexport var overlay = \"project_list-module--overlay--5d8c1\";\nexport var project = \"project_list-module--project--b34f6\";\nexport var projects = \"project_list-module--projects--af962\";\nexport var text = \"project_list-module--text--25836\";","import React from \"react\";\n\nimport * as styles from \"src/styles/sub_heading.module.scss\";\n\ninterface HeadingProps {\n heading: string;\n className?: string;\n}\nconst SubHeading = (props: HeadingProps) =>\n
\n

\n {props.heading}\n

\n
\n
\n\nexport default SubHeading;\n\n","// extracted by mini-css-extract-plugin\nexport var articles = \"home-module--articles--cac34\";\nexport var container = \"home-module--container--6a3f6\";\nexport var first_con = \"home-module--first_con--2e264\";\nexport var icon = \"home-module--icon--fc95c\";\nexport var language = \"home-module--language--fd6fd\";\nexport var languages = \"home-module--languages--4ea3a\";\nexport var projects = \"home-module--projects--fe5ff\";\nexport var second_con = \"home-module--second_con--fd101\";","import React from \"react\";\nimport { graphql, Link, PageProps } from \"gatsby\";\nimport { getImage, GatsbyImage, IGatsbyImageData, ImageDataLike } from \"gatsby-plugin-image\";\n\nimport Layout from \"src/components/layout\";\nimport SEO from \"src/components/seo\";\nimport ProjectList, { gql_to_project } from \"src/components/project_list\";\nimport ArticleList, { gql_to_article } from \"src/components/article_list\";\nimport * as styles from \"src/styles/home.module.scss\";\nimport * as util_styles from \"src/styles/utils.module.scss\";\nimport * as photography_styles from \"src/styles/photography.module.scss\";\nimport Heading from \"src/components/heading\";\nimport SubHeading from \"src/components/sub_heading\";\nimport HoverIcon from \"src/components/hover_icon\";\nimport { max_priority_highlight } from \"src/utils/consts\";\n\nconst Home = ({ data }: PageProps) => {\n const all_projects = data.projects.edges.map(gql_to_project);\n const projects = all_projects.filter(project => project.priority <= max_priority_highlight);\n\n const all_articles = data.articles.edges.map(gql_to_article);\n const articles = all_articles.slice(0, 4);\n\n return (\n \n \n
\n
\n {/* */}\n \n More Articles\n\n \n \n More Projects\n\n \n\n \n More Photos\n
\n
\n
\n

Main Languages

\n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n
\n );\n};\nexport default Home;\n\nexport const query = graphql`\nquery Home {\n articles: allMdx(\n sort: {frontmatter: {date: DESC}}\n filter: {frontmatter: {type: {eq: \"article\"}, listed: {eq: true}}}\n ) {\n edges {\n node {\n id\n frontmatter {\n slug\n description\n title\n thumb {\n childImageSharp {\n gatsbyImageData(placeholder: BLURRED)\n }\n }\n date(formatString: \"MMMM YYYY\")\n }\n }\n }\n }\n projects: allMdx(\n sort: {frontmatter: {priority: ASC}}\n filter: {frontmatter: {type: {eq: \"project\"}}}\n ) {\n edges {\n node {\n id\n frontmatter {\n languages\n priority\n dependencies\n slug\n link\n description\n title\n thumb {\n childImageSharp {\n gatsbyImageData(placeholder: BLURRED)\n }\n }\n date(formatString: \"MMMM YYYY\")\n }\n }\n }\n }\n photo: file(sourceInstanceName: {eq: \"photography\"}, name: {eq: \"alpha_mike\"}) {\n childImageSharp {\n gatsbyImageData(placeholder: BLURRED)\n }\n }\n}\n`;\n\nexport const Head = () => (\n \n);\n","// highgest priority shown on index\nexport const max_priority_highlight = 1;\n// highest priority shown in project list\nexport const max_priority_list_default = 3;\n// highest priority shown in language specific project list\nexport const max_priority_language_default = 30;\n// highest priority shown in project list when \"show all\" has been selected\n// highest priority shown in language specific project list when \"show all\" has been selected\nexport const max_priority_list_all = 40;\nexport const max_priority_language_all = 50;\n\n// highlight (very impressive):\n// 0 - flagship project\n// 1 - highly polished / very interesting\n\n// projects (impressive):\n// 2 - polished\n// 3 - polished, bad docs\n// 4 - interesting experiment\n// 6 - polished, unmaintained\n\n// language specific projects (not so impressive):\n// 7 - polished, little use\n// 8 - polished, abandoned\n// 9 - unpolished\n// 21 - early stuff\n\n// all projects:\n// 31 - break fourth wall\n// 32 - show off, no use\n// 33 - show off, no use, less interesting\n// 34 - exotic\n// 35 - \"good\" java\n\n// all language specific languages:\n// 41 - unpolished, exotic\n\n// break url:\n// 51 - broken garbage\n\nexport const present_url = \"http://127.0.0.1:8080\";\n\n","export type Language = {\n id: string;\n name: string;\n icon: string;\n icon_mono: string;\n};\n\nexport const languages = new Map([\n [\"python\", {\n id: \"python\",\n name: \"Python\",\n icon: \"/icons/python.svg\",\n icon_mono: \"/icons/python.svg\"\n }],\n [\"cpp\", {\n id: \"cpp\",\n name: \"C++\",\n icon: \"/icons/c-plusplus.svg\",\n icon_mono: \"/icons/c-plusplus_mono.svg\"\n }],\n [\"typescript\", {\n id: \"typescript\",\n name: \"TypeScript\",\n icon: \"/icons/typescript-icon.svg\",\n icon_mono: \"/icons/typescript-icon_mono.svg\"\n }],\n [\"java\", {\n id: \"java\",\n name: \"Java\",\n icon: \"/icons/java.svg\",\n icon_mono: \"/icons/java.svg\"\n }],\n [\"rust\", {\n id: \"rust\",\n name: \"Rust\",\n icon: \"/icons/rust.svg\",\n icon_mono: \"/icons/rust.svg\"\n }],\n]);\n","// extracted by mini-css-extract-plugin\nexport var photo = \"photography-module--photo--faba5\";\nexport var photo_wrapper = \"photography-module--photo_wrapper--4d7ef\";\nexport var photos = \"photography-module--photos--ab385\";\nexport var slim_photo = \"photography-module--slim_photo--1b603\";","// extracted by mini-css-extract-plugin\nexport var block = \"utils-module--block--dae27\";\nexport var link = \"utils-module--link--f5973\";\nexport var main_block = \"utils-module--main_block--4b45a\";\nexport var spacer = \"utils-module--spacer--54e98\";"],"names":["gql_to_article","article","_article$node$frontma","_article$node$frontma2","_article$node$frontma3","_article$node$frontma4","_article$node$frontma5","id","node","date","frontmatter","description","slug","title","thumb","getImage","props","React","className","articles","map","Link","to","key","GatsbyImage","image","alt","split","paragraph","idx","icon","icon_mono","styles","icon_class","src","icon_mono_class","style","get_mask","gql_to_project","project","_project$node$frontma","_project$node$frontma2","_project$node$frontma3","_project$node$frontma4","_project$node$frontma5","_project$node$frontma6","_project$node$frontma7","_project$node$frontma8","_project$node$frontma9","languages","language","get","priority","parseInt","dependencies","link","count","width_properties","Math","ceil","projects","href","target","HoverIcon","heading","_ref","data","edges","filter","max_priority_highlight","slice","Layout","Heading","sub_heading","ArticleList","util_styles","SubHeading","ProjectList","photography_styles","photo","Head","SEO","max_priority_list_default","max_priority_language_default","max_priority_list_all","max_priority_language_all","Map","name","photo_wrapper","photos","slim_photo","block","main_block","spacer"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-index-tsx-9ee5b786a2e7b89276c9.js b/component---src-pages-index-tsx-ad7c035d82f1d9159f1c.js similarity index 75% rename from component---src-pages-index-tsx-9ee5b786a2e7b89276c9.js rename to component---src-pages-index-tsx-ad7c035d82f1d9159f1c.js index ff49ec89..29d3b934 100644 --- a/component---src-pages-index-tsx-9ee5b786a2e7b89276c9.js +++ b/component---src-pages-index-tsx-ad7c035d82f1d9159f1c.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkhomepage=self.webpackChunkhomepage||[]).push([[691],{7813:function(e,t,n){n.d(t,{Z:function(){return r},v:function(){return l}});var o=n(7294),a=n(4160),c=n(8032);function l(e){var t,n,o,a,l;return{id:e.node.id,date:null===(t=e.node.frontmatter)||void 0===t?void 0:t.date,description:null===(n=e.node.frontmatter)||void 0===n?void 0:n.description,slug:null===(o=e.node.frontmatter)||void 0===o?void 0:o.slug,title:null===(a=e.node.frontmatter)||void 0===a?void 0:a.title,thumb:(0,c.c)(null===(l=e.node.frontmatter)||void 0===l?void 0:l.thumb)}}var r=e=>o.createElement("div",{className:e.className},e.articles.map((e=>o.createElement(a.rU,{to:"/articles/"+e.slug,key:e.id,className:"article_list-module--article--c6401"},o.createElement("div",{className:"article_list-module--image--065e9"},o.createElement(c.G,{image:e.thumb,alt:"thumbnail"})),o.createElement("div",{className:"article_list-module--body--3e20f"},o.createElement("div",null,o.createElement("h2",{className:"article_list-module--heading--a4285"},e.title),o.createElement("hr",null),o.createElement("div",null,e.description.split("\n").map(((e,t)=>o.createElement("p",{key:t},e))))),o.createElement("p",{className:"article_list-module--date--19031"},e.date))))))},6669:function(e,t,n){n.d(t,{Z:function(){return c}});var o=n(7294),a=n(9863);var c=e=>{const t=e.icon,n=e.alt?e.alt:"icon",c=e.icon_mono?e.icon_mono:t;return o.createElement("div",{className:"hover_icon-module--icon_wrapper--987b2 "+e.className},o.createElement("img",{className:"hover_icon-module--icon--32e2a "+e.icon_class,src:t,alt:n}),o.createElement("div",{className:"hover_icon-module--icon_mono--d29ed "+e.icon_mono_class,style:(0,a.Z)(c)}))}},9131:function(e,t,n){n.d(t,{Z:function(){return i},_:function(){return r}});var o=n(8032),a=n(7294),c=n(8300),l=n(6669);function r(e){var t,n,a,l,r,i,s,m,u;return{id:e.node.id,date:null===(t=e.node.frontmatter)||void 0===t?void 0:t.date,languages:null===(n=e.node.frontmatter)||void 0===n?void 0:n.languages.map((e=>c.M.get(e))),priority:parseInt(null===(a=e.node.frontmatter)||void 0===a?void 0:a.priority),dependencies:null===(l=e.node.frontmatter)||void 0===l?void 0:l.dependencies,description:null===(r=e.node.frontmatter)||void 0===r?void 0:r.description,slug:null===(i=e.node.frontmatter)||void 0===i?void 0:i.slug,link:null===(s=e.node.frontmatter)||void 0===s?void 0:s.link,title:null===(m=e.node.frontmatter)||void 0===m?void 0:m.title,thumb:(0,o.c)(null===(u=e.node.frontmatter)||void 0===u?void 0:u.thumb)}}var i=e=>{const t=e.count;let n={"--full-width":100/t+"%","--half-width":100/Math.ceil(t/2)+"%","--quarter-width":100/Math.ceil(t/4)+"%"};return a.createElement("div",{className:"project_list-module--projects--af962 "+e.className},e.projects.map((e=>a.createElement("a",{href:e.link,target:"_blank",key:e.id,className:"project_list-module--project--b34f6",style:n},a.createElement("div",{className:"project_list-module--content--5f844"},a.createElement("div",{className:"project_list-module--image_wrapper--74566"},a.createElement(o.G,{className:"project_list-module--image--b05ea",image:e.thumb,alt:"thumbnail"}),a.createElement("div",{className:"project_list-module--overlay--5d8c1"},a.createElement("h2",{className:"project_list-module--heading--5ad99"},e.title),a.createElement("div",{className:"project_list-module--languages--0bce7"},e.languages.map((t=>a.createElement(l.Z,{className:"project_list-module--language_icon--5e033",key:""+e.id+t.id,icon:t.icon,icon_mono:t.icon_mono,alt:t.id,icon_class:"project_list-module--icon--69fe8",icon_mono_class:"project_list-module--icon_mono--7fdf0"})))))),a.createElement("hr",null),a.createElement("div",{className:"project_list-module--text--25836"},a.createElement("p",null,e.description)))))))}},3976:function(e,t,n){n.d(t,{Z:function(){return a}});var o=n(7294);var a=e=>o.createElement("div",{className:"sub_heading-module--sub_heading--57ccd "+e.className},o.createElement("h1",null,e.heading),o.createElement("hr",null))},4329:function(e,t,n){n.r(t),n.d(t,{Head:function(){return E},default:function(){return _}});var o=n(7294),a=n(4160),c=n(8032),l=n(5708),r=n(4001),i=n(9131),s=n(7813),m="home-module--icon--fc95c",u="home-module--language--fd6fd",d=n(2101),p=n(3608),v=n(8337),h=n(3976),f=n(6669),g=n(5777);var _=e=>{let{data:t}=e;const n=t.projects.edges.map(i._).filter((e=>e.priority<=g._9)),r=t.articles.edges.map(s.v).slice(0,4);return o.createElement(l.Z,null,o.createElement(v.Z,{heading:"Hello Smart People!",sub_heading:"I'm Chris."}),o.createElement("div",{className:"home-module--container--6a3f6"},o.createElement("div",{className:"home-module--first_con--2e264"},o.createElement(s.Z,{className:"home-module--articles--cac34",articles:r}),o.createElement(a.rU,{className:d.Ge+" "+d.p4,to:"/articles"},"More Articles"),o.createElement(h.Z,{heading:"Some Projects"}),o.createElement(i.Z,{className:"home-module--projects--fe5ff",projects:n,count:2}),o.createElement(a.rU,{className:d.Ge+" "+d.p4,to:"/projects"},"More Projects"),o.createElement(h.Z,{heading:"Photography"}),o.createElement(a.rU,{to:"/photography"},o.createElement(c.G,{className:p.Ub,image:(0,c.c)(t.photo),alt:"alpha_mike"})),o.createElement(a.rU,{className:d.Ge+" "+d.p4,to:"/photography"},"More Photos")),o.createElement("div",{className:"home-module--second_con--fd101"},o.createElement("div",{className:"home-module--languages--4ea3a"},o.createElement("div",{className:u},o.createElement("h2",null,"Main Languages")),o.createElement(a.rU,{to:"/projects/cpp",className:u},o.createElement(f.Z,{className:m,icon:"/icons/c-plusplus.svg",icon_mono:"/icons/c-plusplus_mono.svg",alt:"C++"})),o.createElement(a.rU,{to:"/projects/rust",className:u},o.createElement(f.Z,{className:m,icon:"/icons/rust.svg",alt:"Rust"})),o.createElement(a.rU,{to:"/projects/typescript",className:u},o.createElement(f.Z,{className:m,icon:"/icons/typescript-icon.svg",icon_mono:"/icons/typescript-icon_mono.svg",alt:"TypeScript"})),o.createElement(a.rU,{to:"/projects/python",className:u},o.createElement(f.Z,{className:m,icon:"/icons/python.svg",alt:"Python"}))))))};const E=()=>o.createElement(r.Z,null)},5777:function(e,t,n){n.d(t,{Cp:function(){return l},K:function(){return a},_9:function(){return o},dZ:function(){return r},ki:function(){return c}});const o=1,a=3,c=30,l=40,r=50},8300:function(e,t,n){n.d(t,{M:function(){return o}});const o=new Map([["python",{id:"python",name:"Python",icon:"/icons/python.svg",icon_mono:"/icons/python.svg"}],["cpp",{id:"cpp",name:"C++",icon:"/icons/c-plusplus.svg",icon_mono:"/icons/c-plusplus_mono.svg"}],["typescript",{id:"typescript",name:"TypeScript",icon:"/icons/typescript-icon.svg",icon_mono:"/icons/typescript-icon_mono.svg"}],["java",{id:"java",name:"Java",icon:"/icons/java.svg",icon_mono:"/icons/java.svg"}],["rust",{id:"rust",name:"Rust",icon:"/icons/rust.svg",icon_mono:"/icons/rust.svg"}]])},3608:function(e,t,n){n.d(t,{Ub:function(){return l},VG:function(){return a},_g:function(){return c},hd:function(){return o}});var o="photography-module--photo--faba5",a="photography-module--photo_wrapper--4d7ef",c="photography-module--photos--ab385",l="photography-module--slim_photo--1b603"},2101:function(e,t,n){n.d(t,{CH:function(){return c},Ge:function(){return o},OF:function(){return l},p4:function(){return a}});var o="utils-module--block--dae27",a="utils-module--link--f5973",c="utils-module--main_block--4b45a",l="utils-module--spacer--54e98"}}]); -//# sourceMappingURL=component---src-pages-index-tsx-9ee5b786a2e7b89276c9.js.map \ No newline at end of file +"use strict";(self.webpackChunkhomepage=self.webpackChunkhomepage||[]).push([[691],{7813:function(e,t,n){n.d(t,{Z:function(){return i},v:function(){return l}});var o=n(7294),a=n(4160),c=n(8032);function l(e){var t,n,o,a,l;return{id:e.node.id,date:null===(t=e.node.frontmatter)||void 0===t?void 0:t.date,description:null===(n=e.node.frontmatter)||void 0===n?void 0:n.description,slug:null===(o=e.node.frontmatter)||void 0===o?void 0:o.slug,title:null===(a=e.node.frontmatter)||void 0===a?void 0:a.title,thumb:(0,c.c)(null===(l=e.node.frontmatter)||void 0===l?void 0:l.thumb)}}var i=e=>o.createElement("div",{className:e.className},e.articles.map((e=>o.createElement(a.rU,{to:"/articles/"+e.slug,key:e.id,className:"article_list-module--article--c6401"},o.createElement("div",{className:"article_list-module--image--065e9"},o.createElement(c.G,{image:e.thumb,alt:"thumbnail"})),o.createElement("div",{className:"article_list-module--body--3e20f"},o.createElement("div",null,o.createElement("h2",{className:"article_list-module--heading--a4285"},e.title),o.createElement("hr",null),o.createElement("div",null,e.description.split("\n").map(((e,t)=>o.createElement("p",{key:t},e))))),o.createElement("p",{className:"article_list-module--date--19031"},e.date))))))},6669:function(e,t,n){n.d(t,{Z:function(){return c}});var o=n(7294),a=n(9863);var c=e=>{const t=e.icon,n=e.alt?e.alt:"icon",c=e.icon_mono?e.icon_mono:t;return o.createElement("div",{className:"hover_icon-module--icon_wrapper--987b2 "+e.className},o.createElement("img",{className:"hover_icon-module--icon--32e2a "+e.icon_class,src:t,alt:n}),o.createElement("div",{className:"hover_icon-module--icon_mono--d29ed "+e.icon_mono_class,style:(0,a.Z)(c)}))}},9131:function(e,t,n){n.d(t,{Z:function(){return r},_:function(){return i}});var o=n(8032),a=n(7294),c=n(8300),l=n(6669);function i(e){var t,n,a,l,i,r,s,m,u;return{id:e.node.id,date:null===(t=e.node.frontmatter)||void 0===t?void 0:t.date,languages:null===(n=e.node.frontmatter)||void 0===n?void 0:n.languages.map((e=>c.M.get(e))),priority:parseInt(null===(a=e.node.frontmatter)||void 0===a?void 0:a.priority),dependencies:null===(l=e.node.frontmatter)||void 0===l?void 0:l.dependencies,description:null===(i=e.node.frontmatter)||void 0===i?void 0:i.description,slug:null===(r=e.node.frontmatter)||void 0===r?void 0:r.slug,link:null===(s=e.node.frontmatter)||void 0===s?void 0:s.link,title:null===(m=e.node.frontmatter)||void 0===m?void 0:m.title,thumb:(0,o.c)(null===(u=e.node.frontmatter)||void 0===u?void 0:u.thumb)}}var r=e=>{const t=e.count;let n={"--full-width":100/t+"%","--half-width":100/Math.ceil(t/2)+"%","--quarter-width":100/Math.ceil(t/4)+"%"};return a.createElement("div",{className:"project_list-module--projects--af962 "+e.className},e.projects.map((e=>a.createElement("a",{href:e.link,target:"_blank",key:e.id,className:"project_list-module--project--b34f6",style:n},a.createElement("div",{className:"project_list-module--content--5f844"},a.createElement("div",{className:"project_list-module--image_wrapper--74566"},a.createElement(o.G,{className:"project_list-module--image--b05ea",image:e.thumb,alt:"thumbnail"}),a.createElement("div",{className:"project_list-module--overlay--5d8c1"},a.createElement("h2",{className:"project_list-module--heading--5ad99"},e.title),a.createElement("div",{className:"project_list-module--languages--0bce7"},e.languages.map((t=>a.createElement(l.Z,{className:"project_list-module--language_icon--5e033",key:""+e.id+t.id,icon:t.icon,icon_mono:t.icon_mono,alt:t.id,icon_class:"project_list-module--icon--69fe8",icon_mono_class:"project_list-module--icon_mono--7fdf0"})))))),a.createElement("hr",null),a.createElement("div",{className:"project_list-module--text--25836"},a.createElement("p",null,e.description)))))))}},3976:function(e,t,n){n.d(t,{Z:function(){return a}});var o=n(7294);var a=e=>o.createElement("div",{className:"sub_heading-module--sub_heading--57ccd "+e.className},o.createElement("h1",null,e.heading),o.createElement("hr",null))},4329:function(e,t,n){n.r(t),n.d(t,{Head:function(){return E},default:function(){return _}});var o=n(7294),a=n(4160),c=n(8032),l=n(5708),i=n(4001),r=n(9131),s=n(7813),m="home-module--icon--fc95c",u="home-module--language--fd6fd",d=n(2101),p=n(3608),v=n(8337),h=n(3976),f=n(6669),g=n(5777);var _=e=>{let{data:t}=e;const n=t.projects.edges.map(r._).filter((e=>e.priority<=g._9)),i=t.articles.edges.map(s.v).slice(0,4);return o.createElement(l.Z,null,o.createElement(v.Z,{heading:"Hello Smart People!",sub_heading:"I'm Chris."}),o.createElement("div",{className:"home-module--container--6a3f6"},o.createElement("div",{className:"home-module--first_con--2e264"},o.createElement(s.Z,{className:"home-module--articles--cac34",articles:i}),o.createElement(a.rU,{className:d.Ge+" "+d.p4,to:"/articles"},"More Articles"),o.createElement(h.Z,{heading:"Some Projects"}),o.createElement(r.Z,{className:"home-module--projects--fe5ff",projects:n,count:2}),o.createElement(a.rU,{className:d.Ge+" "+d.p4,to:"/projects"},"More Projects"),o.createElement(h.Z,{heading:"Photography"}),o.createElement(a.rU,{to:"/photography"},o.createElement(c.G,{className:p.Ub,image:(0,c.c)(t.photo),alt:"alpha_mike"})),o.createElement(a.rU,{className:d.Ge+" "+d.p4,to:"/photography"},"More Photos")),o.createElement("div",{className:"home-module--second_con--fd101"},o.createElement("div",{className:"home-module--languages--4ea3a"},o.createElement("div",{className:u},o.createElement("h2",null,"Main Languages")),o.createElement(a.rU,{to:"/projects/cpp",className:u},o.createElement(f.Z,{className:m,icon:"/icons/c-plusplus.svg",icon_mono:"/icons/c-plusplus_mono.svg",alt:"C++"})),o.createElement(a.rU,{to:"/projects/rust",className:u},o.createElement(f.Z,{className:m,icon:"/icons/rust.svg",alt:"Rust"})),o.createElement(a.rU,{to:"/projects/typescript",className:u},o.createElement(f.Z,{className:m,icon:"/icons/typescript-icon.svg",icon_mono:"/icons/typescript-icon_mono.svg",alt:"TypeScript"})),o.createElement(a.rU,{to:"/projects/python",className:u},o.createElement(f.Z,{className:m,icon:"/icons/python.svg",alt:"Python"}))))))};const E=()=>o.createElement(i.Z,null)},5777:function(e,t,n){n.d(t,{Cp:function(){return l},K:function(){return a},_9:function(){return o},dZ:function(){return i},ki:function(){return c}});const o=1,a=2,c=30,l=40,i=50},8300:function(e,t,n){n.d(t,{M:function(){return o}});const o=new Map([["python",{id:"python",name:"Python",icon:"/icons/python.svg",icon_mono:"/icons/python.svg"}],["cpp",{id:"cpp",name:"C++",icon:"/icons/c-plusplus.svg",icon_mono:"/icons/c-plusplus_mono.svg"}],["typescript",{id:"typescript",name:"TypeScript",icon:"/icons/typescript-icon.svg",icon_mono:"/icons/typescript-icon_mono.svg"}],["java",{id:"java",name:"Java",icon:"/icons/java.svg",icon_mono:"/icons/java.svg"}],["rust",{id:"rust",name:"Rust",icon:"/icons/rust.svg",icon_mono:"/icons/rust.svg"}],["c",{id:"c",name:"C",icon:"/icons/c.svg",icon_mono:"/icons/c.svg"}]])},3608:function(e,t,n){n.d(t,{Ub:function(){return l},VG:function(){return a},_g:function(){return c},hd:function(){return o}});var o="photography-module--photo--faba5",a="photography-module--photo_wrapper--4d7ef",c="photography-module--photos--ab385",l="photography-module--slim_photo--1b603"},2101:function(e,t,n){n.d(t,{CH:function(){return c},Ge:function(){return o},OF:function(){return l},p4:function(){return a}});var o="utils-module--block--dae27",a="utils-module--link--f5973",c="utils-module--main_block--4b45a",l="utils-module--spacer--54e98"}}]); +//# sourceMappingURL=component---src-pages-index-tsx-ad7c035d82f1d9159f1c.js.map \ No newline at end of file diff --git a/component---src-pages-index-tsx-ad7c035d82f1d9159f1c.js.map b/component---src-pages-index-tsx-ad7c035d82f1d9159f1c.js.map new file mode 100644 index 00000000..e43bd3b3 --- /dev/null +++ b/component---src-pages-index-tsx-ad7c035d82f1d9159f1c.js.map @@ -0,0 +1 @@ +{"version":3,"file":"component---src-pages-index-tsx-ad7c035d82f1d9159f1c.js","mappings":"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","sources":["webpack://homepage/./src/components/article_list.tsx","webpack://homepage/./src/styles/article_list.module.scss","webpack://homepage/./src/components/hover_icon.tsx","webpack://homepage/./src/components/project_list.tsx","webpack://homepage/./src/styles/project_list.module.scss","webpack://homepage/./src/components/sub_heading.tsx","webpack://homepage/./src/styles/home.module.scss","webpack://homepage/./src/pages/index.tsx","webpack://homepage/./src/utils/consts.tsx","webpack://homepage/./src/utils/languages.tsx","webpack://homepage/./src/styles/photography.module.scss","webpack://homepage/./src/styles/utils.module.scss"],"sourcesContent":["import React from \"react\";\nimport { Link } from \"gatsby\";\nimport { getImage, GatsbyImage, IGatsbyImageData, ImageDataLike } from \"gatsby-plugin-image\";\n\nimport * as styles from \"src/styles/article_list.module.scss\";\n\nexport type Article = {\n id: number;\n date: string;\n description: string;\n slug: string;\n title: string;\n thumb: IGatsbyImageData;\n}\n\nexport function gql_to_article(article: any): Article {\n return {\n id: article.node.id,\n date: article.node.frontmatter?.date,\n description: article.node.frontmatter?.description,\n slug: article.node.frontmatter?.slug,\n title: article.node.frontmatter?.title,\n thumb: getImage(article.node.frontmatter?.thumb as ImageDataLike)!,\n };\n}\n\ninterface ArticleListProps {\n articles: Article[];\n className?: string;\n}\nconst ArticleList = (props: ArticleListProps) => {\n return (\n
\n {props.articles.map(article =>\n \n
\n \n
\n
\n
\n

{article.title}

\n
\n
\n {article.description.split(\"\\n\").map((paragraph, idx) =>\n

{paragraph}

\n )}\n
\n
\n\n

{article.date}

\n
\n \n )}\n
\n );\n};\nexport default ArticleList;\n\n","// extracted by mini-css-extract-plugin\nexport var article = \"article_list-module--article--c6401\";\nexport var body = \"article_list-module--body--3e20f\";\nexport var date = \"article_list-module--date--19031\";\nexport var heading = \"article_list-module--heading--a4285\";\nexport var image = \"article_list-module--image--065e9\";","import React from \"react\";\n\nimport * as styles from \"src/styles/hover_icon.module.scss\";\nimport get_mask from \"src/utils/svg_mask\";\n\ninterface HoverIconProps {\n icon: string;\n alt?: string;\n icon_mono?: string;\n className?: string;\n // used to add hover effect to out-of-scope elements\n icon_class?: string;\n icon_mono_class?: string;\n}\nconst HoverIcon = (props: HoverIconProps) => {\n const icon = props.icon;\n const alt = props.alt ? props.alt : \"icon\";\n const icon_mono = props.icon_mono ? props.icon_mono : icon;\n return (\n
\n \n
\n \n );\n};\nexport default HoverIcon;\n","import { getImage, GatsbyImage, IGatsbyImageData, ImageDataLike } from \"gatsby-plugin-image\";\nimport React from \"react\";\n\nimport * as styles from \"src/styles/project_list.module.scss\";\nimport { Language, languages } from \"src/utils/languages\";\nimport HoverIcon from \"./hover_icon\";\n\nexport type Project = {\n id: number;\n date: string;\n languages: Language[];\n priority: number;\n dependencies: string[];\n description: string;\n slug: string;\n link: string;\n title: string;\n thumb: IGatsbyImageData;\n}\n\nexport function gql_to_project(project: any): Project {\n return {\n id: project.node.id,\n date: project.node.frontmatter?.date,\n languages: project.node.frontmatter?.languages.map((language: string) => languages.get(language)),\n priority: parseInt(project.node.frontmatter?.priority),\n dependencies: project.node.frontmatter?.dependencies,\n description: project.node.frontmatter?.description,\n slug: project.node.frontmatter?.slug,\n link: project.node.frontmatter?.link,\n title: project.node.frontmatter?.title,\n thumb: getImage(project.node.frontmatter?.thumb as ImageDataLike)!,\n };\n}\n\ninterface ProjectListProps {\n projects: Project[];\n count: number;\n className?: string;\n}\nconst ProjectList = (props: ProjectListProps) => {\n const count = props.count;\n const full_width = `${100 / count}%`;\n const half_width = `${100 / Math.ceil(count / 2)}%`;\n const quarter_width = `${100 / Math.ceil(count / 4)}%`;\n let width_properties = {\n \"--full-width\": full_width,\n \"--half-width\": half_width,\n \"--quarter-width\": quarter_width,\n } as React.CSSProperties;\n return (\n );\n};\nexport default ProjectList;\n","// extracted by mini-css-extract-plugin\nexport var content = \"project_list-module--content--5f844\";\nexport var heading = \"project_list-module--heading--5ad99\";\nexport var icon = \"project_list-module--icon--69fe8\";\nexport var icon_mono = \"project_list-module--icon_mono--7fdf0\";\nexport var image = \"project_list-module--image--b05ea\";\nexport var image_wrapper = \"project_list-module--image_wrapper--74566\";\nexport var language_icon = \"project_list-module--language_icon--5e033\";\nexport var languages = \"project_list-module--languages--0bce7\";\nexport var overlay = \"project_list-module--overlay--5d8c1\";\nexport var project = \"project_list-module--project--b34f6\";\nexport var projects = \"project_list-module--projects--af962\";\nexport var text = \"project_list-module--text--25836\";","import React from \"react\";\n\nimport * as styles from \"src/styles/sub_heading.module.scss\";\n\ninterface HeadingProps {\n heading: string;\n className?: string;\n}\nconst SubHeading = (props: HeadingProps) =>\n
\n

\n {props.heading}\n

\n
\n
\n\nexport default SubHeading;\n\n","// extracted by mini-css-extract-plugin\nexport var articles = \"home-module--articles--cac34\";\nexport var container = \"home-module--container--6a3f6\";\nexport var first_con = \"home-module--first_con--2e264\";\nexport var icon = \"home-module--icon--fc95c\";\nexport var language = \"home-module--language--fd6fd\";\nexport var languages = \"home-module--languages--4ea3a\";\nexport var projects = \"home-module--projects--fe5ff\";\nexport var second_con = \"home-module--second_con--fd101\";","import React from \"react\";\nimport { graphql, Link, PageProps } from \"gatsby\";\nimport { getImage, GatsbyImage, IGatsbyImageData, ImageDataLike } from \"gatsby-plugin-image\";\n\nimport Layout from \"src/components/layout\";\nimport SEO from \"src/components/seo\";\nimport ProjectList, { gql_to_project } from \"src/components/project_list\";\nimport ArticleList, { gql_to_article } from \"src/components/article_list\";\nimport * as styles from \"src/styles/home.module.scss\";\nimport * as util_styles from \"src/styles/utils.module.scss\";\nimport * as photography_styles from \"src/styles/photography.module.scss\";\nimport Heading from \"src/components/heading\";\nimport SubHeading from \"src/components/sub_heading\";\nimport HoverIcon from \"src/components/hover_icon\";\nimport { max_priority_highlight } from \"src/utils/consts\";\n\nconst Home = ({ data }: PageProps) => {\n const all_projects = data.projects.edges.map(gql_to_project);\n const projects = all_projects.filter(project => project.priority <= max_priority_highlight);\n\n const all_articles = data.articles.edges.map(gql_to_article);\n const articles = all_articles.slice(0, 4);\n\n return (\n \n \n
\n
\n {/* */}\n \n More Articles\n\n \n \n More Projects\n\n \n\n \n More Photos\n
\n
\n
\n

Main Languages

\n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n
\n );\n};\nexport default Home;\n\nexport const query = graphql`\nquery Home {\n articles: allMdx(\n sort: {frontmatter: {date: DESC}}\n filter: {frontmatter: {type: {eq: \"article\"}, listed: {eq: true}}}\n ) {\n edges {\n node {\n id\n frontmatter {\n slug\n description\n title\n thumb {\n childImageSharp {\n gatsbyImageData(placeholder: BLURRED)\n }\n }\n date(formatString: \"MMMM YYYY\")\n }\n }\n }\n }\n projects: allMdx(\n sort: {frontmatter: {priority: ASC}}\n filter: {frontmatter: {type: {eq: \"project\"}}}\n ) {\n edges {\n node {\n id\n frontmatter {\n languages\n priority\n dependencies\n slug\n link\n description\n title\n thumb {\n childImageSharp {\n gatsbyImageData(placeholder: BLURRED)\n }\n }\n date(formatString: \"MMMM YYYY\")\n }\n }\n }\n }\n photo: file(sourceInstanceName: {eq: \"photography\"}, name: {eq: \"alpha_mike\"}) {\n childImageSharp {\n gatsbyImageData(placeholder: BLURRED)\n }\n }\n}\n`;\n\nexport const Head = () => (\n \n);\n","// highgest priority shown on index\nexport const max_priority_highlight = 1;\n// highest priority shown in project list\nexport const max_priority_list_default = 2;\n// highest priority shown in language specific project list\nexport const max_priority_language_default = 30;\n// highest priority shown in project list when \"show all\" has been selected\n// highest priority shown in language specific project list when \"show all\" has been selected\nexport const max_priority_list_all = 40;\nexport const max_priority_language_all = 50;\n\n// highlight (very impressive):\n// 0 - flagship project\n// 1 - highly polished / very interesting\n\n// projects (impressive):\n// 2 - polished\n// 3 - polished, bad docs\n// 4 - interesting experiment\n// 6 - polished, unmaintained\n\n// language specific projects (not so impressive):\n// 7 - polished, little use\n// 8 - polished, abandoned\n// 9 - unpolished\n// 21 - early stuff\n\n// all projects:\n// 31 - break fourth wall\n// 32 - show off, no use\n// 33 - show off, no use, less interesting\n// 34 - exotic\n// 35 - \"good\" java\n\n// all language specific languages:\n// 41 - unpolished, exotic\n\n// break url:\n// 51 - broken garbage\n\nexport const present_url = \"http://127.0.0.1:8080\";\n\n","export type Language = {\n id: string;\n name: string;\n icon: string;\n icon_mono: string;\n};\n\nexport const languages = new Map([\n [\"python\", {\n id: \"python\",\n name: \"Python\",\n icon: \"/icons/python.svg\",\n icon_mono: \"/icons/python.svg\"\n }],\n [\"cpp\", {\n id: \"cpp\",\n name: \"C++\",\n icon: \"/icons/c-plusplus.svg\",\n icon_mono: \"/icons/c-plusplus_mono.svg\"\n }],\n [\"typescript\", {\n id: \"typescript\",\n name: \"TypeScript\",\n icon: \"/icons/typescript-icon.svg\",\n icon_mono: \"/icons/typescript-icon_mono.svg\"\n }],\n [\"java\", {\n id: \"java\",\n name: \"Java\",\n icon: \"/icons/java.svg\",\n icon_mono: \"/icons/java.svg\"\n }],\n [\"rust\", {\n id: \"rust\",\n name: \"Rust\",\n icon: \"/icons/rust.svg\",\n icon_mono: \"/icons/rust.svg\"\n }],\n [\"c\", {\n id: \"c\",\n name: \"C\",\n icon: \"/icons/c.svg\",\n icon_mono: \"/icons/c.svg\"\n }],\n]);\n","// extracted by mini-css-extract-plugin\nexport var photo = \"photography-module--photo--faba5\";\nexport var photo_wrapper = \"photography-module--photo_wrapper--4d7ef\";\nexport var photos = \"photography-module--photos--ab385\";\nexport var slim_photo = \"photography-module--slim_photo--1b603\";","// extracted by mini-css-extract-plugin\nexport var block = \"utils-module--block--dae27\";\nexport var link = \"utils-module--link--f5973\";\nexport var main_block = \"utils-module--main_block--4b45a\";\nexport var spacer = \"utils-module--spacer--54e98\";"],"names":["gql_to_article","article","_article$node$frontma","_article$node$frontma2","_article$node$frontma3","_article$node$frontma4","_article$node$frontma5","id","node","date","frontmatter","description","slug","title","thumb","getImage","props","React","className","articles","map","Link","to","key","GatsbyImage","image","alt","split","paragraph","idx","icon","icon_mono","styles","icon_class","src","icon_mono_class","style","get_mask","gql_to_project","project","_project$node$frontma","_project$node$frontma2","_project$node$frontma3","_project$node$frontma4","_project$node$frontma5","_project$node$frontma6","_project$node$frontma7","_project$node$frontma8","_project$node$frontma9","languages","language","get","priority","parseInt","dependencies","link","count","width_properties","Math","ceil","projects","href","target","HoverIcon","heading","_ref","data","edges","filter","max_priority_highlight","slice","Layout","Heading","sub_heading","ArticleList","util_styles","SubHeading","ProjectList","photography_styles","photo","Head","SEO","max_priority_list_default","max_priority_language_default","max_priority_list_all","max_priority_language_all","Map","name","photo_wrapper","photos","slim_photo","block","main_block","spacer"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-projects-tsx-6913816ab911269673c3.js b/component---src-pages-projects-tsx-6913816ab911269673c3.js deleted file mode 100644 index 2c3002d5..00000000 --- a/component---src-pages-projects-tsx-6913816ab911269673c3.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkhomepage=self.webpackChunkhomepage||[]).push([[317],{4020:function(e){var t="%[a-f0-9]{2}",r=new RegExp("("+t+")|([^%]+?)","gi"),n=new RegExp("("+t+")+","gi");function o(e,t){try{return[decodeURIComponent(e.join(""))]}catch(a){}if(1===e.length)return e;t=t||1;var r=e.slice(0,t),n=e.slice(t);return Array.prototype.concat.call([],o(r),o(n))}function a(e){try{return decodeURIComponent(e)}catch(a){for(var t=e.match(r)||[],n=1;n{const t=e.icon,r=e.alt?e.alt:"icon",a=e.icon_mono?e.icon_mono:t;return n.createElement("div",{className:"hover_icon-module--icon_wrapper--987b2 "+e.className},n.createElement("img",{className:"hover_icon-module--icon--32e2a "+e.icon_class,src:t,alt:r}),n.createElement("div",{className:"hover_icon-module--icon_mono--d29ed "+e.icon_mono_class,style:(0,o.Z)(a)}))}},9131:function(e,t,r){r.d(t,{Z:function(){return s},_:function(){return i}});var n=r(8032),o=r(7294),a=r(8300),c=r(6669);function i(e){var t,r,o,c,i,s,l,u,p;return{id:e.node.id,date:null===(t=e.node.frontmatter)||void 0===t?void 0:t.date,languages:null===(r=e.node.frontmatter)||void 0===r?void 0:r.languages.map((e=>a.M.get(e))),priority:parseInt(null===(o=e.node.frontmatter)||void 0===o?void 0:o.priority),dependencies:null===(c=e.node.frontmatter)||void 0===c?void 0:c.dependencies,description:null===(i=e.node.frontmatter)||void 0===i?void 0:i.description,slug:null===(s=e.node.frontmatter)||void 0===s?void 0:s.slug,link:null===(l=e.node.frontmatter)||void 0===l?void 0:l.link,title:null===(u=e.node.frontmatter)||void 0===u?void 0:u.title,thumb:(0,n.c)(null===(p=e.node.frontmatter)||void 0===p?void 0:p.thumb)}}var s=e=>{const t=e.count;let r={"--full-width":100/t+"%","--half-width":100/Math.ceil(t/2)+"%","--quarter-width":100/Math.ceil(t/4)+"%"};return o.createElement("div",{className:"project_list-module--projects--af962 "+e.className},e.projects.map((e=>o.createElement("a",{href:e.link,target:"_blank",key:e.id,className:"project_list-module--project--b34f6",style:r},o.createElement("div",{className:"project_list-module--content--5f844"},o.createElement("div",{className:"project_list-module--image_wrapper--74566"},o.createElement(n.G,{className:"project_list-module--image--b05ea",image:e.thumb,alt:"thumbnail"}),o.createElement("div",{className:"project_list-module--overlay--5d8c1"},o.createElement("h2",{className:"project_list-module--heading--5ad99"},e.title),o.createElement("div",{className:"project_list-module--languages--0bce7"},e.languages.map((t=>o.createElement(c.Z,{className:"project_list-module--language_icon--5e033",key:""+e.id+t.id,icon:t.icon,icon_mono:t.icon_mono,alt:t.id,icon_class:"project_list-module--icon--69fe8",icon_mono_class:"project_list-module--icon_mono--7fdf0"})))))),o.createElement("hr",null),o.createElement("div",{className:"project_list-module--text--25836"},o.createElement("p",null,e.description)))))))}},7166:function(e,t,r){r.r(t),r.d(t,{Head:function(){return p}});var n=r(7294),o=r(4160),a=r(5708),c=r(4001),i=r(9131),s=r(2101),l=r(5777),u=r(9962);t.default=(0,u.E)((e=>{let{data:t,search:r}=e;const c=null!=r.max_priority?parseInt(r.max_priority):l.K,u=t.allMdx.edges.map(i._).filter((e=>e.priority<=c));return n.createElement(a.Z,{heading:c>=l.Cp?"All Projects":"Projects"},n.createElement(i.Z,{projects:u,count:3}),cn.createElement(c.Z,{heading:"Projects"})},5777:function(e,t,r){r.d(t,{Cp:function(){return c},K:function(){return o},_9:function(){return n},dZ:function(){return i},ki:function(){return a}});const n=1,o=3,a=30,c=40,i=50},8300:function(e,t,r){r.d(t,{M:function(){return n}});const n=new Map([["python",{id:"python",name:"Python",icon:"/icons/python.svg",icon_mono:"/icons/python.svg"}],["cpp",{id:"cpp",name:"C++",icon:"/icons/c-plusplus.svg",icon_mono:"/icons/c-plusplus_mono.svg"}],["typescript",{id:"typescript",name:"TypeScript",icon:"/icons/typescript-icon.svg",icon_mono:"/icons/typescript-icon_mono.svg"}],["java",{id:"java",name:"Java",icon:"/icons/java.svg",icon_mono:"/icons/java.svg"}],["rust",{id:"rust",name:"Rust",icon:"/icons/rust.svg",icon_mono:"/icons/rust.svg"}]])},9962:function(e,t,r){r.d(t,{E:function(){return c}});var n=r(7294),o=r(7896),a=r(7563);const c=e=>t=>n.createElement(o.Location,null,(r=>{let{location:o,navigate:c}=r;return n.createElement(e,Object.assign({},t,{location:o,navigate:c,search:o.search?a.parse(o.search):{}}))}))},2101:function(e,t,r){r.d(t,{CH:function(){return a},Ge:function(){return n},OF:function(){return c},p4:function(){return o}});var n="utils-module--block--dae27",o="utils-module--link--f5973",a="utils-module--main_block--4b45a",c="utils-module--spacer--54e98"},7563:function(e,t,r){const n=r(610),o=r(4020),a=r(500),c=r(2806);function i(e){if("string"!=typeof e||1!==e.length)throw new TypeError("arrayFormatSeparator must be single character string")}function s(e,t){return t.encode?t.strict?n(e):encodeURIComponent(e):e}function l(e,t){return t.decode?o(e):e}function u(e){return Array.isArray(e)?e.sort():"object"==typeof e?u(Object.keys(e)).sort(((e,t)=>Number(e)-Number(t))).map((t=>e[t])):e}function p(e){const t=e.indexOf("#");return-1!==t&&(e=e.slice(0,t)),e}function d(e){const t=(e=p(e)).indexOf("?");return-1===t?"":e.slice(t+1)}function m(e,t){return t.parseNumbers&&!Number.isNaN(Number(e))&&"string"==typeof e&&""!==e.trim()?e=Number(e):!t.parseBooleans||null===e||"true"!==e.toLowerCase()&&"false"!==e.toLowerCase()||(e="true"===e.toLowerCase()),e}function f(e,t){i((t=Object.assign({decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1},t)).arrayFormatSeparator);const r=function(e){let t;switch(e.arrayFormat){case"index":return(e,r,n)=>{t=/\[(\d*)\]$/.exec(e),e=e.replace(/\[\d*\]$/,""),t?(void 0===n[e]&&(n[e]={}),n[e][t[1]]=r):n[e]=r};case"bracket":return(e,r,n)=>{t=/(\[\])$/.exec(e),e=e.replace(/\[\]$/,""),t?void 0!==n[e]?n[e]=[].concat(n[e],r):n[e]=[r]:n[e]=r};case"comma":case"separator":return(t,r,n)=>{const o="string"==typeof r&&r.includes(e.arrayFormatSeparator),a="string"==typeof r&&!o&&l(r,e).includes(e.arrayFormatSeparator);r=a?l(r,e):r;const c=o||a?r.split(e.arrayFormatSeparator).map((t=>l(t,e))):null===r?r:l(r,e);n[t]=c};default:return(e,t,r)=>{void 0!==r[e]?r[e]=[].concat(r[e],t):r[e]=t}}}(t),n=Object.create(null);if("string"!=typeof e)return n;if(!(e=e.trim().replace(/^[?#&]/,"")))return n;for(const o of e.split("&")){if(""===o)continue;let[e,c]=a(t.decode?o.replace(/\+/g," "):o,"=");c=void 0===c?null:["comma","separator"].includes(t.arrayFormat)?c:l(c,t),r(l(e,t),c,n)}for(const o of Object.keys(n)){const e=n[o];if("object"==typeof e&&null!==e)for(const r of Object.keys(e))e[r]=m(e[r],t);else n[o]=m(e,t)}return!1===t.sort?n:(!0===t.sort?Object.keys(n).sort():Object.keys(n).sort(t.sort)).reduce(((e,t)=>{const r=n[t];return Boolean(r)&&"object"==typeof r&&!Array.isArray(r)?e[t]=u(r):e[t]=r,e}),Object.create(null))}t.extract=d,t.parse=f,t.stringify=(e,t)=>{if(!e)return"";i((t=Object.assign({encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:","},t)).arrayFormatSeparator);const r=r=>t.skipNull&&null==e[r]||t.skipEmptyString&&""===e[r],n=function(e){switch(e.arrayFormat){case"index":return t=>(r,n)=>{const o=r.length;return void 0===n||e.skipNull&&null===n||e.skipEmptyString&&""===n?r:null===n?[...r,[s(t,e),"[",o,"]"].join("")]:[...r,[s(t,e),"[",s(o,e),"]=",s(n,e)].join("")]};case"bracket":return t=>(r,n)=>void 0===n||e.skipNull&&null===n||e.skipEmptyString&&""===n?r:null===n?[...r,[s(t,e),"[]"].join("")]:[...r,[s(t,e),"[]=",s(n,e)].join("")];case"comma":case"separator":return t=>(r,n)=>null==n||0===n.length?r:0===r.length?[[s(t,e),"=",s(n,e)].join("")]:[[r,s(n,e)].join(e.arrayFormatSeparator)];default:return t=>(r,n)=>void 0===n||e.skipNull&&null===n||e.skipEmptyString&&""===n?r:null===n?[...r,s(t,e)]:[...r,[s(t,e),"=",s(n,e)].join("")]}}(t),o={};for(const c of Object.keys(e))r(c)||(o[c]=e[c]);const a=Object.keys(o);return!1!==t.sort&&a.sort(t.sort),a.map((r=>{const o=e[r];return void 0===o?"":null===o?s(r,t):Array.isArray(o)?o.reduce(n(r),[]).join("&"):s(r,t)+"="+s(o,t)})).filter((e=>e.length>0)).join("&")},t.parseUrl=(e,t)=>{t=Object.assign({decode:!0},t);const[r,n]=a(e,"#");return Object.assign({url:r.split("?")[0]||"",query:f(d(e),t)},t&&t.parseFragmentIdentifier&&n?{fragmentIdentifier:l(n,t)}:{})},t.stringifyUrl=(e,r)=>{r=Object.assign({encode:!0,strict:!0},r);const n=p(e.url).split("?")[0]||"",o=t.extract(e.url),a=t.parse(o,{sort:!1}),c=Object.assign(a,e.query);let i=t.stringify(c,r);i&&(i=`?${i}`);let l=function(e){let t="";const r=e.indexOf("#");return-1!==r&&(t=e.slice(r)),t}(e.url);return e.fragmentIdentifier&&(l=`#${s(e.fragmentIdentifier,r)}`),`${n}${i}${l}`},t.pick=(e,r,n)=>{n=Object.assign({parseFragmentIdentifier:!0},n);const{url:o,query:a,fragmentIdentifier:i}=t.parseUrl(e,n);return t.stringifyUrl({url:o,query:c(a,r),fragmentIdentifier:i},n)},t.exclude=(e,r,n)=>{const o=Array.isArray(r)?e=>!r.includes(e):(e,t)=>!r(e,t);return t.pick(e,o,n)}},500:function(e){e.exports=(e,t)=>{if("string"!=typeof e||"string"!=typeof t)throw new TypeError("Expected the arguments to be of type `string`");if(""===t)return[e];const r=e.indexOf(t);return-1===r?[e]:[e.slice(0,r),e.slice(r+t.length)]}},610:function(e){e.exports=e=>encodeURIComponent(e).replace(/[!'()*]/g,(e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`))}}]); -//# sourceMappingURL=component---src-pages-projects-tsx-6913816ab911269673c3.js.map \ No newline at end of file diff --git a/component---src-pages-projects-tsx-6913816ab911269673c3.js.map b/component---src-pages-projects-tsx-6913816ab911269673c3.js.map deleted file mode 100644 index ffd12cfd..00000000 --- a/component---src-pages-projects-tsx-6913816ab911269673c3.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"component---src-pages-projects-tsx-6913816ab911269673c3.js","mappings":"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","sources":["webpack://homepage/./node_modules/decode-uri-component/index.js","webpack://homepage/./node_modules/filter-obj/index.js","webpack://homepage/./src/components/hover_icon.tsx","webpack://homepage/./src/components/project_list.tsx","webpack://homepage/./src/styles/project_list.module.scss","webpack://homepage/./src/pages/projects.tsx","webpack://homepage/./src/utils/consts.tsx","webpack://homepage/./src/utils/languages.tsx","webpack://homepage/./src/utils/with_location.tsx","webpack://homepage/./src/styles/utils.module.scss","webpack://homepage/./node_modules/query-string/index.js","webpack://homepage/./node_modules/split-on-first/index.js","webpack://homepage/./node_modules/strict-uri-encode/index.js"],"sourcesContent":["'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher) || [];\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n","import React from \"react\";\n\nimport * as styles from \"src/styles/hover_icon.module.scss\";\nimport get_mask from \"src/utils/svg_mask\";\n\ninterface HoverIconProps {\n icon: string;\n alt?: string;\n icon_mono?: string;\n className?: string;\n // used to add hover effect to out-of-scope elements\n icon_class?: string;\n icon_mono_class?: string;\n}\nconst HoverIcon = (props: HoverIconProps) => {\n const icon = props.icon;\n const alt = props.alt ? props.alt : \"icon\";\n const icon_mono = props.icon_mono ? props.icon_mono : icon;\n return (\n
\n \n
\n \n );\n};\nexport default HoverIcon;\n","import { getImage, GatsbyImage, IGatsbyImageData, ImageDataLike } from \"gatsby-plugin-image\";\nimport React from \"react\";\n\nimport * as styles from \"src/styles/project_list.module.scss\";\nimport { Language, languages } from \"src/utils/languages\";\nimport HoverIcon from \"./hover_icon\";\n\nexport type Project = {\n id: number;\n date: string;\n languages: Language[];\n priority: number;\n dependencies: string[];\n description: string;\n slug: string;\n link: string;\n title: string;\n thumb: IGatsbyImageData;\n}\n\nexport function gql_to_project(project: any): Project {\n return {\n id: project.node.id,\n date: project.node.frontmatter?.date,\n languages: project.node.frontmatter?.languages.map((language: string) => languages.get(language)),\n priority: parseInt(project.node.frontmatter?.priority),\n dependencies: project.node.frontmatter?.dependencies,\n description: project.node.frontmatter?.description,\n slug: project.node.frontmatter?.slug,\n link: project.node.frontmatter?.link,\n title: project.node.frontmatter?.title,\n thumb: getImage(project.node.frontmatter?.thumb as ImageDataLike)!,\n };\n}\n\ninterface ProjectListProps {\n projects: Project[];\n count: number;\n className?: string;\n}\nconst ProjectList = (props: ProjectListProps) => {\n const count = props.count;\n const full_width = `${100 / count}%`;\n const half_width = `${100 / Math.ceil(count / 2)}%`;\n const quarter_width = `${100 / Math.ceil(count / 4)}%`;\n let width_properties = {\n \"--full-width\": full_width,\n \"--half-width\": half_width,\n \"--quarter-width\": quarter_width,\n } as React.CSSProperties;\n return (\n );\n};\nexport default ProjectList;\n","// extracted by mini-css-extract-plugin\nexport var content = \"project_list-module--content--5f844\";\nexport var heading = \"project_list-module--heading--5ad99\";\nexport var icon = \"project_list-module--icon--69fe8\";\nexport var icon_mono = \"project_list-module--icon_mono--7fdf0\";\nexport var image = \"project_list-module--image--b05ea\";\nexport var image_wrapper = \"project_list-module--image_wrapper--74566\";\nexport var language_icon = \"project_list-module--language_icon--5e033\";\nexport var languages = \"project_list-module--languages--0bce7\";\nexport var overlay = \"project_list-module--overlay--5d8c1\";\nexport var project = \"project_list-module--project--b34f6\";\nexport var projects = \"project_list-module--projects--af962\";\nexport var text = \"project_list-module--text--25836\";","import React from \"react\";\nimport { Link, graphql } from \"gatsby\";\n\nimport Layout from \"src/components/layout\";\nimport SEO from \"src/components/seo\";\nimport ProjectList, { gql_to_project } from \"src/components/project_list\";\nimport * as util_styles from \"src/styles/utils.module.scss\";\nimport { max_priority_list_default, max_priority_list_all } from \"src/utils/consts\";\nimport { with_location, PropsWithLocation } from \"src/utils/with_location\";\n\ninterface ProjectsProps extends PropsWithLocation {\n data: Queries.ProjectsQuery;\n}\nconst Projects = ({ data, search }: ProjectsProps) => {\n const max_priority = search.max_priority != null ? parseInt(search.max_priority as string) : max_priority_list_default;\n const all_projects = data.allMdx.edges.map(gql_to_project);\n const projects = all_projects.filter(project => project.priority <= max_priority);\n\n return (\n = max_priority_list_all ? \"All Projects\" : \"Projects\"}>\n \n {max_priority < max_priority_list_all ? Show All : undefined}\n \n );\n};\nexport default with_location(Projects);\n\nexport const query = graphql`\nquery Projects {\n allMdx(\n sort: {frontmatter: {priority: ASC}}\n filter: {frontmatter: {type: {eq: \"project\"}}}\n ) {\n edges {\n node {\n id\n frontmatter {\n languages\n priority\n dependencies\n slug\n link\n description\n title\n thumb {\n childImageSharp {\n gatsbyImageData(placeholder: BLURRED)\n }\n }\n date(formatString: \"MMMM YYYY\")\n }\n }\n }\n }\n}\n`;\n\nexport const Head = () => (\n \n);\n","// highgest priority shown on index\nexport const max_priority_highlight = 1;\n// highest priority shown in project list\nexport const max_priority_list_default = 3;\n// highest priority shown in language specific project list\nexport const max_priority_language_default = 30;\n// highest priority shown in project list when \"show all\" has been selected\n// highest priority shown in language specific project list when \"show all\" has been selected\nexport const max_priority_list_all = 40;\nexport const max_priority_language_all = 50;\n\n// highlight (very impressive):\n// 0 - flagship project\n// 1 - highly polished / very interesting\n\n// projects (impressive):\n// 2 - polished\n// 3 - polished, bad docs\n// 4 - interesting experiment\n// 6 - polished, unmaintained\n\n// language specific projects (not so impressive):\n// 7 - polished, little use\n// 8 - polished, abandoned\n// 9 - unpolished\n// 21 - early stuff\n\n// all projects:\n// 31 - break fourth wall\n// 32 - show off, no use\n// 33 - show off, no use, less interesting\n// 34 - exotic\n// 35 - \"good\" java\n\n// all language specific languages:\n// 41 - unpolished, exotic\n\n// break url:\n// 51 - broken garbage\n\nexport const present_url = \"http://127.0.0.1:8080\";\n\n","export type Language = {\n id: string;\n name: string;\n icon: string;\n icon_mono: string;\n};\n\nexport const languages = new Map([\n [\"python\", {\n id: \"python\",\n name: \"Python\",\n icon: \"/icons/python.svg\",\n icon_mono: \"/icons/python.svg\"\n }],\n [\"cpp\", {\n id: \"cpp\",\n name: \"C++\",\n icon: \"/icons/c-plusplus.svg\",\n icon_mono: \"/icons/c-plusplus_mono.svg\"\n }],\n [\"typescript\", {\n id: \"typescript\",\n name: \"TypeScript\",\n icon: \"/icons/typescript-icon.svg\",\n icon_mono: \"/icons/typescript-icon_mono.svg\"\n }],\n [\"java\", {\n id: \"java\",\n name: \"Java\",\n icon: \"/icons/java.svg\",\n icon_mono: \"/icons/java.svg\"\n }],\n [\"rust\", {\n id: \"rust\",\n name: \"Rust\",\n icon: \"/icons/rust.svg\",\n icon_mono: \"/icons/rust.svg\"\n }],\n]);\n","import React from \"react\";\nimport { Location, WindowLocation, NavigateFn } from \"@reach/router\";\nimport queryString from \"query-string\";\n\nexport interface PropsWithLocation {\n location: WindowLocation;\n navigate: NavigateFn;\n search: queryString.ParsedQuery;\n}\n// add location related info to props\nexport const with_location = (ComponentToWrap: React.FC) => (props: any) =>\n \n {({ location, navigate }) => (\n \n )}\n ;\n\n","// extracted by mini-css-extract-plugin\nexport var block = \"utils-module--block--dae27\";\nexport var link = \"utils-module--link--f5973\";\nexport var main_block = \"utils-module--main_block--4b45a\";\nexport var spacer = \"utils-module--spacer--54e98\";","'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (value === null || value === undefined || value.length === 0) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${encode(object.fragmentIdentifier, options)}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n","'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n","'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n"],"names":["token","singleMatcher","RegExp","multiMatcher","decodeComponents","components","split","decodeURIComponent","join","err","length","left","slice","right","Array","prototype","concat","call","decode","input","tokens","match","i","module","exports","encodedURI","TypeError","replace","replaceMap","exec","result","entries","Object","keys","key","customDecodeURIComponent","obj","predicate","ret","isArr","isArray","val","indexOf","props","icon","alt","icon_mono","React","className","styles","icon_class","src","icon_mono_class","style","get_mask","gql_to_project","project","_project$node$frontma","_project$node$frontma2","_project$node$frontma3","_project$node$frontma4","_project$node$frontma5","_project$node$frontma6","_project$node$frontma7","_project$node$frontma8","_project$node$frontma9","id","node","date","frontmatter","languages","map","language","get","priority","parseInt","dependencies","description","slug","link","title","thumb","getImage","count","width_properties","Math","ceil","projects","href","target","GatsbyImage","image","HoverIcon","with_location","_ref","data","search","max_priority","max_priority_list_default","allMdx","edges","filter","Layout","heading","max_priority_list_all","ProjectList","Link","util_styles","to","undefined","Head","SEO","max_priority_highlight","max_priority_language_default","max_priority_language_all","Map","name","ComponentToWrap","Location","location","navigate","assign","queryString","block","main_block","spacer","strictUriEncode","decodeComponent","splitOnFirst","filterObject","validateArrayFormatSeparator","value","encode","options","strict","encodeURIComponent","keysSorter","sort","a","b","Number","removeHash","hashStart","extract","queryStart","parseValue","parseNumbers","isNaN","trim","parseBooleans","toLowerCase","parse","query","arrayFormat","arrayFormatSeparator","formatter","accumulator","includes","isEncodedArray","newValue","item","parserForArrayFormat","create","param","k","reduce","Boolean","stringify","object","shouldFilter","skipNull","skipEmptyString","index","encoderForArrayFormat","objectCopy","x","parseUrl","url","url_","hash","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","queryFromUrl","parsedQueryFromUrl","getHash","pick","exclude","exclusionFilter","string","separator","separatorIndex","str","charCodeAt","toString","toUpperCase"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-projects-tsx-cf9175c85e5ff3d0840f.js b/component---src-pages-projects-tsx-cf9175c85e5ff3d0840f.js new file mode 100644 index 00000000..fa9b96c1 --- /dev/null +++ b/component---src-pages-projects-tsx-cf9175c85e5ff3d0840f.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkhomepage=self.webpackChunkhomepage||[]).push([[317],{7166:function(e,t,r){r.r(t),r.d(t,{Head:function(){return m}});var a=r(7294),c=r(4160),n=r(5708),o=r(4001),l=r(9131),p=r(2101),s=r(5777),i=r(9962);t.default=(0,i.E)((e=>{let{data:t,search:r}=e;const o=null!=r.max_priority?parseInt(r.max_priority):s.K,i=t.allMdx.edges.map(l._).filter((e=>e.priority<=o));return a.createElement(n.Z,{heading:o>=s.Cp?"All Projects":"Projects"},a.createElement(l.Z,{projects:i,count:3}),oa.createElement(o.Z,{heading:"Projects"})}}]); +//# sourceMappingURL=component---src-pages-projects-tsx-cf9175c85e5ff3d0840f.js.map \ No newline at end of file diff --git a/component---src-pages-projects-tsx-cf9175c85e5ff3d0840f.js.map b/component---src-pages-projects-tsx-cf9175c85e5ff3d0840f.js.map new file mode 100644 index 00000000..ebf69e63 --- /dev/null +++ b/component---src-pages-projects-tsx-cf9175c85e5ff3d0840f.js.map @@ -0,0 +1 @@ +{"version":3,"file":"component---src-pages-projects-tsx-cf9175c85e5ff3d0840f.js","mappings":"uOAyBA,WAAeA,EAAAA,EAAAA,IAZEC,IAAqC,IAApC,KAAEC,EAAI,OAAEC,GAAuBF,EAC7C,MAAMG,EAAsC,MAAvBD,EAAOC,aAAuBC,SAASF,EAAOC,cAA0BE,EAAAA,EAEvFC,EADeL,EAAKM,OAAOC,MAAMC,IAAIC,EAAAA,GACbC,QAAOC,GAAWA,EAAQC,UAAYV,IAEpE,OACIW,EAAAA,cAACC,EAAAA,EAAM,CAACC,QAASb,GAAgBc,EAAAA,GAAwB,eAAiB,YACtEH,EAAAA,cAACI,EAAAA,EAAW,CAACZ,SAAUA,EAAUa,MAAO,IACvChB,EAAec,EAAAA,GAAwBH,EAAAA,cAACM,EAAAA,GAAI,CAACC,UAAcC,EAAAA,GAAiB,IAAIA,EAAAA,GAAoBC,GAAE,0BAA4BN,EAAAA,IAAyB,iBAAkBO,EACxK,IAKX,MA8BMC,EAAOA,IAChBX,EAAAA,cAACY,EAAAA,EAAG,CAACV,QAAQ,Y","sources":["webpack://homepage/./src/pages/projects.tsx"],"sourcesContent":["import React from \"react\";\nimport { Link, graphql } from \"gatsby\";\n\nimport Layout from \"src/components/layout\";\nimport SEO from \"src/components/seo\";\nimport ProjectList, { gql_to_project } from \"src/components/project_list\";\nimport * as util_styles from \"src/styles/utils.module.scss\";\nimport { max_priority_list_default, max_priority_list_all } from \"src/utils/consts\";\nimport { with_location, PropsWithLocation } from \"src/utils/with_location\";\n\ninterface ProjectsProps extends PropsWithLocation {\n data: Queries.ProjectsQuery;\n}\nconst Projects = ({ data, search }: ProjectsProps) => {\n const max_priority = search.max_priority != null ? parseInt(search.max_priority as string) : max_priority_list_default;\n const all_projects = data.allMdx.edges.map(gql_to_project);\n const projects = all_projects.filter(project => project.priority <= max_priority);\n\n return (\n = max_priority_list_all ? \"All Projects\" : \"Projects\"}>\n \n {max_priority < max_priority_list_all ? Show All : undefined}\n \n );\n};\nexport default with_location(Projects);\n\nexport const query = graphql`\nquery Projects {\n allMdx(\n sort: {frontmatter: {priority: ASC}}\n filter: {frontmatter: {type: {eq: \"project\"}}}\n ) {\n edges {\n node {\n id\n frontmatter {\n languages\n priority\n dependencies\n slug\n link\n description\n title\n thumb {\n childImageSharp {\n gatsbyImageData(placeholder: BLURRED)\n }\n }\n date(formatString: \"MMMM YYYY\")\n }\n }\n }\n }\n}\n`;\n\nexport const Head = () => (\n \n);\n"],"names":["with_location","_ref","data","search","max_priority","parseInt","max_priority_list_default","projects","allMdx","edges","map","gql_to_project","filter","project","priority","React","Layout","heading","max_priority_list_all","ProjectList","count","Link","className","util_styles","to","undefined","Head","SEO"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-templates-projects-language-tsx-0097dee73f39d18c6125.js b/component---src-templates-projects-language-tsx-0097dee73f39d18c6125.js new file mode 100644 index 00000000..84c27b63 --- /dev/null +++ b/component---src-templates-projects-language-tsx-0097dee73f39d18c6125.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkhomepage=self.webpackChunkhomepage||[]).push([[18],{3983:function(e,t,a){a.r(t),a.d(t,{Head:function(){return u}});var r=a(7294),n=a(4160),o=a(5708),c=a(9131),s=a(2101),i=a(8300),l=a(9962),p=a(5777),m=a(4001);t.default=(0,l.E)((e=>{let{data:t,pageContext:a,search:l}=e;const m=null!=l.max_priority?parseInt(l.max_priority):p.ki,u=t.allMdx.edges.map(c._).filter((e=>e.priority<=m)),d=a.language,g=i.M.get(d);return r.createElement(o.Z,{heading:g.name+" Projects",sub_heading:"java"==d?" You found an easter egg!":"",icon:g.icon_mono},r.createElement(c.Z,{projects:u,count:3}),r.createElement(n.rU,{className:s.Ge+" "+s.p4,to:"/projects"},"Other Projects"),mr.createElement(m.Z,{heading:"Projects"})}}]); +//# sourceMappingURL=component---src-templates-projects-language-tsx-0097dee73f39d18c6125.js.map \ No newline at end of file diff --git a/component---src-templates-projects-language-tsx-0097dee73f39d18c6125.js.map b/component---src-templates-projects-language-tsx-0097dee73f39d18c6125.js.map new file mode 100644 index 00000000..9d9f2b34 --- /dev/null +++ b/component---src-templates-projects-language-tsx-0097dee73f39d18c6125.js.map @@ -0,0 +1 @@ +{"version":3,"file":"component---src-templates-projects-language-tsx-0097dee73f39d18c6125.js","mappings":"gPA+BA,WAAeA,EAAAA,EAAAA,IAfUC,IAA0D,IAAzD,KAAEC,EAAI,YAAEC,EAAW,OAAEC,GAA+BH,EAC1E,MAAMI,EAAsC,MAAvBD,EAAOC,aAAuBC,SAASF,EAAOC,cAA0BE,EAAAA,GAGvFC,EADeN,EAAKO,OAAOC,MAAMC,IAAIC,EAAAA,GACbC,QAAOC,GAAWA,EAAQC,UAAYV,IAC9DW,EAAuBb,EAAYc,SACnCC,EAAoBC,EAAAA,EAAUC,IAAIJ,GAExC,OACIK,EAAAA,cAACC,EAAAA,EAAM,CAACC,QAAYL,EAAkBM,KAAI,YAAaC,YAAqC,QAAxBT,EAAiC,4BAA8B,GAAIU,KAAMR,EAAkBS,WAC3JN,EAAAA,cAACO,EAAAA,EAAW,CAACpB,SAAUA,EAAUqB,MAAO,IACxCR,EAAAA,cAACS,EAAAA,GAAI,CAACC,UAAcC,EAAAA,GAAiB,IAAIA,EAAAA,GAAoBC,GAAG,aAAY,kBAC3E5B,EAAe6B,EAAAA,GAA4Bb,EAAAA,cAACS,EAAAA,GAAI,CAACC,UAAcC,EAAAA,GAAiB,IAAIA,EAAAA,GAAoBC,GAAE,aAAef,EAAkBiB,GAAE,iBAAiBD,EAAAA,IAA6B,iBAAkBE,EACxM,IAIX,MA8BMC,EAAOA,IAChBhB,EAAAA,cAACiB,EAAAA,EAAG,CAACf,QAAQ,Y","sources":["webpack://homepage/./src/templates/projects_language.tsx"],"sourcesContent":["import React from \"react\";\nimport { Link, graphql } from \"gatsby\";\n\nimport Layout from \"src/components/layout\";\nimport ProjectList, { gql_to_project } from \"src/components/project_list\";\nimport * as util_styles from \"src/styles/utils.module.scss\";\nimport { languages } from \"src/utils/languages\";\nimport { with_location, PropsWithLocation } from \"src/utils/with_location\";\nimport { max_priority_language_default, max_priority_language_all } from \"src/utils/consts\";\nimport SEO from \"src/components/seo\";\n\ninterface ProjectsLanguageProps extends PropsWithLocation {\n data: Queries.ProjectsLanguageQuery;\n // TODO: better type\n pageContext: Record;\n}\nconst ProjectsLanguage = ({ data, pageContext, search }: ProjectsLanguageProps) => {\n const max_priority = search.max_priority != null ? parseInt(search.max_priority as string) : max_priority_language_default;\n\n const all_projects = data.allMdx.edges.map(gql_to_project);\n const projects = all_projects.filter(project => project.priority <= max_priority);\n const selected_language_id = pageContext.language;\n const selected_language = languages.get(selected_language_id)!;\n\n return (\n \n \n Other Projects\n {max_priority < max_priority_language_all ? Show All : undefined}\n );\n};\nexport default with_location(ProjectsLanguage);\n\nexport const query = graphql`\nquery ProjectsLanguage($language: [String]) {\n allMdx(\n sort: {frontmatter: {priority: ASC}}\n filter: {frontmatter: {type: {eq: \"project\"}, languages: {in: $language}}}\n ) {\n edges {\n node {\n id\n frontmatter {\n languages\n priority\n dependencies\n slug\n link\n description\n title\n thumb {\n childImageSharp {\n gatsbyImageData(placeholder: BLURRED)\n }\n }\n date(formatString: \"MMMM YYYY\")\n }\n }\n }\n }\n}\n`;\n\nexport const Head = () => (\n \n);\n"],"names":["with_location","_ref","data","pageContext","search","max_priority","parseInt","max_priority_language_default","projects","allMdx","edges","map","gql_to_project","filter","project","priority","selected_language_id","language","selected_language","languages","get","React","Layout","heading","name","sub_heading","icon","icon_mono","ProjectList","count","Link","className","util_styles","to","max_priority_language_all","id","undefined","Head","SEO"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-templates-projects-language-tsx-cad086841d9502611b71.js b/component---src-templates-projects-language-tsx-cad086841d9502611b71.js deleted file mode 100644 index b7ce959d..00000000 --- a/component---src-templates-projects-language-tsx-cad086841d9502611b71.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkhomepage=self.webpackChunkhomepage||[]).push([[18],{4020:function(e){var t="%[a-f0-9]{2}",r=new RegExp("("+t+")|([^%]+?)","gi"),n=new RegExp("("+t+")+","gi");function o(e,t){try{return[decodeURIComponent(e.join(""))]}catch(a){}if(1===e.length)return e;t=t||1;var r=e.slice(0,t),n=e.slice(t);return Array.prototype.concat.call([],o(r),o(n))}function a(e){try{return decodeURIComponent(e)}catch(a){for(var t=e.match(r)||[],n=1;n{const t=e.icon,r=e.alt?e.alt:"icon",a=e.icon_mono?e.icon_mono:t;return n.createElement("div",{className:"hover_icon-module--icon_wrapper--987b2 "+e.className},n.createElement("img",{className:"hover_icon-module--icon--32e2a "+e.icon_class,src:t,alt:r}),n.createElement("div",{className:"hover_icon-module--icon_mono--d29ed "+e.icon_mono_class,style:(0,o.Z)(a)}))}},9131:function(e,t,r){r.d(t,{Z:function(){return s},_:function(){return i}});var n=r(8032),o=r(7294),a=r(8300),c=r(6669);function i(e){var t,r,o,c,i,s,l,u,d;return{id:e.node.id,date:null===(t=e.node.frontmatter)||void 0===t?void 0:t.date,languages:null===(r=e.node.frontmatter)||void 0===r?void 0:r.languages.map((e=>a.M.get(e))),priority:parseInt(null===(o=e.node.frontmatter)||void 0===o?void 0:o.priority),dependencies:null===(c=e.node.frontmatter)||void 0===c?void 0:c.dependencies,description:null===(i=e.node.frontmatter)||void 0===i?void 0:i.description,slug:null===(s=e.node.frontmatter)||void 0===s?void 0:s.slug,link:null===(l=e.node.frontmatter)||void 0===l?void 0:l.link,title:null===(u=e.node.frontmatter)||void 0===u?void 0:u.title,thumb:(0,n.c)(null===(d=e.node.frontmatter)||void 0===d?void 0:d.thumb)}}var s=e=>{const t=e.count;let r={"--full-width":100/t+"%","--half-width":100/Math.ceil(t/2)+"%","--quarter-width":100/Math.ceil(t/4)+"%"};return o.createElement("div",{className:"project_list-module--projects--af962 "+e.className},e.projects.map((e=>o.createElement("a",{href:e.link,target:"_blank",key:e.id,className:"project_list-module--project--b34f6",style:r},o.createElement("div",{className:"project_list-module--content--5f844"},o.createElement("div",{className:"project_list-module--image_wrapper--74566"},o.createElement(n.G,{className:"project_list-module--image--b05ea",image:e.thumb,alt:"thumbnail"}),o.createElement("div",{className:"project_list-module--overlay--5d8c1"},o.createElement("h2",{className:"project_list-module--heading--5ad99"},e.title),o.createElement("div",{className:"project_list-module--languages--0bce7"},e.languages.map((t=>o.createElement(c.Z,{className:"project_list-module--language_icon--5e033",key:""+e.id+t.id,icon:t.icon,icon_mono:t.icon_mono,alt:t.id,icon_class:"project_list-module--icon--69fe8",icon_mono_class:"project_list-module--icon_mono--7fdf0"})))))),o.createElement("hr",null),o.createElement("div",{className:"project_list-module--text--25836"},o.createElement("p",null,e.description)))))))}},3983:function(e,t,r){r.r(t),r.d(t,{Head:function(){return p}});var n=r(7294),o=r(4160),a=r(5708),c=r(9131),i=r(2101),s=r(8300),l=r(9962),u=r(5777),d=r(4001);t.default=(0,l.E)((e=>{let{data:t,pageContext:r,search:l}=e;const d=null!=l.max_priority?parseInt(l.max_priority):u.ki,p=t.allMdx.edges.map(c._).filter((e=>e.priority<=d)),m=r.language,f=s.M.get(m);return n.createElement(a.Z,{heading:f.name+" Projects",sub_heading:"java"==m?" You found an easter egg!":"",icon:f.icon_mono},n.createElement(c.Z,{projects:p,count:3}),n.createElement(o.rU,{className:i.Ge+" "+i.p4,to:"/projects"},"Other Projects"),dn.createElement(d.Z,{heading:"Projects"})},5777:function(e,t,r){r.d(t,{Cp:function(){return c},K:function(){return o},_9:function(){return n},dZ:function(){return i},ki:function(){return a}});const n=1,o=3,a=30,c=40,i=50},8300:function(e,t,r){r.d(t,{M:function(){return n}});const n=new Map([["python",{id:"python",name:"Python",icon:"/icons/python.svg",icon_mono:"/icons/python.svg"}],["cpp",{id:"cpp",name:"C++",icon:"/icons/c-plusplus.svg",icon_mono:"/icons/c-plusplus_mono.svg"}],["typescript",{id:"typescript",name:"TypeScript",icon:"/icons/typescript-icon.svg",icon_mono:"/icons/typescript-icon_mono.svg"}],["java",{id:"java",name:"Java",icon:"/icons/java.svg",icon_mono:"/icons/java.svg"}],["rust",{id:"rust",name:"Rust",icon:"/icons/rust.svg",icon_mono:"/icons/rust.svg"}]])},9962:function(e,t,r){r.d(t,{E:function(){return c}});var n=r(7294),o=r(7896),a=r(7563);const c=e=>t=>n.createElement(o.Location,null,(r=>{let{location:o,navigate:c}=r;return n.createElement(e,Object.assign({},t,{location:o,navigate:c,search:o.search?a.parse(o.search):{}}))}))},2101:function(e,t,r){r.d(t,{CH:function(){return a},Ge:function(){return n},OF:function(){return c},p4:function(){return o}});var n="utils-module--block--dae27",o="utils-module--link--f5973",a="utils-module--main_block--4b45a",c="utils-module--spacer--54e98"},7563:function(e,t,r){const n=r(610),o=r(4020),a=r(500),c=r(2806);function i(e){if("string"!=typeof e||1!==e.length)throw new TypeError("arrayFormatSeparator must be single character string")}function s(e,t){return t.encode?t.strict?n(e):encodeURIComponent(e):e}function l(e,t){return t.decode?o(e):e}function u(e){return Array.isArray(e)?e.sort():"object"==typeof e?u(Object.keys(e)).sort(((e,t)=>Number(e)-Number(t))).map((t=>e[t])):e}function d(e){const t=e.indexOf("#");return-1!==t&&(e=e.slice(0,t)),e}function p(e){const t=(e=d(e)).indexOf("?");return-1===t?"":e.slice(t+1)}function m(e,t){return t.parseNumbers&&!Number.isNaN(Number(e))&&"string"==typeof e&&""!==e.trim()?e=Number(e):!t.parseBooleans||null===e||"true"!==e.toLowerCase()&&"false"!==e.toLowerCase()||(e="true"===e.toLowerCase()),e}function f(e,t){i((t=Object.assign({decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1},t)).arrayFormatSeparator);const r=function(e){let t;switch(e.arrayFormat){case"index":return(e,r,n)=>{t=/\[(\d*)\]$/.exec(e),e=e.replace(/\[\d*\]$/,""),t?(void 0===n[e]&&(n[e]={}),n[e][t[1]]=r):n[e]=r};case"bracket":return(e,r,n)=>{t=/(\[\])$/.exec(e),e=e.replace(/\[\]$/,""),t?void 0!==n[e]?n[e]=[].concat(n[e],r):n[e]=[r]:n[e]=r};case"comma":case"separator":return(t,r,n)=>{const o="string"==typeof r&&r.includes(e.arrayFormatSeparator),a="string"==typeof r&&!o&&l(r,e).includes(e.arrayFormatSeparator);r=a?l(r,e):r;const c=o||a?r.split(e.arrayFormatSeparator).map((t=>l(t,e))):null===r?r:l(r,e);n[t]=c};default:return(e,t,r)=>{void 0!==r[e]?r[e]=[].concat(r[e],t):r[e]=t}}}(t),n=Object.create(null);if("string"!=typeof e)return n;if(!(e=e.trim().replace(/^[?#&]/,"")))return n;for(const o of e.split("&")){if(""===o)continue;let[e,c]=a(t.decode?o.replace(/\+/g," "):o,"=");c=void 0===c?null:["comma","separator"].includes(t.arrayFormat)?c:l(c,t),r(l(e,t),c,n)}for(const o of Object.keys(n)){const e=n[o];if("object"==typeof e&&null!==e)for(const r of Object.keys(e))e[r]=m(e[r],t);else n[o]=m(e,t)}return!1===t.sort?n:(!0===t.sort?Object.keys(n).sort():Object.keys(n).sort(t.sort)).reduce(((e,t)=>{const r=n[t];return Boolean(r)&&"object"==typeof r&&!Array.isArray(r)?e[t]=u(r):e[t]=r,e}),Object.create(null))}t.extract=p,t.parse=f,t.stringify=(e,t)=>{if(!e)return"";i((t=Object.assign({encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:","},t)).arrayFormatSeparator);const r=r=>t.skipNull&&null==e[r]||t.skipEmptyString&&""===e[r],n=function(e){switch(e.arrayFormat){case"index":return t=>(r,n)=>{const o=r.length;return void 0===n||e.skipNull&&null===n||e.skipEmptyString&&""===n?r:null===n?[...r,[s(t,e),"[",o,"]"].join("")]:[...r,[s(t,e),"[",s(o,e),"]=",s(n,e)].join("")]};case"bracket":return t=>(r,n)=>void 0===n||e.skipNull&&null===n||e.skipEmptyString&&""===n?r:null===n?[...r,[s(t,e),"[]"].join("")]:[...r,[s(t,e),"[]=",s(n,e)].join("")];case"comma":case"separator":return t=>(r,n)=>null==n||0===n.length?r:0===r.length?[[s(t,e),"=",s(n,e)].join("")]:[[r,s(n,e)].join(e.arrayFormatSeparator)];default:return t=>(r,n)=>void 0===n||e.skipNull&&null===n||e.skipEmptyString&&""===n?r:null===n?[...r,s(t,e)]:[...r,[s(t,e),"=",s(n,e)].join("")]}}(t),o={};for(const c of Object.keys(e))r(c)||(o[c]=e[c]);const a=Object.keys(o);return!1!==t.sort&&a.sort(t.sort),a.map((r=>{const o=e[r];return void 0===o?"":null===o?s(r,t):Array.isArray(o)?o.reduce(n(r),[]).join("&"):s(r,t)+"="+s(o,t)})).filter((e=>e.length>0)).join("&")},t.parseUrl=(e,t)=>{t=Object.assign({decode:!0},t);const[r,n]=a(e,"#");return Object.assign({url:r.split("?")[0]||"",query:f(p(e),t)},t&&t.parseFragmentIdentifier&&n?{fragmentIdentifier:l(n,t)}:{})},t.stringifyUrl=(e,r)=>{r=Object.assign({encode:!0,strict:!0},r);const n=d(e.url).split("?")[0]||"",o=t.extract(e.url),a=t.parse(o,{sort:!1}),c=Object.assign(a,e.query);let i=t.stringify(c,r);i&&(i=`?${i}`);let l=function(e){let t="";const r=e.indexOf("#");return-1!==r&&(t=e.slice(r)),t}(e.url);return e.fragmentIdentifier&&(l=`#${s(e.fragmentIdentifier,r)}`),`${n}${i}${l}`},t.pick=(e,r,n)=>{n=Object.assign({parseFragmentIdentifier:!0},n);const{url:o,query:a,fragmentIdentifier:i}=t.parseUrl(e,n);return t.stringifyUrl({url:o,query:c(a,r),fragmentIdentifier:i},n)},t.exclude=(e,r,n)=>{const o=Array.isArray(r)?e=>!r.includes(e):(e,t)=>!r(e,t);return t.pick(e,o,n)}},500:function(e){e.exports=(e,t)=>{if("string"!=typeof e||"string"!=typeof t)throw new TypeError("Expected the arguments to be of type `string`");if(""===t)return[e];const r=e.indexOf(t);return-1===r?[e]:[e.slice(0,r),e.slice(r+t.length)]}},610:function(e){e.exports=e=>encodeURIComponent(e).replace(/[!'()*]/g,(e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`))}}]); -//# sourceMappingURL=component---src-templates-projects-language-tsx-cad086841d9502611b71.js.map \ No newline at end of file diff --git a/component---src-templates-projects-language-tsx-cad086841d9502611b71.js.map b/component---src-templates-projects-language-tsx-cad086841d9502611b71.js.map deleted file mode 100644 index f30a1205..00000000 --- a/component---src-templates-projects-language-tsx-cad086841d9502611b71.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"component---src-templates-projects-language-tsx-cad086841d9502611b71.js","mappings":"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","sources":["webpack://homepage/./node_modules/decode-uri-component/index.js","webpack://homepage/./node_modules/filter-obj/index.js","webpack://homepage/./src/components/hover_icon.tsx","webpack://homepage/./src/components/project_list.tsx","webpack://homepage/./src/styles/project_list.module.scss","webpack://homepage/./src/templates/projects_language.tsx","webpack://homepage/./src/utils/consts.tsx","webpack://homepage/./src/utils/languages.tsx","webpack://homepage/./src/utils/with_location.tsx","webpack://homepage/./src/styles/utils.module.scss","webpack://homepage/./node_modules/query-string/index.js","webpack://homepage/./node_modules/split-on-first/index.js","webpack://homepage/./node_modules/strict-uri-encode/index.js"],"sourcesContent":["'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher) || [];\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n","import React from \"react\";\n\nimport * as styles from \"src/styles/hover_icon.module.scss\";\nimport get_mask from \"src/utils/svg_mask\";\n\ninterface HoverIconProps {\n icon: string;\n alt?: string;\n icon_mono?: string;\n className?: string;\n // used to add hover effect to out-of-scope elements\n icon_class?: string;\n icon_mono_class?: string;\n}\nconst HoverIcon = (props: HoverIconProps) => {\n const icon = props.icon;\n const alt = props.alt ? props.alt : \"icon\";\n const icon_mono = props.icon_mono ? props.icon_mono : icon;\n return (\n
\n \n
\n \n );\n};\nexport default HoverIcon;\n","import { getImage, GatsbyImage, IGatsbyImageData, ImageDataLike } from \"gatsby-plugin-image\";\nimport React from \"react\";\n\nimport * as styles from \"src/styles/project_list.module.scss\";\nimport { Language, languages } from \"src/utils/languages\";\nimport HoverIcon from \"./hover_icon\";\n\nexport type Project = {\n id: number;\n date: string;\n languages: Language[];\n priority: number;\n dependencies: string[];\n description: string;\n slug: string;\n link: string;\n title: string;\n thumb: IGatsbyImageData;\n}\n\nexport function gql_to_project(project: any): Project {\n return {\n id: project.node.id,\n date: project.node.frontmatter?.date,\n languages: project.node.frontmatter?.languages.map((language: string) => languages.get(language)),\n priority: parseInt(project.node.frontmatter?.priority),\n dependencies: project.node.frontmatter?.dependencies,\n description: project.node.frontmatter?.description,\n slug: project.node.frontmatter?.slug,\n link: project.node.frontmatter?.link,\n title: project.node.frontmatter?.title,\n thumb: getImage(project.node.frontmatter?.thumb as ImageDataLike)!,\n };\n}\n\ninterface ProjectListProps {\n projects: Project[];\n count: number;\n className?: string;\n}\nconst ProjectList = (props: ProjectListProps) => {\n const count = props.count;\n const full_width = `${100 / count}%`;\n const half_width = `${100 / Math.ceil(count / 2)}%`;\n const quarter_width = `${100 / Math.ceil(count / 4)}%`;\n let width_properties = {\n \"--full-width\": full_width,\n \"--half-width\": half_width,\n \"--quarter-width\": quarter_width,\n } as React.CSSProperties;\n return (\n );\n};\nexport default ProjectList;\n","// extracted by mini-css-extract-plugin\nexport var content = \"project_list-module--content--5f844\";\nexport var heading = \"project_list-module--heading--5ad99\";\nexport var icon = \"project_list-module--icon--69fe8\";\nexport var icon_mono = \"project_list-module--icon_mono--7fdf0\";\nexport var image = \"project_list-module--image--b05ea\";\nexport var image_wrapper = \"project_list-module--image_wrapper--74566\";\nexport var language_icon = \"project_list-module--language_icon--5e033\";\nexport var languages = \"project_list-module--languages--0bce7\";\nexport var overlay = \"project_list-module--overlay--5d8c1\";\nexport var project = \"project_list-module--project--b34f6\";\nexport var projects = \"project_list-module--projects--af962\";\nexport var text = \"project_list-module--text--25836\";","import React from \"react\";\nimport { Link, graphql } from \"gatsby\";\n\nimport Layout from \"src/components/layout\";\nimport ProjectList, { gql_to_project } from \"src/components/project_list\";\nimport * as util_styles from \"src/styles/utils.module.scss\";\nimport { languages } from \"src/utils/languages\";\nimport { with_location, PropsWithLocation } from \"src/utils/with_location\";\nimport { max_priority_language_default, max_priority_language_all } from \"src/utils/consts\";\nimport SEO from \"src/components/seo\";\n\ninterface ProjectsLanguageProps extends PropsWithLocation {\n data: Queries.ProjectsLanguageQuery;\n // TODO: better type\n pageContext: Record;\n}\nconst ProjectsLanguage = ({ data, pageContext, search }: ProjectsLanguageProps) => {\n const max_priority = search.max_priority != null ? parseInt(search.max_priority as string) : max_priority_language_default;\n\n const all_projects = data.allMdx.edges.map(gql_to_project);\n const projects = all_projects.filter(project => project.priority <= max_priority);\n const selected_language_id = pageContext.language;\n const selected_language = languages.get(selected_language_id)!;\n\n return (\n \n \n Other Projects\n {max_priority < max_priority_language_all ? Show All : undefined}\n );\n};\nexport default with_location(ProjectsLanguage);\n\nexport const query = graphql`\nquery ProjectsLanguage($language: [String]) {\n allMdx(\n sort: {frontmatter: {priority: ASC}}\n filter: {frontmatter: {type: {eq: \"project\"}, languages: {in: $language}}}\n ) {\n edges {\n node {\n id\n frontmatter {\n languages\n priority\n dependencies\n slug\n link\n description\n title\n thumb {\n childImageSharp {\n gatsbyImageData(placeholder: BLURRED)\n }\n }\n date(formatString: \"MMMM YYYY\")\n }\n }\n }\n }\n}\n`;\n\nexport const Head = () => (\n \n);\n","// highgest priority shown on index\nexport const max_priority_highlight = 1;\n// highest priority shown in project list\nexport const max_priority_list_default = 3;\n// highest priority shown in language specific project list\nexport const max_priority_language_default = 30;\n// highest priority shown in project list when \"show all\" has been selected\n// highest priority shown in language specific project list when \"show all\" has been selected\nexport const max_priority_list_all = 40;\nexport const max_priority_language_all = 50;\n\n// highlight (very impressive):\n// 0 - flagship project\n// 1 - highly polished / very interesting\n\n// projects (impressive):\n// 2 - polished\n// 3 - polished, bad docs\n// 4 - interesting experiment\n// 6 - polished, unmaintained\n\n// language specific projects (not so impressive):\n// 7 - polished, little use\n// 8 - polished, abandoned\n// 9 - unpolished\n// 21 - early stuff\n\n// all projects:\n// 31 - break fourth wall\n// 32 - show off, no use\n// 33 - show off, no use, less interesting\n// 34 - exotic\n// 35 - \"good\" java\n\n// all language specific languages:\n// 41 - unpolished, exotic\n\n// break url:\n// 51 - broken garbage\n\nexport const present_url = \"http://127.0.0.1:8080\";\n\n","export type Language = {\n id: string;\n name: string;\n icon: string;\n icon_mono: string;\n};\n\nexport const languages = new Map([\n [\"python\", {\n id: \"python\",\n name: \"Python\",\n icon: \"/icons/python.svg\",\n icon_mono: \"/icons/python.svg\"\n }],\n [\"cpp\", {\n id: \"cpp\",\n name: \"C++\",\n icon: \"/icons/c-plusplus.svg\",\n icon_mono: \"/icons/c-plusplus_mono.svg\"\n }],\n [\"typescript\", {\n id: \"typescript\",\n name: \"TypeScript\",\n icon: \"/icons/typescript-icon.svg\",\n icon_mono: \"/icons/typescript-icon_mono.svg\"\n }],\n [\"java\", {\n id: \"java\",\n name: \"Java\",\n icon: \"/icons/java.svg\",\n icon_mono: \"/icons/java.svg\"\n }],\n [\"rust\", {\n id: \"rust\",\n name: \"Rust\",\n icon: \"/icons/rust.svg\",\n icon_mono: \"/icons/rust.svg\"\n }],\n]);\n","import React from \"react\";\nimport { Location, WindowLocation, NavigateFn } from \"@reach/router\";\nimport queryString from \"query-string\";\n\nexport interface PropsWithLocation {\n location: WindowLocation;\n navigate: NavigateFn;\n search: queryString.ParsedQuery;\n}\n// add location related info to props\nexport const with_location = (ComponentToWrap: React.FC) => (props: any) =>\n \n {({ location, navigate }) => (\n \n )}\n ;\n\n","// extracted by mini-css-extract-plugin\nexport var block = \"utils-module--block--dae27\";\nexport var link = \"utils-module--link--f5973\";\nexport var main_block = \"utils-module--main_block--4b45a\";\nexport var spacer = \"utils-module--spacer--54e98\";","'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (value === null || value === undefined || value.length === 0) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${encode(object.fragmentIdentifier, options)}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n","'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n","'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n"],"names":["token","singleMatcher","RegExp","multiMatcher","decodeComponents","components","split","decodeURIComponent","join","err","length","left","slice","right","Array","prototype","concat","call","decode","input","tokens","match","i","module","exports","encodedURI","TypeError","replace","replaceMap","exec","result","entries","Object","keys","key","customDecodeURIComponent","obj","predicate","ret","isArr","isArray","val","indexOf","props","icon","alt","icon_mono","React","className","styles","icon_class","src","icon_mono_class","style","get_mask","gql_to_project","project","_project$node$frontma","_project$node$frontma2","_project$node$frontma3","_project$node$frontma4","_project$node$frontma5","_project$node$frontma6","_project$node$frontma7","_project$node$frontma8","_project$node$frontma9","id","node","date","frontmatter","languages","map","language","get","priority","parseInt","dependencies","description","slug","link","title","thumb","getImage","count","width_properties","Math","ceil","projects","href","target","GatsbyImage","image","HoverIcon","with_location","_ref","data","pageContext","search","max_priority","max_priority_language_default","allMdx","edges","filter","selected_language_id","selected_language","Layout","heading","name","sub_heading","ProjectList","Link","util_styles","to","max_priority_language_all","undefined","Head","SEO","max_priority_highlight","max_priority_list_default","max_priority_list_all","Map","ComponentToWrap","Location","location","navigate","assign","queryString","block","main_block","spacer","strictUriEncode","decodeComponent","splitOnFirst","filterObject","validateArrayFormatSeparator","value","encode","options","strict","encodeURIComponent","keysSorter","sort","a","b","Number","removeHash","hashStart","extract","queryStart","parseValue","parseNumbers","isNaN","trim","parseBooleans","toLowerCase","parse","query","arrayFormat","arrayFormatSeparator","formatter","accumulator","includes","isEncodedArray","newValue","item","parserForArrayFormat","create","param","k","reduce","Boolean","stringify","object","shouldFilter","skipNull","skipEmptyString","index","encoderForArrayFormat","objectCopy","x","parseUrl","url","url_","hash","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","queryFromUrl","parsedQueryFromUrl","getHash","pick","exclude","exclusionFilter","string","separator","separatorIndex","str","charCodeAt","toString","toUpperCase"],"sourceRoot":""} \ No newline at end of file diff --git a/icons/c.svg b/icons/c.svg new file mode 100644 index 00000000..2693df55 --- /dev/null +++ b/icons/c.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + + diff --git a/index.html b/index.html index bc37c5e4..7dd75f21 100644 --- a/index.html +++ b/index.html @@ -48,10 +48,10 @@ } } }) - Christopher Besch—Software Developer

Hello Smart People!

I'm Chris.
thumbnail

LunarVim in Distrobox


You're missing that one program that isn't available in your Linux distro? With Distrobox, the 'Linux Subsystem for Linux,' you can install it anyways. This article explains how to do that with the example of installing LunarVim on Red Hat.

October 2022

thumbnail

Bodging MP3 Names in Bash


Why do it complicated when a Bash one-liner does it too?

October 2022

thumbnail

reveal.js your Presentation


reveal.js is a PowerPoint alternative. With it you programmatically define your presentation via HTML.

This article shows how you can use reveal.js for your own presentation.

June 2022

thumbnail

Installing Gentoo To My Liking


Gentoo is a Linux distribution that offers as many options as possible. This article leads you through the decisions I took to end up with a system that best suits my needs.

April 2022

More Articles

Some Projects


thumbnail

Manim Editor

python
typescript

Web Presenter for Mathematical Animations using Manim.

thumbnail

Visualizations

cpp

Visualize Graphs with Godot and C++.

thumbnail

compare_view

typescript

Blend Between Multiple Images.

thumbnail

docker_cron


Scheduling container tasks with docker-compose.

More Projects

Photography


alpha_mike
More Photos

Main Languages

C++
Rust
TypeScript
Python
+ Christopher Besch—Software Developer

Hello Smart People!

I'm Chris.
thumbnail

LunarVim in Distrobox


You're missing that one program that isn't available in your Linux distro? With Distrobox, the 'Linux Subsystem for Linux,' you can install it anyways. This article explains how to do that with the example of installing LunarVim on Red Hat.

October 2022

thumbnail

Bodging MP3 Names in Bash


Why do it complicated when a Bash one-liner does it too?

October 2022

thumbnail

reveal.js your Presentation


reveal.js is a PowerPoint alternative. With it you programmatically define your presentation via HTML.

This article shows how you can use reveal.js for your own presentation.

June 2022

thumbnail

Installing Gentoo To My Liking


Gentoo is a Linux distribution that offers as many options as possible. This article leads you through the decisions I took to end up with a system that best suits my needs.

April 2022

More Articles

Some Projects


thumbnail

Manim Editor

python
typescript

Web Presenter for Mathematical Animations using Manim.

thumbnail

Visualizations

cpp

Visualize Graphs with Godot and C++.

thumbnail

compare_view

typescript

Blend Between Multiple Images.

thumbnail

mold_detect

c

Warn residents of mold-friendly atmosphere and log opened windows.

More Projects

Photography


alpha_mike
More Photos

Main Languages

C++
Rust
TypeScript
Python
- \ No newline at end of file + \ No newline at end of file diff --git a/page-data/app-data.json b/page-data/app-data.json index 4aaf4b73..136f691d 100644 --- a/page-data/app-data.json +++ b/page-data/app-data.json @@ -1 +1 @@ -{"webpackCompilationHash":"0726b41fb4e4d9827b9a"} +{"webpackCompilationHash":"a51554bed52f85ea2e19"} diff --git a/page-data/index/page-data.json b/page-data/index/page-data.json index 896ebcf1..79351cf2 100644 --- a/page-data/index/page-data.json +++ b/page-data/index/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-index-tsx","path":"/","result":{"data":{"articles":{"edges":[{"node":{"id":"ef776637-9f6b-55ce-aba6-1a52100f6c8a","frontmatter":{"slug":"lvim_in_distrobox","description":" You're missing that one program that isn't available in your Linux distro? With Distrobox, the 'Linux Subsystem for Linux,' you can install it anyways. This article explains how to do that with the example of installing LunarVim on Red Hat. ","title":"LunarVim in Distrobox","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAAsTAAALEwEAmpwYAAABTklEQVR42n1SW3KDMAzkJMSAbQw4PAqUvPqi0+kBev+zqCs5ZEpL+qHxWJJXq11HuzSnzUgMZdVA9uH5FqY5kjIlxajdexf9SWYOpyPTXiSU3ZPSJaKirOwpH94oLbq7oCtAZb08tt0T6f1E8S4DU4taiFhpqbtxBtPqWvsPEM0JGJnuIisz0/UDhyEaUvRgf5YBv3tWgLHoNpLFqoHVlrYW7LxouttYO1qaFiOSvA7is24mSLBiIYCVaPmT+dIjgClA2IxYGVJZAf0eZTVpQj6YUoaexX1swX1K3umbSREDLIyYXZJDw+Z0zcFZP8DVVkA4xzVmZ+ojzHlHfyN3XR8CIJvArsrJf609ke1fJMeP2VE3zGB0lqHF4RMAM/p9AMYQ//pFbvoQOSKlC0FnZnxqP1LqGpGB/x27meJMkONvxADCGH2B2STD+c5rfwMBISO+aAZq+AAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/7b55476245f182a8e9f9b7e91efbb1a6/4f407/lvim.png","srcSet":"/static/7b55476245f182a8e9f9b7e91efbb1a6/b80f3/lvim.png 320w,\n/static/7b55476245f182a8e9f9b7e91efbb1a6/33942/lvim.png 640w,\n/static/7b55476245f182a8e9f9b7e91efbb1a6/4f407/lvim.png 1280w","sizes":"(min-width: 1280px) 1280px, 100vw"},"sources":[{"srcSet":"/static/7b55476245f182a8e9f9b7e91efbb1a6/aeec2/lvim.webp 320w,\n/static/7b55476245f182a8e9f9b7e91efbb1a6/99f93/lvim.webp 640w,\n/static/7b55476245f182a8e9f9b7e91efbb1a6/b584c/lvim.webp 1280w","type":"image/webp","sizes":"(min-width: 1280px) 1280px, 100vw"}]},"width":1280,"height":640}}},"date":"October 2022"}}},{"node":{"id":"4babb8e9-1394-5b33-96d9-9db996bc7fc2","frontmatter":{"slug":"bash_cmds/mp3_tag","description":" Why do it complicated when a Bash one-liner does it too? ","title":"Bodging MP3 Names in Bash","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAIAAAA7N+mxAAAACXBIWXMAAAsTAAALEwEAmpwYAAABhklEQVR42iWQ19KrMBCDTSeFDgECnNBCJ0yGi7z/m53vh73wrG1JK63QCtn4ytos67tkrIo6CvUj9Ekyd8XcFGNU9UU2d9nstMAPyqocx9E8qm1b0Q3dzb0mRTJvU5SEkibJuvTIoqav+7l3AyevsmHt4yweh3GapmEYuq5zHCdNUzFPcxiE5atsm9a6W3VVp0lqW3ae5cu8hH7Ydz1fnus1TdP3Pfzn8+l5nuu6Apmqqsqy5Myy7P1+0+AN0L+jiqJYlmWeZ8i2bYNEIo5jGhFF0f1+D4KAGLIs67qOBFDIj8cjSRKg4Oq6Zozv+1xRp+EqwjDEw+v1wgzQ4Siun88HDtLX6xVRIf7GrOvKOxTs5HkuTqtMZnvI0/OKMEzDMPCvaZo4Cs98gccjC2OAYGlAUT3jAbUsC63b7cZJTucoCLwTCkX4l8vlT2/bNtwS7/v9npsgDC5weEbACz3q+74zBlEyk1RRFIExzDCTP7aKW8i4YCZC4Lj+fj8wZy4mw1RVleH/AZ7uPYsi74ZJAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/5c491b010e8b22c6ffd20605f69d322f/4f407/bash_cmds.png","srcSet":"/static/5c491b010e8b22c6ffd20605f69d322f/b80f3/bash_cmds.png 320w,\n/static/5c491b010e8b22c6ffd20605f69d322f/33942/bash_cmds.png 640w,\n/static/5c491b010e8b22c6ffd20605f69d322f/4f407/bash_cmds.png 1280w","sizes":"(min-width: 1280px) 1280px, 100vw"},"sources":[{"srcSet":"/static/5c491b010e8b22c6ffd20605f69d322f/aeec2/bash_cmds.webp 320w,\n/static/5c491b010e8b22c6ffd20605f69d322f/99f93/bash_cmds.webp 640w,\n/static/5c491b010e8b22c6ffd20605f69d322f/b584c/bash_cmds.webp 1280w","type":"image/webp","sizes":"(min-width: 1280px) 1280px, 100vw"}]},"width":1280,"height":640}}},"date":"October 2022"}}},{"node":{"id":"8f20dcb8-95d0-5d14-a138-a8e2c04d76fd","frontmatter":{"slug":"revealjs","description":" reveal.js is a PowerPoint alternative. With it you programmatically define your presentation via HTML.\nThis article shows how you can use reveal.js for your own presentation. ","title":"reveal.js your Presentation","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB6klEQVR42j1TN4uyYRB8/4BnzllPFHPOmLOglZVgb6d2gtpYXCXYqaA2grX/cO6bhfuKFxafmdnZ2VWJxWIwGAxoNpsIhULQ6XSo1WpwuVyw2+1SG41GfH9/o1qtQqPRIB6PI5vNQq1Wo1QqIZ1OC6ZSqUDhg8ViETCBDocDrVYLgUAAfr9faopHIhHU63VYrVYRKxaLMJvNIpJMJmGz2eRdoZDT6cRwOJROFByNRgiHwwgGgxiPx3C73UIaDAbyTpFOpyON2JDirKmhRKNRqFQq5PN5pFIp6dTr9USENaNgQ+JInM1mEgPFM5mMTEb3X19fKJfLUJgBs5pOp7hcLtjv93i/39hut1itVng8HjidTlgul7jf7/j5+UG328V8PhfM9XoVURqgW4WqWq0Wi8UC6/Vavufzic1mg/P5jNvthuPxKN/n88Fut5O3v4av1wuTyQR6vV5cy8i0S6esuSDm5vF4ZCkMmlkyQ2bEaWjicDig3++j0WgIj9unhsKAaZchMxOv1ysjMRcKkUTxRCKBdrsteeZyOfmdC2KehULhP0/hMnhDnJ8kngLBPBuCWNMVG5BALDl0yfvlBLwOk8mETrcHhUAeKEEU4WETzO68uT+iz+eTLRNLDi+CUWX+3ST/EFqdHoVKDb9wblBEGkSeKwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/90f1af0c0e4970e8cf923a375c719169/4f407/revealjs.png","srcSet":"/static/90f1af0c0e4970e8cf923a375c719169/b80f3/revealjs.png 320w,\n/static/90f1af0c0e4970e8cf923a375c719169/33942/revealjs.png 640w,\n/static/90f1af0c0e4970e8cf923a375c719169/4f407/revealjs.png 1280w","sizes":"(min-width: 1280px) 1280px, 100vw"},"sources":[{"srcSet":"/static/90f1af0c0e4970e8cf923a375c719169/aeec2/revealjs.webp 320w,\n/static/90f1af0c0e4970e8cf923a375c719169/99f93/revealjs.webp 640w,\n/static/90f1af0c0e4970e8cf923a375c719169/b584c/revealjs.webp 1280w","type":"image/webp","sizes":"(min-width: 1280px) 1280px, 100vw"}]},"width":1280,"height":640}}},"date":"June 2022"}}},{"node":{"id":"f775d6b1-a11a-53ba-85c6-52a19e5c39d4","frontmatter":{"slug":"installing_gentoo","description":" Gentoo is a Linux distribution that offers as many options as possible. This article leads you through the decisions I took to end up with a system that best suits my needs. ","title":"Installing Gentoo To My Liking","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAIAAAA7N+mxAAAACXBIWXMAAAsTAAALEwEAmpwYAAABiklEQVR42o1R2W7bMBBcikud1UFLog5KpA5HSeWgKGI4keC6LdKXAvmD/v+HlELgtA95yGCwTzuY2VmwI9bvu/00utwBBmmYZWEe2ZFlWXAFZcgSxBHYAFYFPOe97oumgMNw//zz+XF6fLh/iINYWEJXXVmV4aeQUvomtjNkd2CIHYQqkFrqTkOxK87r+XQ4PS1P8zhLKpukzYvc930jI4SYiUbMkd3AxtrKZNroJm8zqLN6Xdb1vB6PRx5xQYUWKuHcdd235JRRxukWewIqgZeJanXTNbB8WS7fL4f5kESJ2RO01tlNWaW7JDYIw9AxcB22Q5zAngEV4XWilGoGCR56PgvIaz4A7UXffsfL5c/p14trI7NtRGQOYzHFAYw5KvBLtyiFVBLAA3CBeMQKAGySB97tEYfph56/kv/a3goztqazjqQ9b1VbjSUQ3Aim19f5HrabjXMPbASqwROOqISU9TurxDIlW9c7rs4pss+At2A3tFB53/dlX8BH8K/t/fbnoPGqujLf+gvyFyLSxOAJTAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/dd509c81379268c048ef45318173ad70/4f407/installing_gentoo.png","srcSet":"/static/dd509c81379268c048ef45318173ad70/b80f3/installing_gentoo.png 320w,\n/static/dd509c81379268c048ef45318173ad70/33942/installing_gentoo.png 640w,\n/static/dd509c81379268c048ef45318173ad70/4f407/installing_gentoo.png 1280w","sizes":"(min-width: 1280px) 1280px, 100vw"},"sources":[{"srcSet":"/static/dd509c81379268c048ef45318173ad70/aeec2/installing_gentoo.webp 320w,\n/static/dd509c81379268c048ef45318173ad70/99f93/installing_gentoo.webp 640w,\n/static/dd509c81379268c048ef45318173ad70/b584c/installing_gentoo.webp 1280w","type":"image/webp","sizes":"(min-width: 1280px) 1280px, 100vw"}]},"width":1280,"height":640}}},"date":"April 2022"}}},{"node":{"id":"439bcd05-da4f-5d27-bcc6-1ab6d3b3addf","frontmatter":{"slug":"maki_atoms_and_time_travel","description":" Maki showcases how a program for interactive and programmatic animation development can be implemented.\nIts programmatic approach provides the precision technical concepts require, while its interactivity and real-time updates avoid a disconnect between input and output. ","title":"Maki, Atoms and Time Travel","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAIAAAA7N+mxAAAACXBIWXMAAAsTAAALEwEAmpwYAAACWElEQVR42iWN7U8ScQCA77/og3OlRltZiXiQHjcEnYSKo+YLKzddKVpAQzw8uPff716Bg5WwgeZLODhQA9dAl1bO2Ye+tLW+1N8TW1+fPXseBMWcVrvLbMW9s9OkKK4BKsqThKJKhD415e+34Sg2/N8pFk5brT+N+s+z5u/Kh6914xJpU8ugY2TCF1NJEcp8glxPcCKRYtkME+MX518O4G4r5jTbcC1VOv/8t1q5ahxel/dape1jpF21YM5IhAAC1IVslqYgT9GEJnI6JyQ0Kh4KRax25wN0KEoozdav8sF5rXxR3m++zx0g7a1jzCMC4R2VVlNQTNJCmoqKG1SKkWROUWnIxh0uT2+/bWk11mj8OKxeHuyf7m0dlYoG0ofiM/5nAoAbEMSlLJR0lZfe6gQLaYFWRZZlZXp4xH1/YHDu+UqtdtX4eH1S/75TqJW2DMQyZF9YCAuSBKSYGkkrdFbXWE0FEpRlkRcZCjKMa2LyIYq5J2cM47Ja+VKtXGwXjnYLBvLI4VqL0ECWeY6MbYh8XE2AHKlCXcpkAJeWMwonuDw+s82ODY8VCydG+Vutcr63Xd8tVJHxcR8DFbZ9UpR0OrzJanEmQ/CcEIxnCErkZSUFvE+nLdgoah9lhfzOztlW8VM+f5zP1RD//KKgJ5MMSJIwl1M1OUsLsiKJKQg3OaApgF2j+u1eE+q5g3ru2rx9+KwZ9/UOuMyDj5HxOf+L168CwdDym5WlVSK4ur4SCAUDYYKIBsPBcGB59sl8j2W02+Lu6Oq90Wnq6Lp3q9t0s7Pzdo/pH7aHDFm22q+xAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/ec9e9265791849f80f7f7e1d76995206/4f407/maki_atoms_and_time_travel.png","srcSet":"/static/ec9e9265791849f80f7f7e1d76995206/b80f3/maki_atoms_and_time_travel.png 320w,\n/static/ec9e9265791849f80f7f7e1d76995206/33942/maki_atoms_and_time_travel.png 640w,\n/static/ec9e9265791849f80f7f7e1d76995206/4f407/maki_atoms_and_time_travel.png 1280w","sizes":"(min-width: 1280px) 1280px, 100vw"},"sources":[{"srcSet":"/static/ec9e9265791849f80f7f7e1d76995206/aeec2/maki_atoms_and_time_travel.webp 320w,\n/static/ec9e9265791849f80f7f7e1d76995206/99f93/maki_atoms_and_time_travel.webp 640w,\n/static/ec9e9265791849f80f7f7e1d76995206/b584c/maki_atoms_and_time_travel.webp 1280w","type":"image/webp","sizes":"(min-width: 1280px) 1280px, 100vw"}]},"width":1280,"height":640}}},"date":"February 2022"}}}]},"projects":{"edges":[{"node":{"id":"2f5cbcb4-8ca6-5d9c-9109-d52f8a436af1","frontmatter":{"languages":["python","typescript"],"priority":0,"dependencies":["bootstrap","flask","webpack"],"slug":"manim_editor","link":"https://github.com/ManimCommunity/manim_editor","description":"Web Presenter for Mathematical Animations using Manim.","title":"Manim Editor","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAACiElEQVR42pWT20tUURTGj3O8zXgZHS9NjZQ6Q0I++ydUL4G+9ZqBU0ia0cUgydGUHgSFelGUniRKKh8adDLNEJ2ZwC5DZYYimKY5ozkXnZsz/trnBFHQQy1YrL0X3/r2t/beS9rZ2SUWixEOR9QY39vjXywRF9joLvFYRNQk1FwyuY/U2dnJwMAAjY2NVNfU0NDYwK32dtpsNlpbb6qxzdbK9eYWrlxtxmq10tR0kQf2Ke7ef8G9RxO8nHbj9wdIJBJIdrudUYcDi8WCJElcu3yJ969fMTXuYGbyOROjdtzOSR47JujuuK1isnWZ3HnymQ57gr6xDUaejTMyNsH2th/JJk7v7umhqqqKjIxMTp44zoX685ytPYO1rk7EWurOWbHW13G6+hT5+QZMJhMfP3jwf/cS9G8RCoUIBAMERZSGh4dRVJrNZvV0jUaDlJJCrqEQvSiWZVnsNaSkppEi8gpGp9OxuLio3ncotPPH3Ur9/f0MDg7+IpTlVDTCS0rLOFZZiV6vJztXT7pWR6qsUTFarZY3b98RjcbVNtfW1lVi5VGlrq4u+vr6KDdbSBPgwwVZ5OTpMRwqoaTcgvFIGQdLzeQIxdn6PLIyZKFQy6f5eVWRQrK6+pWVldWfLT8cGuKpaPloRQW6dBmLqZBioxG9wUB+QYGqzlBQSNEBI0Uin5eTRXFxMQsLC+yJliORiEq4vPyFQCCI1NJyg97eXubm5piZcTLtdOF0OnG5XLjdwkVU1krup7uYnZ3F6/Ph9frY3Nxi/duGuk4mk0gej4elpSX+15RWFYKE8HA4rCrd3xcfW5GtfMh4PK6CfvdoNEowGMQf3GFjO4bPLyYqIiZETIlS/Df7AQM0eSSgdwjeAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/512c236dd73df7d96875dc50f7db59b9/87706/manim_editor.png","srcSet":"/static/512c236dd73df7d96875dc50f7db59b9/f80f8/manim_editor.png 320w,\n/static/512c236dd73df7d96875dc50f7db59b9/9a63f/manim_editor.png 640w,\n/static/512c236dd73df7d96875dc50f7db59b9/87706/manim_editor.png 1280w","sizes":"(min-width: 1280px) 1280px, 100vw"},"sources":[{"srcSet":"/static/512c236dd73df7d96875dc50f7db59b9/c0bcc/manim_editor.webp 320w,\n/static/512c236dd73df7d96875dc50f7db59b9/17574/manim_editor.webp 640w,\n/static/512c236dd73df7d96875dc50f7db59b9/71d4d/manim_editor.webp 1280w","type":"image/webp","sizes":"(min-width: 1280px) 1280px, 100vw"}]},"width":1280,"height":720}}},"date":"September 2021"}}},{"node":{"id":"b82d984e-ae2a-59a5-b339-8b2fbb2a5816","frontmatter":{"languages":["cpp"],"priority":0,"dependencies":[],"slug":"visualizations","link":"https://github.com/christopher-besch/visualizations","description":"Visualize Graphs with Godot and C++.","title":"Visualizations","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABfElEQVR42o2T2Y6jMBRE+89GirJhYwwYLxACZFFWRZP/fzkDfhl1JzPdDyVZSD5U3br+SNOUF0mJ1hprLW3bRh0OB+q6xnuPUoq390Z9fP2gUkWSCoqqZLtpCSHQ9z2Px4Pr9UrTNGy3W+T40x8BJ610wrxKED7DV45qdDoMQ3T5fD4jcHIrhPg/UCqJSnKaX5qNSDCuoWu3lKaM8Xe7HbfbjfP5zH6/xxjzAv0MHGPYyqJtji1HpZ65FwiXoYzGlIbL5cLxeIx65/IzMJUUqsCaQDjWZEEjy3GmeYqrPaYwdF3H6XTifr/H4r7O8iVyttYMs4LjUmDynGpfs8wTFlaQZDJGn2Y5FTWdv3GoyMSK3QjbZS2DdPwuz1QLi1t7Vk6OBVUURRGLebc+Ly1LlaKTgqoIdEWP8RW9cXTKE+YBbx0++LiP37b8dxclM7Nms5iROEUYC+lXmrXMSG0WodO8f7yHESoVenSw1GtM43BZQC81qywhFfKfL+UPn0urwPWCA3kAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/3f978993862ff0e513124ce977ea3ad4/dfdb8/visualizations.png","srcSet":"/static/3f978993862ff0e513124ce977ea3ad4/1d92b/visualizations.png 438w,\n/static/3f978993862ff0e513124ce977ea3ad4/27093/visualizations.png 875w,\n/static/3f978993862ff0e513124ce977ea3ad4/dfdb8/visualizations.png 1750w","sizes":"(min-width: 1750px) 1750px, 100vw"},"sources":[{"srcSet":"/static/3f978993862ff0e513124ce977ea3ad4/0e056/visualizations.webp 438w,\n/static/3f978993862ff0e513124ce977ea3ad4/4a6ac/visualizations.webp 875w,\n/static/3f978993862ff0e513124ce977ea3ad4/ae820/visualizations.webp 1750w","type":"image/webp","sizes":"(min-width: 1750px) 1750px, 100vw"}]},"width":1750,"height":984}}},"date":"January 2023"}}},{"node":{"id":"23f69708-bb7b-5319-ba21-f76a863596b9","frontmatter":{"languages":["typescript"],"priority":1,"dependencies":[],"slug":"compare_view","link":"https://octoframes.github.io/compare_view","description":"Blend Between Multiple Images.","title":"compare_view","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAACRElEQVR42k1T60vaYRj9/aOD9nGMfVEYaw0F8UOkhAU2NnItltv8UbgaeamFJW6IYKUyI2/l/Zq3yrzlmecBYx8e3vd93nOe55zn/f2U29tbDIdDPDw8oNlswuv1olAo4O7uDp1OB6VSCTc3NxiNRmg0Gri+vkatVpM7Yu7v74XLGgyFSQKr1aoA9Xo9AoEAer2ekEiYkZgjjg3ZfJafRb/fh8Ji2WwWqVQK8XgcBoMBPp9PwCxIYrfbFQJzVMozVXOloFkxrgotCXEKIMhsNsPlcj0BZioGg8HT/v87Nnh8fMR4PJa9KGTRZCqNQr4A69oaXG43Wq0Wrq6uJDKZjMyOVmc5KuOI6Cqfz6NYLIogZd/lgf37NqzrW1Dtm7AYXuPLhk1Uzs+/gU6ng8ViwdzcHLRaLZaWlrCwsICzszOoqgqTyQSj0QiNRoPd3V0oq7rnsK0YsKM68Gf/G/z2RXxefgfnTw8q5fK0a1PUnp6eipLyNFepVJ6UURVzVFiv16EEv77AycZLHG9/gG/LAHX5FXasb2FaWZ9ay0ixdrstc6ZFFiOZY+KL88zgSNhEca4+w8WvRRw4HYiHDpC/+I30+RE+2TbhO/ajNCVzdvwSEomEKA2Hw4hEInJOJpOyZ44NldAPHc597+Fx2NCq5TDsFDDpd+De24Pb7RECI5fLSYF0Oi1WLy8v5RyNRuUzi8Vi8upKJvQR1b825INmTIZ1jHotYDLAkceNw8NDBINB6c7V7/eLff5dbEDrtMpXpzqO5x8xAAI/640YPgAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/c5c6e9ede3805430bb6858f8f3f1fa70/1ac80/compare_view.png","srcSet":"/static/c5c6e9ede3805430bb6858f8f3f1fa70/f337a/compare_view.png 439w,\n/static/c5c6e9ede3805430bb6858f8f3f1fa70/cb3b4/compare_view.png 878w,\n/static/c5c6e9ede3805430bb6858f8f3f1fa70/1ac80/compare_view.png 1756w","sizes":"(min-width: 1756px) 1756px, 100vw"},"sources":[{"srcSet":"/static/c5c6e9ede3805430bb6858f8f3f1fa70/0e84f/compare_view.webp 439w,\n/static/c5c6e9ede3805430bb6858f8f3f1fa70/09d01/compare_view.webp 878w,\n/static/c5c6e9ede3805430bb6858f8f3f1fa70/9f143/compare_view.webp 1756w","type":"image/webp","sizes":"(min-width: 1756px) 1756px, 100vw"}]},"width":1756,"height":988}}},"date":"June 2022"}}},{"node":{"id":"7d7ac55e-5c7d-5250-bf97-947d034898de","frontmatter":{"languages":[],"priority":1,"dependencies":[],"slug":"docker_cron","link":"https://github.com/christopher-besch/docker_cron","description":"Scheduling container tasks with docker-compose.","title":"docker_cron","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABnUlEQVR42m1R23KjMAzlH5qEm7FBso0vYMBAkja97Uyn//9JK0i6sw+dOZyRD5J9JCX12MvzqC4Dty5lmAtNyDhBbTHf40qmTFJMCWml7sqphIS+tEJcQvsaK23BX2R3dsunnT/U8GLmdxvfsDsLE9vphn61y0d3/ZL9OWVUXEDKEdcBYg9z0LcJ5qEQ6ljCaUdaIvGxaDb+EelISB4ZFRa1rtted6NQDnSPZkAToA1VYzh63c0cnbRTrTq0o3ITB/co3t4voahNf/0Kz9/g1+H2bZdP2a1lY/O6FToUjSGrW9sMs0oRJ/9s5FwxsKIdpV/QRtURTwycclGg57IHM7LGlE0rpK/AUfx/sd5Vw+p280yGwZAi7UB52s8mrHREM5p+Vj6S/x/b5eaHrvfLO3l200u4/Gls1OEKZqBfZIp6prkQC+loCqQkx7whUM/0eCZsO71Cd6ntbOKbDFc1PDN0h7zex/vgQ9HclSQHVaDKhKS957U8FuKQiUMunlK+BZm4L+lXJLRbuQbuPWstxMDQbJPfR3rHad/zr/gLfMhafpHFCjcAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/5a5012abbd37087a66d8c181e0e2ae76/0dee1/docker_cron.png","srcSet":"/static/5a5012abbd37087a66d8c181e0e2ae76/f0aa7/docker_cron.png 188w,\n/static/5a5012abbd37087a66d8c181e0e2ae76/f9574/docker_cron.png 375w,\n/static/5a5012abbd37087a66d8c181e0e2ae76/0dee1/docker_cron.png 750w","sizes":"(min-width: 750px) 750px, 100vw"},"sources":[{"srcSet":"/static/5a5012abbd37087a66d8c181e0e2ae76/d03f4/docker_cron.webp 188w,\n/static/5a5012abbd37087a66d8c181e0e2ae76/cf250/docker_cron.webp 375w,\n/static/5a5012abbd37087a66d8c181e0e2ae76/a66aa/docker_cron.webp 750w","type":"image/webp","sizes":"(min-width: 750px) 750px, 100vw"}]},"width":750,"height":422}}},"date":"August 2022"}}},{"node":{"id":"b79cb258-51bd-5f73-8335-f4e933884839","frontmatter":{"languages":["rust"],"priority":2,"dependencies":["docker","tokio"],"slug":"docker_logdna","link":"https://github.com/ibm/docker_logdna","description":"IBM: Logdna logging driver Docker plugin.","title":"docker_logdna","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABiklEQVR42pVT20rDQBTM/3+BoKIifoHgrV5eREVBH2qFVtuaa7u5J9vm0s3uuJu2tJEW9MBkIbuZc2Yyq0GWEEI90SxRv5/v/b20qqogOMekmMGnBYKJQomCcVRcgFUcY+JJuCCEwHVdTKfT7YRMEqp61iPsPZo4frFw8jqCGWSgNENMcxQzjqwUyIoKnCvwGhsJf28sJQa+j/7XJwbDPkbEQZJSSbw6s/zuty3atk5KFnE9+G4IpzdEbPuIxxQsTMGkNcqOrR7yuqNYrbUkgVIeoFYE++gO9uEthvst6DvnCB+6mDCpIggRRSHSNG0SJqGHJHBrxD6BNx7BDyKU1eJvLzwTfN5QagTNGHTDhGNboNIOxuZ+aNG0xE3HQqtt4PrdwGXbREcnSOIEOdseD0X4rRswTLNeLcuubdK8NMdZ28HFB8FVz8dpe4wumaghZGRWWVyHmpbJ6d+MBLv3Axw86TIZjkzBDNo80E0IwRvx2ARVuYyTUhjK7Mb5rB5CUxTKlnX872406wd/eVMybHQ7BwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/9d1703fede1297bd9e064aad91c4f5ad/afa5c/docker_logdna.png","srcSet":"/static/9d1703fede1297bd9e064aad91c4f5ad/2fe1e/docker_logdna.png 480w,\n/static/9d1703fede1297bd9e064aad91c4f5ad/9bec7/docker_logdna.png 960w,\n/static/9d1703fede1297bd9e064aad91c4f5ad/afa5c/docker_logdna.png 1920w","sizes":"(min-width: 1920px) 1920px, 100vw"},"sources":[{"srcSet":"/static/9d1703fede1297bd9e064aad91c4f5ad/3a3a2/docker_logdna.webp 480w,\n/static/9d1703fede1297bd9e064aad91c4f5ad/bde8a/docker_logdna.webp 960w,\n/static/9d1703fede1297bd9e064aad91c4f5ad/c512e/docker_logdna.webp 1920w","type":"image/webp","sizes":"(min-width: 1920px) 1920px, 100vw"}]},"width":1920,"height":1080}}},"date":"June 2023"}}},{"node":{"id":"66175c61-d427-5209-8362-f6e58349d320","frontmatter":{"languages":["cpp","python"],"priority":2,"dependencies":["cmake","opengl","glfw","glm","imgui","pybind11","spdlog","stb"],"slug":"maki","link":"https://github.com/christopher-besch/maki","description":"Interactive and Programmatic Animation Development; or: How to Time Travel?","title":"Maki","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAACiElEQVR42iWSW2vaABiGcz0KK660tTFRY8xBo4mJMYmHJp1dtR3dRQ+wCxktq3XTlZpa6yHiqVaNtXauDAbrrgorbDA6xm7GOhi7GmPsH+yvdJHBd/u8z/vxfQDHCpI05/eHKDdNcwIVkCKzsXR69+le8nE6lXiys5dXG8lcPL6MMiGUjcIucdLhm7aRFBsBgkEJJ92Ul+Z53shhJSWTSvc7zX6tViv3W9Xmqd4aVkpqSqUEBWNlmlc2t7TkdjGVLAAulwuGIAeKghCMuujYg/VmK1+s5jVVG5a0Xv6odVActLP1Wl1ZXGKEsCjPvz7//PX679WHXwBJklYr7ECxGdhOM7S6nSu3u1o5Vxoc1rS8tqN3CvrO85bW1e+vrDCi7OGlzWT26uPPt5fXAIbhDgdCUl4zhC2txQ67xf1aTS9oJycvCrl+/Vm529RLWiPb6K0+2vAGwmxQjkQXz998evf+B4DjuNVqJUjyzvRMIrHa6fayucJxUdUrnWauXWp09WZ+qFfPTtupzDYXjgjyXW8gtLvXvrj4YpgxBEFYliXc7oWFWGa/qma0w3rlqF/RWt2jRr3R66jF8sbWQXw5BWFzpE92+/no4lq5cjIyWywWo7wZtJhByGJHUAxnWY4PCNH5uBIKS1LILwWzebJ9jPQG9pWHPpKNMGLIJ0ZGsNPpZDnO7aUpj8eJojZjDRg2m80ETkxNTo2N3UII/7fv0zc3gDGvzu0otSAqChdSABRFDbPBz0CwzY4YIAiCBmkymXAMt4DQxMQ4iIiDM+w/PHyJOKh7wqw8ghmGcVEuhvNRHsqJYUaKcTyCIIxGHMdBIGQyjdswdj0h/v5z+/jUKcfCPuMjwyPzP+v1y0hjTk+xAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/ba4ee1e4d545c4df94a90630e0d8f20a/afa5c/maki2.png","srcSet":"/static/ba4ee1e4d545c4df94a90630e0d8f20a/2fe1e/maki2.png 480w,\n/static/ba4ee1e4d545c4df94a90630e0d8f20a/9bec7/maki2.png 960w,\n/static/ba4ee1e4d545c4df94a90630e0d8f20a/afa5c/maki2.png 1920w","sizes":"(min-width: 1920px) 1920px, 100vw"},"sources":[{"srcSet":"/static/ba4ee1e4d545c4df94a90630e0d8f20a/3a3a2/maki2.webp 480w,\n/static/ba4ee1e4d545c4df94a90630e0d8f20a/bde8a/maki2.webp 960w,\n/static/ba4ee1e4d545c4df94a90630e0d8f20a/c512e/maki2.webp 1920w","type":"image/webp","sizes":"(min-width: 1920px) 1920px, 100vw"}]},"width":1920,"height":1080}}},"date":"December 2021"}}},{"node":{"id":"b804b240-53c3-5a0b-8fb3-c9c6d885fb00","frontmatter":{"languages":["cpp"],"priority":2,"dependencies":["cmake","armadillo","nlohmann_json","spdlog"],"slug":"neural_network","link":"https://github.com/christopher-besch/neural_network","description":"Experimental Deep-Learning Framework.","title":"Neural Network","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABJUlEQVR42n2Q25KDIBBEGYIoYlaCKDcjlc3//+M2ick+5NI1NdWWc2ZaGes6GgZKiZaFLwvNM61r7VqTUrW0ZkKwjxKCAwihdvDW1jIGS/cBov+CON9NfdW2vBSQtefMY+RYhCDwIZD3+7ppIufodEJnTfO43DR0PlPO6AyBQ2DjyI5H1vc1s1LscKiF8Chg8DsohFRKhiCdkylJYxpj5M+PHMfWWgH4Gf5VKaVSyrquMYTZucX7mNK9tlLwqIfBGNO27RsY2LZt55sC5D3Misr593KJMWqtp2lSCP8FRgeL6eeu6/WKXN/g+zRWYG65KT2Ez/He933/MTauYQ4rYHDBOXf3EDbiEfCIn/cWBomhnDMYwPM8w+AgYCRHEMDW2q7rXtk/KaIgNPoxJ2IAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/ffcee91a9bd7ca290169a662b05f003f/08fdf/neural_network.png","srcSet":"/static/ffcee91a9bd7ca290169a662b05f003f/8416c/neural_network.png 202w,\n/static/ffcee91a9bd7ca290169a662b05f003f/077c0/neural_network.png 405w,\n/static/ffcee91a9bd7ca290169a662b05f003f/08fdf/neural_network.png 809w","sizes":"(min-width: 809px) 809px, 100vw"},"sources":[{"srcSet":"/static/ffcee91a9bd7ca290169a662b05f003f/51e0f/neural_network.webp 202w,\n/static/ffcee91a9bd7ca290169a662b05f003f/3ea73/neural_network.webp 405w,\n/static/ffcee91a9bd7ca290169a662b05f003f/a15e1/neural_network.webp 809w","type":"image/webp","sizes":"(min-width: 809px) 809px, 100vw"}]},"width":809,"height":455}}},"date":"May 2021"}}},{"node":{"id":"273ae0c1-4f5e-52ec-82ee-934c7aa00b04","frontmatter":{"languages":["cpp"],"priority":2,"dependencies":["gcc","premake","stb"],"slug":"ray_tracer","link":"https://github.com/christopher-besch/ray_tracer","description":"Experimental Offline Ray Tracer.","title":"Ray Tracer","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAACbklEQVR42h2QXUsUUQCG52f0AUWQXRhGaHURkVCSlFEghpkm3kQq5EW56+zMmbNnznydmTkzZ77WnZ0ZdXN3tUXTLAMTIiQQoqC7IOoHdCPdddNNY/BcvDcvD+/LaXTRZFlBavX0f+2+tqPar6qLL4MkZyNMD8mzE7XcsOmELRq0bL8RpVu7X37tff/DYXOJ+tndsZ2jF/8e6/7RO7Dm194E6fb//iHe/JrjtFx31fYadtgkXiNafbH38/f+twNOIRXDJk9m6x2XPx3p2r85VHH9p15keXHuXPeq6ySI5eVpnPEk19IlmyzGo9Ntq735+YBLa92xz2E8UwDp45nYsEobbS72jxvO89xDWRuwgvHxtrU1aE7yGz0TO+fG354dqfdPRvObnEtHTOUULAMjH+9mqslcu8syBky2YgcN228q1CtG46I6lVwY3j05+OHM6PvOMSZXDVbnoBKKcgXrKdTCsh4qZizpCxpdMViCtTB/yKBLmp5pdDm5NfX6xM13pwe3z48xNbWCJsfzSJR0gHwJmQCRklCWeA0DotkxRlShVagFkkgF4GiIhsMT7vUHzoyiKK5KYk6UAwGykuQIiImyL8iBJNgyYthMFFKTSYSNeQB9UfKA4iMrKgImqgHSI93KuKJg5FoR+QC5h2XoSsCWZaZYmWKmmMSyUZWNGOtVTBKs1zQ71axMNRLVTLi5Enw2+wiUqQBNXlSKc2V+lsCSlY9HZYqIj0lF5CkvMVjUnN4h9crDsuggO9HMjLOtO1Tl5gr3JDUDCpNUBmEPEm/k54mA6HRBxPkdDADX6xupd14NO/pql+5DHkOt+g+gtVjHbV/h3wAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/b6544f8b93634adaf6395fbe71540c0f/afa5c/ray_tracer.png","srcSet":"/static/b6544f8b93634adaf6395fbe71540c0f/2fe1e/ray_tracer.png 480w,\n/static/b6544f8b93634adaf6395fbe71540c0f/9bec7/ray_tracer.png 960w,\n/static/b6544f8b93634adaf6395fbe71540c0f/afa5c/ray_tracer.png 1920w","sizes":"(min-width: 1920px) 1920px, 100vw"},"sources":[{"srcSet":"/static/b6544f8b93634adaf6395fbe71540c0f/3a3a2/ray_tracer.webp 480w,\n/static/b6544f8b93634adaf6395fbe71540c0f/bde8a/ray_tracer.webp 960w,\n/static/b6544f8b93634adaf6395fbe71540c0f/c512e/ray_tracer.webp 1920w","type":"image/webp","sizes":"(min-width: 1920px) 1920px, 100vw"}]},"width":1920,"height":1080}}},"date":"May 2021"}}},{"node":{"id":"16731b16-54ad-5922-9979-6930ab456659","frontmatter":{"languages":["python"],"priority":2,"dependencies":[],"slug":"todd_linux","link":"https://github.com/ToddLinux/ToddLinux","description":"Experimental Source-Based Linux Distribution.","title":"Todd Linux","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABEklEQVR42nWR226EMAxEQ4Eu7AJLuN/F/3/lHjwlqlR1HizbsT1jx3VdN03Tuq7YcRxfhqIosFVVYdM0/TZkWZbnOaELaNu2aZphGEYDs8qypNl7j0PDwxDHsfsL2uhflgVyOiWhuUE/r33fv2+QRBGWYkccZJNCGG9U46NZtGjG8iTlhE+D27btOI55nsUA6rrWImJWCI834Gg09RczVPu+Qy7953lipS2AK3CqJEniX3C0MYxTQY4K6vCZAiGWEbmB0i+D+hPDdW22RTlsdCKMDJqlE9lY8sySbE2UeCcqOJFAzJHCwpyEO+lIcoTw59dXwamb+Rvak/FhcxzyYZcfZg7GMVQhnYRY8syOosj9jw98WSX8g+tLRAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/7c6e90442202143b65979ed16ebad618/f95d7/todd_linux.png","srcSet":"/static/7c6e90442202143b65979ed16ebad618/5e16b/todd_linux.png 238w,\n/static/7c6e90442202143b65979ed16ebad618/2b6c8/todd_linux.png 476w,\n/static/7c6e90442202143b65979ed16ebad618/f95d7/todd_linux.png 951w","sizes":"(min-width: 951px) 951px, 100vw"},"sources":[{"srcSet":"/static/7c6e90442202143b65979ed16ebad618/7f2c6/todd_linux.webp 238w,\n/static/7c6e90442202143b65979ed16ebad618/e6364/todd_linux.webp 476w,\n/static/7c6e90442202143b65979ed16ebad618/c84fa/todd_linux.webp 951w","type":"image/webp","sizes":"(min-width: 951px) 951px, 100vw"}]},"width":951,"height":535}}},"date":"July 2021"}}},{"node":{"id":"0492067a-5e9a-537a-a914-a34ff985d7a8","frontmatter":{"languages":["typescript"],"priority":4,"dependencies":[],"slug":"lake_visualizer","link":"https://github.com/christopher-besch/lake_visualizer","description":"Interactive Problem Visualizer for the 39th BwInf, 2nd round, 3rd task.","title":"Lake Visualizer","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABbElEQVR42o2Rz0vDMBTHK/4j+p8piP+JeNGDeBHP3hQZ1ZaOgXhQtjGYE2EHhU2ra2Rrs279kSYvTX1pxzyouC+PJC/9fpKXV4NTOjNrlw9Wws1mx3XOP9z7dvR5Y87ZlW3TIFBKyd/EuTBYENBrs9Zz0szp9cYta+Y1u6F300iZXa8Hvo9wlmWM4cAz/h2MMQMnDlAUxSDwj7oHh49772yEqeeGQsgojj1CQEoMLkDjYiE8zMBJgkB3fWhvnmys7a/vWjsKoHE3HRGWsZgQIlLxejsAJlRRYFRC0BAAeZ5jMk2i49bptrVVe65hmiRYrTYpbVfUh87F8KX9pPdK/xLW39MIHUs3jos7qsUsLiZv0EqSPqblTgkLXfPcpREJK+sS+ym8MQSYS7mAlRRTUZw5PiXwJ1SWU52JvfU4x0TDuYQwE/0gp5PqLf8LUFLiew1cYNOVWo0rJQEEpQjqhiGMPVNqdVrCeIw//AubHm8gk7c5+gAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/4e6a8d52902f88b218b8f6ee5d511490/aaf42/lake_visualizer.png","srcSet":"/static/4e6a8d52902f88b218b8f6ee5d511490/822d2/lake_visualizer.png 211w,\n/static/4e6a8d52902f88b218b8f6ee5d511490/9dbfb/lake_visualizer.png 421w,\n/static/4e6a8d52902f88b218b8f6ee5d511490/aaf42/lake_visualizer.png 842w","sizes":"(min-width: 842px) 842px, 100vw"},"sources":[{"srcSet":"/static/4e6a8d52902f88b218b8f6ee5d511490/36c97/lake_visualizer.webp 211w,\n/static/4e6a8d52902f88b218b8f6ee5d511490/6fd1d/lake_visualizer.webp 421w,\n/static/4e6a8d52902f88b218b8f6ee5d511490/d6fa7/lake_visualizer.webp 842w","type":"image/webp","sizes":"(min-width: 842px) 842px, 100vw"}]},"width":842,"height":474}}},"date":"April 2021"}}},{"node":{"id":"e10fa48d-7760-559b-821d-6daaf9a541fb","frontmatter":{"languages":["cpp"],"priority":4,"dependencies":["emscripten","cmake","sdl","armadillo","spdlog"],"slug":"lynton","link":"https://github.com/christopher-besch/lynton","description":"Experimental Game Engine.","title":"Lynton","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABhUlEQVR42m1SOZIVMQzts5FBQkBAMEORDBT9be2y5Xb3h0mpIuUAxFwS9TDAD1Dk7ekt8vLm+9u7b++YRGIzLrTCh1B31qbWwg1IaEXThqKlP7Y4BkgbHA/7WF78fPnqx2tBRdZ8ow5C1cBFKlQjCt4r+7Wsk1gwJGnIkJgRdbn/+v7TXDHPZut85VqGc5NRBGZ38EBKlDFbRwtKfUAkzCwii1VTlGzVrBvTWgskg5w0jXVjzbuN0PgBWO2jBlsy8VMt2eX3kpKBCTXmsKPvZ+fNjs9r39StpYtKlRh7SRXyDOabyjMbwZ7VEyGeZiDdUXZWuyh5kVbk/+D0dhmpWjwJEqTYZfhkDBt99pRMCjfPb8DEcNVycHDTDij1izdU19nTgT75ypxdVOgv87PnU1oay0llWKj1VJpTI6CK5y0bq+fe/iBPsII1xGSrvXk03ND6GFs0IFgZbVsPdbKZDiTHov+yPtNGBzuBbIHipUOY9ZIfLJxkmO/Driw+90tmnineeP4FmLcjrLxJjGIAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/58a7108179147732c801c94288cd76d1/92a30/lynton.png","srcSet":"/static/58a7108179147732c801c94288cd76d1/0525f/lynton.png 249w,\n/static/58a7108179147732c801c94288cd76d1/a9baa/lynton.png 498w,\n/static/58a7108179147732c801c94288cd76d1/92a30/lynton.png 995w","sizes":"(min-width: 995px) 995px, 100vw"},"sources":[{"srcSet":"/static/58a7108179147732c801c94288cd76d1/ec4ed/lynton.webp 249w,\n/static/58a7108179147732c801c94288cd76d1/81a8d/lynton.webp 498w,\n/static/58a7108179147732c801c94288cd76d1/ec251/lynton.webp 995w","type":"image/webp","sizes":"(min-width: 995px) 995px, 100vw"}]},"width":995,"height":560}}},"date":"May 2021"}}},{"node":{"id":"d000ef96-1be3-5e1c-bbf9-cbfd81167f83","frontmatter":{"languages":[],"priority":5,"dependencies":[],"slug":"docker_setups","link":"https://github.com/christopher-besch/docker_setups","description":"My Docker Deployments.","title":"Docker Setups","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABHElEQVR42m2S2Y6DMAxF2UFCIPZ9p2wS//99PWpS2jKTh6j4+vjaTpVt287zjKJIURRVVZU/R9f1aZqKoljXNQzDn7RlWYZhyLIsSZKyLOu69jzvBrdtS3wcx6ZpRKbUILuuo7Dv+0EQIFiW9Q3jA/N4H/xBpH/9Onmea5pm27Zpmre2SSKBzimBOWRVVVLDFo3J0Y7jQKPPb5iiSMBI8zzzg3ypUYxRKYZGV2iGYdycSej7HhuS4VmB1PgQGBksj7HJ2/f9Wts1syB/4O514IGx5c2Y3HGcq3napi9IMbnI/GybYmiu68ZxDHZbGDBWYMKW7mhNbpso30TB/v2TEMRZeOLBark/T0UleEKGaVzAdYu2IcVTcadpKtKeI4QrwQQ/6pcAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/404869fb5128fea2f3cd631ada4dcc63/d0df2/docker_setups.png","srcSet":"/static/404869fb5128fea2f3cd631ada4dcc63/f0aa7/docker_setups.png 188w,\n/static/404869fb5128fea2f3cd631ada4dcc63/f9574/docker_setups.png 375w,\n/static/404869fb5128fea2f3cd631ada4dcc63/d0df2/docker_setups.png 750w","sizes":"(min-width: 750px) 750px, 100vw"},"sources":[{"srcSet":"/static/404869fb5128fea2f3cd631ada4dcc63/d03f4/docker_setups.webp 188w,\n/static/404869fb5128fea2f3cd631ada4dcc63/cf250/docker_setups.webp 375w,\n/static/404869fb5128fea2f3cd631ada4dcc63/b9516/docker_setups.webp 750w","type":"image/webp","sizes":"(min-width: 750px) 750px, 100vw"}]},"width":750,"height":421}}},"date":"July 2022"}}},{"node":{"id":"1ee8a684-1e2e-5e14-bfbb-937cac375c4b","frontmatter":{"languages":["cpp"],"priority":6,"dependencies":["gcc","premake"],"slug":"cryptography","link":"https://github.com/christopher-besch/cryptography","description":"Cryptography Cracking Tool.","title":"Cryptography","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA7UlEQVR42sWQ3Y6DIBCFEVNEWOVnpQWxxdr2/V9xTyGSJu1e7NV+EjNzmDHnSIzXelY2GuF6yqjoBeCc9y+gpZQ2b5Dtuj1uj/t2X9M1znFZljmDIoQQY6wtOO+klCCSKk3TZK3VmXEcVabWwzDgPWZKIaUkWmn11DGkjLFlH3dluus6pDDGfGWgl1sAnUjXSy8GLzt3aLsWmfHwnZr5mfCdtCacy3pZzst3xjmHCG6niMVLBS2MkDnEcAr+GE7O4w/B9usn7A4WMM0YQ1QYhh0kIlIjE+eKc81a1jbkk71fYaTh+QhCD/SPy//FD5DPGrh7pv2mAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/a2fa82a75935e0858c6e4f4033465c43/a60e4/cryptography.png","srcSet":"/static/a2fa82a75935e0858c6e4f4033465c43/13d7a/cryptography.png 253w,\n/static/a2fa82a75935e0858c6e4f4033465c43/b09f4/cryptography.png 506w,\n/static/a2fa82a75935e0858c6e4f4033465c43/a60e4/cryptography.png 1012w","sizes":"(min-width: 1012px) 1012px, 100vw"},"sources":[{"srcSet":"/static/a2fa82a75935e0858c6e4f4033465c43/69402/cryptography.webp 253w,\n/static/a2fa82a75935e0858c6e4f4033465c43/29a8e/cryptography.webp 506w,\n/static/a2fa82a75935e0858c6e4f4033465c43/3a892/cryptography.webp 1012w","type":"image/webp","sizes":"(min-width: 1012px) 1012px, 100vw"}]},"width":1012,"height":569}}},"date":"December 2020"}}},{"node":{"id":"0561a320-4e01-507c-90d8-11dc7d6fd7ff","frontmatter":{"languages":[],"priority":6,"dependencies":[],"slug":"docker_borg_backup","link":"https://github.com/christopher-besch/docker_borg_backup","description":"Schedule Borg Backup with Docker-Compose and docker_cron.","title":"docker_borg_backup","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABlElEQVR42l1SCY7bMAz0H1pvfEiWRN2XLZ9xtugFtP//UolkWyQFBgQpaDgjUhUvCbZRn0XfZnvb7XWnKhMZqc4EQi8QjsiEuFD11sMzqroVxDn3c5PzyP0q86HGU4TtHlfmFoi7yieWHbN1J17Ibx20XLEU7bEO0jdEIqiwDYGWKiYDEa5jpm7ZiyyRFyIrzLAf6vfMq7S7+Ysp73Y6/fbNTCf4Gckt1XUHHzefUD06XahkOuu4qbDKsIAvJh92vIKbCHjlyyDjIANTiesk7Ah24ib/JaNV8DpfUVlPt7B+Bb/F48egYjOoh/MWMeiOW8wf8W67FZdeURHAFB0XFRabd+mKHw8TF+mLCrOJK+rjoU0rKuuw4M37wIQegh984GOCMBLu0KGwGb1QGTBH5xQCllxnYTIRmCQ8r/DdnTRDDKoUu8/Cxp4ZHHvPLXomjygckpHWUPWpYUj53HLEh+26ERRSPn7Z8j7efsf9u4wbDombCQUfj8QWzes/qZ5X10Nome2Ex9hQfR+kwiX9281/P+wPEFtbXIxxW1gAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/ceaebabb03fc010dde3f8c6c76ffa5e8/02437/docker_borg_backup.png","srcSet":"/static/ceaebabb03fc010dde3f8c6c76ffa5e8/f0aa7/docker_borg_backup.png 188w,\n/static/ceaebabb03fc010dde3f8c6c76ffa5e8/5bee0/docker_borg_backup.png 375w,\n/static/ceaebabb03fc010dde3f8c6c76ffa5e8/02437/docker_borg_backup.png 750w","sizes":"(min-width: 750px) 750px, 100vw"},"sources":[{"srcSet":"/static/ceaebabb03fc010dde3f8c6c76ffa5e8/d03f4/docker_borg_backup.webp 188w,\n/static/ceaebabb03fc010dde3f8c6c76ffa5e8/1e940/docker_borg_backup.webp 375w,\n/static/ceaebabb03fc010dde3f8c6c76ffa5e8/06597/docker_borg_backup.webp 750w","type":"image/webp","sizes":"(min-width: 750px) 750px, 100vw"}]},"width":750,"height":423}}},"date":"September 2022"}}},{"node":{"id":"e330b914-530e-52a0-9f17-d9a9eda50aca","frontmatter":{"languages":[],"priority":6,"dependencies":[],"slug":"docker_borg_remote","link":"https://github.com/christopher-besch/docker_borg_remote","description":"Using Borg and Docker to sync Backups.","title":"docker_borg_remote","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABmUlEQVR42m1S7Y6kIBD0MVRAHZXmowEBGWdud3Z/TC7Z93+jbfTXJZdUKtUdGroqNDezw/GlP9+zCouyq8EZ7KLxJi2Ji3sGXQddf/IlTjSsV5PO6vG9uLQqsxp7XkEz5hLEw6QujLMebhUj8aQbMSLjWox+lgFzsbFgIt5NyJjuVDpqpt2XA9OOmVD8fsd0KJcbzg0XZpiDtGH/KuGR8mt3Jfp7JEGlu0diKtNHjn+yzRv1Z4VtC80EadkeZPtmy21xevPKBzEY8tlzYEJxQQy8ihNDBeNAB5oRIhwvfP8sNpJDQFx15aX6rywNdr1sW9l1su0k6Z7JejWTNbBRblBeEHZ6U4cN0JFQfsMcAYNyXrkgjSesxg8TLaV7phg7A+t74EzPC545Fe2jckn7fCZXw9PhHw2YKS2wuRHCigmHJcw6uCOBQ5PItpMWqYF7cHswm8PszeZdOcvofaGAseHCku0lPPL7O3w8dfB1bUfDbpwNfYkrudMkMK6qpiCvwMSAtD0fbP5Mz78lPhPN08sUO2HVeI39F7+eG2b9HsHVfAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/6f7e29f23524527eadcb80896a5c8f90/0dee1/docker_borg_remote.png","srcSet":"/static/6f7e29f23524527eadcb80896a5c8f90/f0aa7/docker_borg_remote.png 188w,\n/static/6f7e29f23524527eadcb80896a5c8f90/f9574/docker_borg_remote.png 375w,\n/static/6f7e29f23524527eadcb80896a5c8f90/0dee1/docker_borg_remote.png 750w","sizes":"(min-width: 750px) 750px, 100vw"},"sources":[{"srcSet":"/static/6f7e29f23524527eadcb80896a5c8f90/d03f4/docker_borg_remote.webp 188w,\n/static/6f7e29f23524527eadcb80896a5c8f90/cf250/docker_borg_remote.webp 375w,\n/static/6f7e29f23524527eadcb80896a5c8f90/a66aa/docker_borg_remote.webp 750w","type":"image/webp","sizes":"(min-width: 750px) 750px, 100vw"}]},"width":750,"height":422}}},"date":"September 2022"}}},{"node":{"id":"887dd175-8e93-5c22-ac12-3bb8ccd12b39","frontmatter":{"languages":[],"priority":6,"dependencies":[],"slug":"docker_git_backup","link":"https://github.com/christopher-besch/docker_git_backup","description":"Backup all your Git repos with Borg and Docker.","title":"docker_git_backup","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABzUlEQVR42j2Q2Y7bMAxF8w9tk1iWLcvaJVKLt0wcTJp5KAr0pf//N1VmkAJXBAnyELw6OLODe0/hQ+kdYC/5HeBa8n2dP4ItQUcrnBmt4tYIb4ST3HnpaxSDO5yJVGKJ/mH0bUu3ayzF57+3tz9recP4e5svWB7z/QJL0qEYCMIvDkH5IMOBUNP1oSGyi7eu/BIO43VJ0+QCQElxSrZklzYDE7eeGy8DCADCzPGsDu0T9mxA6tYWLlRmSlXTqoboupe0mlLdUkVa1XWG9nXYdMy2VNfWoT7Ok7e3wazNGNnohtEx7ris0fZfGuyofE3qMCGfav/DQ+o7T+xC3FYZG1Ha4FLUAaQPGmDU3iasreaFveB6dufq5eQsWiJOjTqd1blRx5M8fyZf5ekoa1Lhl9SJVM/Vlcx9+jnYbDHO25zn5CNOa3YAcclpznx0fW959TLYqoFZNng9uufZbCzC37mIo4z7vEbtlApryVp5JWyq38utFKYgFowFEOpWWB8lV9iwPgwMaqRUdiMGnScTJLNeeK2XjiEbktV7S8P3H+Jp5+lFfjvJJ9wz6PvA8NrBRbtYlnnbSkSMOYY8c42Y98e8O4saQTpEWC/VkMd/7ChkfqX4eUAAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/5dd042425f348f19eb3c0f4669b4fec7/0dee1/docker_git_backup.png","srcSet":"/static/5dd042425f348f19eb3c0f4669b4fec7/f0aa7/docker_git_backup.png 188w,\n/static/5dd042425f348f19eb3c0f4669b4fec7/f9574/docker_git_backup.png 375w,\n/static/5dd042425f348f19eb3c0f4669b4fec7/0dee1/docker_git_backup.png 750w","sizes":"(min-width: 750px) 750px, 100vw"},"sources":[{"srcSet":"/static/5dd042425f348f19eb3c0f4669b4fec7/d03f4/docker_git_backup.webp 188w,\n/static/5dd042425f348f19eb3c0f4669b4fec7/cf250/docker_git_backup.webp 375w,\n/static/5dd042425f348f19eb3c0f4669b4fec7/a66aa/docker_git_backup.webp 750w","type":"image/webp","sizes":"(min-width: 750px) 750px, 100vw"}]},"width":750,"height":422}}},"date":"August 2022"}}},{"node":{"id":"da7c139f-f844-54d3-9645-f0e85a3087ec","frontmatter":{"languages":["typescript"],"priority":7,"dependencies":["firefox"],"slug":"bbb_autostatus","link":"https://github.com/christopher-besch/bbb_autostatus","description":"Firefox Extension Simulating Human Interaction in Video Conferences.","title":"BBB Autostatus","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABaklEQVR42n2S2U7DMBBF+///A4hC4QUKbwgksjoN3RLHCfGS1UnqcJMXhER7ZVn2yMczvuPFOI62Za3u78uiqKsK277rwk2w234pKbAez2thTqfAd19f1hmjpZIItU0dBn5A/JRRrRtjzFl4HI3vOcvlLf/OqrKY4LYmnrsJyGG/Ox52uOs8bEzge+unpzxLpeB93+m2CQOy/QoZjZWSw9Bfyuzan48Pq+i4321D5AHtubZjW6USF2qe4GEYQLm2ReNICY7Tum2J5wTEi6OjFPmlN6Oq6LCf4OhQSD70PZI71qfvOjQ+Sv4Nw405nSt7/Hh/u7m+grdojxD5aegeVnevL88pSxBBHD78D1dVxXkOqxhLshSeCYyiQI8FQyih+dQFfAKMX2HTNM2i0xqvhbdoDBxL4qip6zRNN5twhhNCCOcc1mitu1ntLHixwK0soQmNGZ3nhEopyrLM81xKqZQSQmCu/woHkPkHA2FuTLlOEvMAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/aaead84ab62c2fe90cf9a8f2484b0c08/59e57/bbb_autostatus.png","srcSet":"/static/aaead84ab62c2fe90cf9a8f2484b0c08/372d0/bbb_autostatus.png 136w,\n/static/aaead84ab62c2fe90cf9a8f2484b0c08/d8348/bbb_autostatus.png 271w,\n/static/aaead84ab62c2fe90cf9a8f2484b0c08/59e57/bbb_autostatus.png 542w","sizes":"(min-width: 542px) 542px, 100vw"},"sources":[{"srcSet":"/static/aaead84ab62c2fe90cf9a8f2484b0c08/c3c12/bbb_autostatus.webp 136w,\n/static/aaead84ab62c2fe90cf9a8f2484b0c08/67841/bbb_autostatus.webp 271w,\n/static/aaead84ab62c2fe90cf9a8f2484b0c08/89110/bbb_autostatus.webp 542w","type":"image/webp","sizes":"(min-width: 542px) 542px, 100vw"}]},"width":542,"height":305}}},"date":"May 2021"}}},{"node":{"id":"47ed664a-f0c6-51cb-aabb-9ea9e5f48ad7","frontmatter":{"languages":["typescript"],"priority":7,"dependencies":["webpack","bootstrap"],"slug":"book_page_converter","link":"https://christopher-besch.github.io/book_page_converter/public/","description":"Convert Page Numbers between Different Versions of the same Book.","title":"Book Page Converter","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABLElEQVR42q2Sy07DMBBF8wkgROyxnYedVxNB2zwEQmzZIyTED7Dh/3/gMnaaAoKC1LI4ycjKXM+9k8hVNYq6QV6USHILnWaQ2swoA0pSrhOQ4bdJAorPDhFJ0lh1HfphwHqzCfi6H0dM04i2sVhfNYHb6RptW+NSEl+mfyTyjyTLYYsChm/QjOEptVFQ5YD45hVx/4J4+wy6e4Os76G1hOKJiV0s7AUFKaRsNbMOvvaHxBarqoLIO8jNI0T3EKDtE4TrkWXJXtB/7weomlXoDxNm1sI6B8c5BsoqZEqKQPE5SFzMxGcgEhDKfLHphb3o3vLn0T8sqLAUqeelzKS7ZX3PbnEXHQqXDjT+RXRM0z8Jmh2nCvpsFpQ6TdDnmLoS0vHv41rIvJmX80vPO+f+JchTPL98AAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/2aa401fbe9cc79fdb342b5be684f994b/87706/book_page_converter.png","srcSet":"/static/2aa401fbe9cc79fdb342b5be684f994b/f80f8/book_page_converter.png 320w,\n/static/2aa401fbe9cc79fdb342b5be684f994b/9a63f/book_page_converter.png 640w,\n/static/2aa401fbe9cc79fdb342b5be684f994b/87706/book_page_converter.png 1280w","sizes":"(min-width: 1280px) 1280px, 100vw"},"sources":[{"srcSet":"/static/2aa401fbe9cc79fdb342b5be684f994b/c0bcc/book_page_converter.webp 320w,\n/static/2aa401fbe9cc79fdb342b5be684f994b/17574/book_page_converter.webp 640w,\n/static/2aa401fbe9cc79fdb342b5be684f994b/71d4d/book_page_converter.webp 1280w","type":"image/webp","sizes":"(min-width: 1280px) 1280px, 100vw"}]},"width":1280,"height":720}}},"date":"October 2021"}}},{"node":{"id":"853d8ded-24e3-5d1c-a4be-e811d31c0d95","frontmatter":{"languages":["python","typescript"],"priority":7,"dependencies":[],"slug":"jupyter_compare_view","link":"https://github.com/Octoframes/jupyter_compare_view","description":"Blend Between Multiple Images in JupyterLab.","title":"Jupyter compare_view","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAACcUlEQVR42n2TSU9TURiGu3ZgKu1tb0dQ4N6WtkDiAAShEVqppcyIDCIig8QWVEICKCCJFIMgBWoQFIwDUZMWoztETQxL9vycx0sXxATC4lmdnOe8+c77qQS5GEHQYLJmkC3byLLnIee6cDgcyDYbkiwrSDid+TiyJKQcCdFkxmi2YLJYj6AScssQdVpS0wVa6moYafEy0epjrM1Lv/8CA41uuv2F9Pd28fzFHBOTk/h815VHbGh1evQGIzrRcIgidCPqtSSlpTMxNMTnqV5ehapYCfmJ9JSzEvSzFAwwH54itvWNaDTK/PwcFRUeUtXpiEbTMUIlYbJaw/C9PpYHGgi3FfF2KEBbpZPwbTdbz7qJb26w8e49W/E4M+Ew5Z4ThRrSBJFAiYvo/Wo+jbaz2HOF/hqZkC+fP6tPWI0u8ODhI3Z3d4nFYni8104Wpmr1tHgusjZYy2KXh4VONxuDPmZqs/g+7md9JcLLyCKRSITNzU2abjSTlJJ6QkKtSJO7gA+TQZb6avg4dpevj+tY7SogXC0z+3SU12tv2NnZYW9vj57ePk6fTcag/PjxQp2RhuJsfswO83d9nvj0ILHxVr6MtDLdXs36coSfv36zvb3N/v4+wVCIU2eSjhOWoVd6qNEbyJMs3KwspaM+QPP1CmqvluC9XEBVaSGNDfV0K6k673TRfquDS4VFpKVrEhJBLx6iEsyZiAYDJlMmFksOWtGIWpmnYDQrmBAOEhisiVlpBB1qjZaUNHXi8kGRDwr+PyqdcqA3GrFYz+PIy1e2xIbd7sThdGFzOMmS7Eg2Ow6XS9kcO9mShDXzXAJLRuYR/gHUBIeYGH+vFQAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/2e29918fcd7065171abf5a9e71e3e0fa/93019/jupyter_compare_view.png","srcSet":"/static/2e29918fcd7065171abf5a9e71e3e0fa/a9b17/jupyter_compare_view.png 149w,\n/static/2e29918fcd7065171abf5a9e71e3e0fa/873d6/jupyter_compare_view.png 299w,\n/static/2e29918fcd7065171abf5a9e71e3e0fa/93019/jupyter_compare_view.png 597w","sizes":"(min-width: 597px) 597px, 100vw"},"sources":[{"srcSet":"/static/2e29918fcd7065171abf5a9e71e3e0fa/2ec87/jupyter_compare_view.webp 149w,\n/static/2e29918fcd7065171abf5a9e71e3e0fa/5b303/jupyter_compare_view.webp 299w,\n/static/2e29918fcd7065171abf5a9e71e3e0fa/faef1/jupyter_compare_view.webp 597w","type":"image/webp","sizes":"(min-width: 597px) 597px, 100vw"}]},"width":597,"height":336}}},"date":"June 2022"}}},{"node":{"id":"706b8428-0a6d-5a1f-aa07-e00dca67d519","frontmatter":{"languages":["python"],"priority":7,"dependencies":["flask","bootstrap"],"slug":"ohg_plan_parser","link":"https://github.com/christopher-besch/ohg_plan_parser","description":"Parser for the Substitution plan of the Otto-Hahn-Gymnasium Gifhorn.","title":"OHG Plan Parser","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB/UlEQVR42oVSy27TQBTN51UNXYAE++666CZSF/AHVXcVpQoClQWtVAl1BYgVom0apSnIVaNUwklIHL9mPH6MZ+zxY2K7XCeIDQuuZnHu1VydM+dM42FZyq3SueooilJW5Wj0E3C3e6WbBg38i8vz/k1/eD8sCtnv9wBf968H90PYalTL8n0PO8g0DcZYHHGEkee5nu+laUoc7LoEY5TlmQ8z4gWen4ikXpZSpmlimEZA6UoFIc5M0/T5HIYspACgwQgvykW719672Nv9uvt28Cav8pq5LEshBJAAhuUkEeGyYCJlzjmLRQzDvMg3TzY3jjaefn7W+t4ShWjA7ZXyFe1f8G8LmKbUT/xABmFGoW3keS5EbNvWfD4HtdVDVcueTeGkSaYH+n5n/+XlwcHdqxFTT3+cHnYP2zevz/QzENIowEQpoyhinMEBBngCaKastuBWV5rvHj0+ebL+fv1c+7b1YWvtaK153Nzubf9fdiKTGZ9pkTYNpzzjJjenbDqLNEPoRVX8cRsjBN5CLd0m4LCNbOISEcfIsF3kOpazkJJggm2MLcTDqI6qWCzg2YyFAQ2ggDmKOIRMKYXM0yzF8AN8yBrXOQeQtAufIoqXy7AZx9yyTFVVgQpGYN5kPNZ0zXVcFas7H3eef3nR+tQakDtLt8aT8a/JxPU8uPkb7MBLQz3lw4sAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/010debbb2895bfdad1bede28a9cad696/752b5/ohg_plan_parser.png","srcSet":"/static/010debbb2895bfdad1bede28a9cad696/06b11/ohg_plan_parser.png 109w,\n/static/010debbb2895bfdad1bede28a9cad696/d225d/ohg_plan_parser.png 219w,\n/static/010debbb2895bfdad1bede28a9cad696/752b5/ohg_plan_parser.png 437w","sizes":"(min-width: 437px) 437px, 100vw"},"sources":[{"srcSet":"/static/010debbb2895bfdad1bede28a9cad696/4be77/ohg_plan_parser.webp 109w,\n/static/010debbb2895bfdad1bede28a9cad696/4bebd/ohg_plan_parser.webp 219w,\n/static/010debbb2895bfdad1bede28a9cad696/bd60b/ohg_plan_parser.webp 437w","type":"image/webp","sizes":"(min-width: 437px) 437px, 100vw"}]},"width":437,"height":246}}},"date":"July 2018"}}},{"node":{"id":"5c6b0000-143d-520a-bbec-c67c9d219924","frontmatter":{"languages":["python"],"priority":7,"dependencies":["gephi"],"slug":"time_table_planner","link":"https://github.com/christopher-besch/time_table_planner","description":"Data Analysis and Visualization Project.","title":"Time Table Planner","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAAC00lEQVR42jWSy24bBRhG/TDAkiUP0B0SEuINYMMCJFiAEAgQO4SQogrBAoFQA20TqYQQUqc0rU18jR078W0mnvH4NjfbM/Yk49vYHt8OQyW+9f9/i3O+0FCOMvPWLH0fW9HpSBLSvTpG4ob/UlNSNIQseeGA88ounj5koPbw/SX+dMp6Nntxt91sWK9WhDYjh0pJIBKJMtRMtoMBU0VhILdYOlvC8a9J1+6DD1PHRDmUEX7qML512NpDNt6MxXzNwl0wHDqEXM3A1A1k8RqrofFOxuJp26afVJEft1l5PsupT12sYlsWeqpC7Y80QiTGu5EDMucJGvdzKOEe42lQKMsJXMtm4Qwxqg1ee6pxL9diK1yjlKpcplNYco03X7/DZx+8z6RjMciLSPunfH68h3SRw03mmNyMWAUYQm27wiyv0Nl5yG23h1dTqMezhEsq1SuB8nkGPPj76Ij8aQwCDNnCr4SffcU2KeAVytxJ7LNTTsI8KCw0D1mZHpOWiVOSGOdLJPIyrz7v0rhW6apF9tIfMq61qIpHiPIp5XqUnLTL+kpkei3xUeaEg7bI2vYCKasNarOCO+pjf/Mb/YMIg16PfkenHs6RePILXxy/jGObXLWOSVUesJ0HWmWVh/UB31+0WcfyjCQNMyUEhUt4dPkxxfwhTryMlilgXhnUTmTsgONy4uHfThjVdex8g814hXiRpRiNYuguJblLPxNDe/wnS3dMaOFvuTFM7KqCGbvECtgNCl1aR1WMjIgt9pD7Lk052GixRCfxD50AiytK/FiJU9R05mc79H//EvV5nFDvwdt41ogfYm8RLXz3YqTlxhPOIneDxxobw+bnXJPTZJ3h3nvY375CX2qDPuCT5F+c1QTWzWCzt2M0PUfIOd/FUbukMvsochrfXLLz7A0+PXyJYSAleXKCXRaZB1LG5TNuso+Y6Cp2ZB9fajGpq6wWPv/nXyYm/2M8YBggAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/6ebf595c0ce1860eeba4054c6c5cc1f5/0691c/time_table_planner.png","srcSet":"/static/6ebf595c0ce1860eeba4054c6c5cc1f5/2aa30/time_table_planner.png 285w,\n/static/6ebf595c0ce1860eeba4054c6c5cc1f5/e62cd/time_table_planner.png 570w,\n/static/6ebf595c0ce1860eeba4054c6c5cc1f5/0691c/time_table_planner.png 1139w","sizes":"(min-width: 1139px) 1139px, 100vw"},"sources":[{"srcSet":"/static/6ebf595c0ce1860eeba4054c6c5cc1f5/b343b/time_table_planner.webp 285w,\n/static/6ebf595c0ce1860eeba4054c6c5cc1f5/6375f/time_table_planner.webp 570w,\n/static/6ebf595c0ce1860eeba4054c6c5cc1f5/984aa/time_table_planner.webp 1139w","type":"image/webp","sizes":"(min-width: 1139px) 1139px, 100vw"}]},"width":1139,"height":640}}},"date":"March 2020"}}},{"node":{"id":"00a65e3b-4350-5432-9f07-eab958b7bd4c","frontmatter":{"languages":["typescript"],"priority":7,"dependencies":["bootstrap"],"slug":"who_am_i","link":"https://github.com/christopher-besch/who_am_i","description":"\"Who Am I\" Game with Your Friends as Characters.","title":"Who Am I","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42pWS2U8TURjF+2eZ+D8Yjb7Ik/oAIcH4gqgJCjFCGotRjEKwgFpCCCCFiCxuNBFLBYKRVQybdaGUlk6ns3aW/rxeDDwYEr3JyXdmvnvPzDnfDYwmkkTjP4lNrpKMvcNcXMFNZ5CrVOJ/V6B5rEBt1KSrf429x91k2p5S+DCLJ5qu4+C6Lq7nyuqI59/wPO9oQS2/i6ak0HWFnGVJ6LaNZZkCFqaopilgmBiGgS5gi/6RgulMlpSwmFcL4ssOJd+TTv82+2/2A744XdA0PMcm/glCOxNEnEY00hhaEd83WFgR77fmCDv1pEvrOKaPYRpSwLJswc1DQVs0mipPsjmfoCcO58+dpnX2FDm+0VpdzkKsj5fLcKH8Io0vjqHwlZ6GWkY6Q1Kg9951og9uSu4LdwHXKTLZfJlccpnVDpgqqyHdcgVXS5IIB9ldnWBjCN6fDfI9WEFJ2eDjQAdr491SZD4a5vPzzv1QfJ+ArhnsbG+jqArmMOR73mJHxK+msjJXy9MxXoPSOYnRNgbrKVTbRFdVKaIVCqj5/ME1CxSLRbI5RUzQYmlmiZHeQV4NjqPuqehiyoYAfgnNLOzn5gsRMXH9T26GaaHpxsHMAkXL4E7VGTYXZ4kNJ6g5cZzWa1fJpnO036hgevyZ3NheV0Wsv0PySLCa0Sd3Je+7X89gS8Nhho7IcCJ0idzWCtPReQYqyxi+HSKzk2cqXMePmTdyc7z9FluxIcmnI018Ge2SfK7vIUvRRwcZ/gLB5BjRNwUe3wAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/31a6dfc8ba3d42b8c4c0a76ae8243156/c206e/who_am_i.png","srcSet":"/static/31a6dfc8ba3d42b8c4c0a76ae8243156/c86e3/who_am_i.png 284w,\n/static/31a6dfc8ba3d42b8c4c0a76ae8243156/33bc5/who_am_i.png 569w,\n/static/31a6dfc8ba3d42b8c4c0a76ae8243156/c206e/who_am_i.png 1137w","sizes":"(min-width: 1137px) 1137px, 100vw"},"sources":[{"srcSet":"/static/31a6dfc8ba3d42b8c4c0a76ae8243156/be6c4/who_am_i.webp 284w,\n/static/31a6dfc8ba3d42b8c4c0a76ae8243156/3d74d/who_am_i.webp 569w,\n/static/31a6dfc8ba3d42b8c4c0a76ae8243156/c0cb4/who_am_i.webp 1137w","type":"image/webp","sizes":"(min-width: 1137px) 1137px, 100vw"}]},"width":1137,"height":640}}},"date":"March 2021"}}},{"node":{"id":"9ec7efcd-6eff-547c-b1db-ba631cda945b","frontmatter":{"languages":["python"],"priority":8,"dependencies":["flask","bootstrap"],"slug":"mc_royale_supervisor","link":"https://github.com/christopher-besch/mc_royale_supervisor","description":"Minecraft Battle Royale mode with Supervisor Powers through a Webinterface.","title":"MC Royale Supervisor","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB0ElEQVR42j2S227TQBCG/QZVidd7mPEevF6fUpxD4yhpSAsUigJCSFRFvYS7IvWiRXDDFbc8Am/LOIZIv0aj2f13v/3tyIcCUuNDWVWlUEiq6qY5OdHOKdQSUiGxmY2raWUrh9bQZC+kGgkFXKrU2JBb2fegjc3ynEQ7BABj8uzT/MOPy93Dtl5X1hVZURqX0Wpv7v1CjhLJ930iJOOccUEHDauYptY5AGTKCB0YOJk6mkZ7AEBtQu4Q6Spqrc28zTKFAx7GIn3CdSz1rNEvunAxd+OgEgH/sMlRBjq7x6YnuCwnf+9UEHO1W+m79+HV0rxdw+O1/X5tPm71SBywpYrFAVsxTuSCejIzAc9bebuBVcW2yt/V7QX6I2lwwKZN2jrvveoTQuOcD4ECG7CFgOysqXfzajf7/Mb/uvLfruxmIhndPLwKUk3kdM/QEzlpiOM4ll+/VH9+d/f3T8/Ps5vL/PZ1/nLhEpVGhBeTEs76kAcJqoeoEwmtl5tGFjrZaf+znb4z/kggIEb0R9TjhiollIciFGVelNRTCoOZNBJwzHEk0SM0CFS56lejRbfYbp+t1qvpbH56ulh0XbdctpMJfUb+30zwai9G4au+DvO/s45ZNDTY2I0AAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/e2c1d3c93e6c6ee28de8f535211258ea/41ea1/mc_royale_supervisor.png","srcSet":"/static/e2c1d3c93e6c6ee28de8f535211258ea/8ab74/mc_royale_supervisor.png 214w,\n/static/e2c1d3c93e6c6ee28de8f535211258ea/9f483/mc_royale_supervisor.png 428w,\n/static/e2c1d3c93e6c6ee28de8f535211258ea/41ea1/mc_royale_supervisor.png 856w","sizes":"(min-width: 856px) 856px, 100vw"},"sources":[{"srcSet":"/static/e2c1d3c93e6c6ee28de8f535211258ea/5177e/mc_royale_supervisor.webp 214w,\n/static/e2c1d3c93e6c6ee28de8f535211258ea/ae194/mc_royale_supervisor.webp 428w,\n/static/e2c1d3c93e6c6ee28de8f535211258ea/e11fc/mc_royale_supervisor.webp 856w","type":"image/webp","sizes":"(min-width: 856px) 856px, 100vw"}]},"width":856,"height":481}}},"date":"December 2019"}}},{"node":{"id":"a05a5af9-7962-52c4-9725-50ef7e3c102c","frontmatter":{"languages":["python","typescript"],"priority":8,"dependencies":["flask","webpack"],"slug":"project_omega","link":"https://github.com/christopher-besch/project_omega","description":"Article Publication Website.","title":"Project Omega","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAACDElEQVR42n1SyW4TQRD1F8RJPNNdvcxMz+KJbbxNosgiWDFbFDBEYhEIkFAuIBkuERKBE0IcuHMBPvdRPWPgkMChVF29vHr1XrfSootur4+8W8JlORKOOM1gE8c5ReTSutZRXIdZ539FS5BCbzDAldEIo/EEu3t7yLmJf0jaghSBZAhFAh1hsbFt0ZGmjm1hIDSvla4zcbQkF2leoMxzFGuW2kYomXXiHJTrQQ0OIPIKu2ONkxuEaqgxHpi6LrjxNErhjIX8DZikDv3CIYodfK340EtRZAnk6BZo+QXt2Wu8WBJ+fAhwdCCxeixw9jLAgt+t8iGqKEGgNY/MAI51yl1S65UyUz9uWpS8F0FM7oAefcPm/AwPbxO+vglwuC/x8VTg3SkDMpnznQn2bYKOB/SM4oTF542IjUjYCBvHyHj8IoshqvugJz/RXpzj2V3C9/cBjucSn18JvH0e4lqc4VNvilnkGkAvpNESRgWwzMyP6/csj2+tgSwqqNlTBMMjzCqNBzcVilxjeahw/Sqhb2McZyV2TITQa0hEENN7UIsVTFpCm8Ytz1wqXpMEBZtQslO7utFhZ1WTt0KDkO+1lWIw3bhMXMj+HLI6gbSOv0lz8Ce4M7EcZOK6mWHWap19reoJbZ0bQL/gf0bh1kUwz3TN9rKzy6L1l0V8EYxBvEFR1gVl/B9ZeNL/B/4FaEI0+0sKY2sAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/4e199f626b070295f7c3e3a7fd898e89/87706/project_omega.png","srcSet":"/static/4e199f626b070295f7c3e3a7fd898e89/f80f8/project_omega.png 320w,\n/static/4e199f626b070295f7c3e3a7fd898e89/9a63f/project_omega.png 640w,\n/static/4e199f626b070295f7c3e3a7fd898e89/87706/project_omega.png 1280w","sizes":"(min-width: 1280px) 1280px, 100vw"},"sources":[{"srcSet":"/static/4e199f626b070295f7c3e3a7fd898e89/c0bcc/project_omega.webp 320w,\n/static/4e199f626b070295f7c3e3a7fd898e89/17574/project_omega.webp 640w,\n/static/4e199f626b070295f7c3e3a7fd898e89/71d4d/project_omega.webp 1280w","type":"image/webp","sizes":"(min-width: 1280px) 1280px, 100vw"}]},"width":1280,"height":720}}},"date":"March 2021"}}},{"node":{"id":"7129211b-0f0a-572d-a253-5974ad08ac5a","frontmatter":{"languages":["python"],"priority":9,"dependencies":[],"slug":"arg_toolset","link":"https://github.com/christopher-besch/arg_toolset","description":"Toolkit aiding in solving alternate reality games.","title":"Arg Toolset","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABTUlEQVR42m2S666CQAyE9x0QRG6iIoii3ATC+z9YT74mJeTEH5OW7ky308U9Hg9ZlkXCMFREUaTxdrtpfV1XmaZJ4jiWIAjkdDoph/gL7nq9Sl3XUlWVZFmmIhomSSLP51PKslRcLheN1I/H4zbAfzhIn89H2rbVpggADai9Xi9pmkYjvPv9vnF+wUHE0vv9VotMRTOm7vteQePv9ytd18k8z9o8z3PB3R7oXFEUKmaK8/m8WUaAkB1zDriMb7jkOOKbHFBXy0zAJOSQeBBuwyIkpre1WDNqtgpywLnjEDvDMGzWILErs0vELtHE+3UAzrUh3u1BfN8Xz/PkcDiofYRm1SKTcqE9pq2AAdA6CuM4bnukOUJ2iwCYRTuz3OwyHVrdIQ0Z3QrWgBttdya0M9vrPocD1DJ2uTFNU7WLdSxDsBc2Do9lHP4I4j7/A+CPPseYlsGzAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/d9af869cd877cf16897b43771cccfaa7/9d14b/arg_toolset.png","srcSet":"/static/d9af869cd877cf16897b43771cccfaa7/d141e/arg_toolset.png 132w,\n/static/d9af869cd877cf16897b43771cccfaa7/9803f/arg_toolset.png 264w,\n/static/d9af869cd877cf16897b43771cccfaa7/9d14b/arg_toolset.png 527w","sizes":"(min-width: 527px) 527px, 100vw"},"sources":[{"srcSet":"/static/d9af869cd877cf16897b43771cccfaa7/f62d0/arg_toolset.webp 132w,\n/static/d9af869cd877cf16897b43771cccfaa7/441a7/arg_toolset.webp 264w,\n/static/d9af869cd877cf16897b43771cccfaa7/41ffa/arg_toolset.webp 527w","type":"image/webp","sizes":"(min-width: 527px) 527px, 100vw"}]},"width":527,"height":297}}},"date":"August 2020"}}},{"node":{"id":"2cd91929-b240-50ed-8199-6f16083bc8e0","frontmatter":{"languages":["cpp"],"priority":9,"dependencies":["godot"],"slug":"cmos_simulator","link":"https://github.com/christopher-besch/cmos_simulator","description":"Click some nMos and pMon Transistors together.","title":"cmos_simulator","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB+ElEQVR42n2SS4saQRSF52dlMTFKi7G7q8putX22Thx3IcF/4kYnPgluJrp3OwFBFFw4O92qe8GF4INRT24V6OAkmQuX7mq4X59zT91wzsGoTc7AbQssnwaPhcGFAGcclmXB6/WiUqlgNpuh2+3ieDxiMBhgOp1C1ul0wrluJCxshuDaGRjZJNi3HNhdEsF8gn5AwJCFTwSsVqsYj8doNps4HA7o9XqYTCZ/A6VCqcb1mdBZEMY9gZ0oNHELljJhcVLo86JcLitlq9VKDY5GI7RaLex2uyuoAppkzQ2byKc1fElpyCb8uMtqMGMcgtvweLxoNBp4/PWITqejBqXafr9/pe5VIbXB5B4F8q6GRDSIsGUgaumIOwwB/y3t8AeWyyWen8dqcDgcYrFY/McytWBkO6ThPu1B0vmMVCygOpPUYQQ+kL2feHr6jUKhcBmWK3hbFyAXIYT9PgjDgR3JQNdNGBQWFzY+enwoPzyoAanyvboAmWCk0EbB+Q7HccFMg/YnYNO18VHKpVJJDciEpUUZxmazUeeXl5frUJTlkAxGJ2gWTiwL09Tpu7jcwzNQ1nw+R61WU3dTPmXa5/RfLcthQWFEc4jHc+8CZRjFYhHtdhv1el2B1+v1G8uM0bCNjPsVkUiKzsY/gdKibGl3v99ju92q97PlP1gnYQxM37BYAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b1db4520aec38adb87983526a2e24dc5/252d5/cmos_simulator.png","srcSet":"/static/b1db4520aec38adb87983526a2e24dc5/cb1c8/cmos_simulator.png 269w,\n/static/b1db4520aec38adb87983526a2e24dc5/16840/cmos_simulator.png 539w,\n/static/b1db4520aec38adb87983526a2e24dc5/252d5/cmos_simulator.png 1077w","sizes":"(min-width: 1077px) 1077px, 100vw"},"sources":[{"srcSet":"/static/b1db4520aec38adb87983526a2e24dc5/bb587/cmos_simulator.webp 269w,\n/static/b1db4520aec38adb87983526a2e24dc5/4bca7/cmos_simulator.webp 539w,\n/static/b1db4520aec38adb87983526a2e24dc5/2d602/cmos_simulator.webp 1077w","type":"image/webp","sizes":"(min-width: 1077px) 1077px, 100vw"}]},"width":1077,"height":606}}},"date":"May 2023"}}},{"node":{"id":"682154b4-9546-5b1b-b9e0-e98bef0a0a36","frontmatter":{"languages":["python"],"priority":9,"dependencies":["docker","minecraft"],"slug":"docker_minecraft_screenshooter","link":"https://github.com/christopher-besch/docker_minecraft_screenshooter","description":"Record Minecraft Timelapse videos.","title":"docker_minecraft screenshooter","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAACjUlEQVR42iWOTW/SAACGqy7TgxsbhQ4YA+YGK6wtLZS2lJaWfkFb2tGWMTacH9N9GJ0bcFX/gO4PGI8evLhk8eBMvHjwoFHjwcX4AzzqxUQTPSDG5M17e5/3AV5+GRy9//X07Y8XJ4PHr74evvv5/NPg2cffT15/O/rwp3f/Yf/g0fHJ4Pjz4PDN9+2tzbqu5AjU0GVJKAG3HxxIl3XKY7zeBizPFZc5d3/H2LmEWwi9zEbI8RlqSrxoNPpXNvq9tWaDJnGxXLQMNYcjQJg6E6JGIWLUj52Ki+ORwjkofxoiR4KLZ6HMSCg3FsbPw2yM4hYbtmIbGkXizlKNoQiWyQNxHkwI/kTZn+ADcW4ySvsi1ESyBCFEAM8GoukxVRXatnptiV1f80osZRiKLPMMlXOsGpAgJxKYL8b6EtzkLD6ZIqZoOUQrsbyazrBQOh+QbWFztXijWbIbtiDwZl2n6YJdr5k1BUhVwFlmYl4Gk+wkpaXanZan4lUeZasEVoxgfLjS5rZWq20Nq0iVpmtWRE7Xa1a9qikiMMP5povjc5K/ZCPrV9sKlSktRlsrDl6OwwWwtTL8M1sSctPKODIhi5xp6pZtaWqlpklAjPFdUMAFGVItvuU2HYm5vtoqa+QCD/IavNJe9iR81870m9k9B+momXpNUNWKqkrDAHA1gJcDuBC+QIFJMlTSSEkvEsUIzAdba/q9u3c6GtJ10Z6X7XpY10O3jHRHSbli2iyjQFLzs3RgHvPHs/4UC8FCEBaDSDWKCKGyRNmm3pGTew7adbNdFxv2UKHfRLuNzC0zBaASmCXBBOGfJ8EkE4S5ECpPo+o0Volghbhlm73dne1GYd9But7//T9Eb2jhon8BCT+yvCMA7T4AAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/918bfbc61528540e93979b38c00bffea/afa5c/docker_minecraft_screenshooter.png","srcSet":"/static/918bfbc61528540e93979b38c00bffea/2fe1e/docker_minecraft_screenshooter.png 480w,\n/static/918bfbc61528540e93979b38c00bffea/9bec7/docker_minecraft_screenshooter.png 960w,\n/static/918bfbc61528540e93979b38c00bffea/afa5c/docker_minecraft_screenshooter.png 1920w","sizes":"(min-width: 1920px) 1920px, 100vw"},"sources":[{"srcSet":"/static/918bfbc61528540e93979b38c00bffea/3a3a2/docker_minecraft_screenshooter.webp 480w,\n/static/918bfbc61528540e93979b38c00bffea/bde8a/docker_minecraft_screenshooter.webp 960w,\n/static/918bfbc61528540e93979b38c00bffea/c512e/docker_minecraft_screenshooter.webp 1920w","type":"image/webp","sizes":"(min-width: 1920px) 1920px, 100vw"}]},"width":1920,"height":1080}}},"date":"March 2023"}}},{"node":{"id":"1d1c76e2-efb0-523c-af84-b0f2c4f87211","frontmatter":{"languages":["cpp"],"priority":9,"dependencies":["glm","godot"],"slug":"glome_projection","link":"https://github.com/christopher-besch/glome_projection","description":"Interactively Project 4D Sphere onto 2D Screen.","title":"glome_projection","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABKUlEQVR42lWS6U4CMRRGDyiKEUHBBQfEhVGUCLj/cI8a9QWM7/8m3jnjEGia26btt9xvBujBDuzDBXzCA2xBBdZhF/bgFurMj0toukmgDR0puvAM3zCBDWj4JoVzKOWwfAnA2E0otKBmDYoDOIEvePQwbjcFJzPYbFxZw2FVq9uwpmC868O1sy5pnAxhcVa8WVC8FN2+W3t2Gy7uzGJV8YFmp9io5VjeVJiYQjT8q+eOFKdwo3jD5I5hAZbyWcpqRjnUZ7w+M4gA35tfImO3SGRoX6j533xqSDEPYeSLkebz/Afy1uyxP+88G7lCokKqeKi9Cm6bSJhfMchcYw7cKvrpKRvgJ/gowGOvqn6zxK9Ynv1buvIdeZea8I8sdcEj3S4beEvqyhT5BwVfFxtLtlefAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/311e9ddcb1e37c3b3a82f909b721b43f/afa5c/glome_projection.png","srcSet":"/static/311e9ddcb1e37c3b3a82f909b721b43f/2fe1e/glome_projection.png 480w,\n/static/311e9ddcb1e37c3b3a82f909b721b43f/9bec7/glome_projection.png 960w,\n/static/311e9ddcb1e37c3b3a82f909b721b43f/afa5c/glome_projection.png 1920w","sizes":"(min-width: 1920px) 1920px, 100vw"},"sources":[{"srcSet":"/static/311e9ddcb1e37c3b3a82f909b721b43f/3a3a2/glome_projection.webp 480w,\n/static/311e9ddcb1e37c3b3a82f909b721b43f/bde8a/glome_projection.webp 960w,\n/static/311e9ddcb1e37c3b3a82f909b721b43f/c512e/glome_projection.webp 1920w","type":"image/webp","sizes":"(min-width: 1920px) 1920px, 100vw"}]},"width":1920,"height":1080}}},"date":"January 2023"}}},{"node":{"id":"b4c72d3d-c69e-521e-ae22-a29ff7a64c53","frontmatter":{"languages":["python"],"priority":9,"dependencies":["ffmpeg","youtube-dl"],"slug":"lofi_girl_downloader","link":"https://github.com/christopher-besch/lofi_girl_downloader","description":"Download and order all music from Lofi Girl.","title":"Lofi Girl Downloader","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABPklEQVR42l3SV5bCQAxEUYMxJsxg4Nhgcg77X+FcWpP1oSM3raonNdnhcNhsNqvVar1eN02z3+8Xi4Xi7StGo5E8Ho/fU5Rl2ev1ut1uJm632+l0Oh6P8na7vd/vbduS2+12bQpaFJ3IPufzeVVVtKhkl8vler3qfD6ffqaCJXL45HleFEWZot/vq+NEnXFgCNttJmom4blcLjG7JA+HQ26dTif7HbCDWSYB2/Ak4NEybV3XTQq0RYpAeDVjRq7z8XgwpwL+fD47mU6n7v1bm7af5tg2SG6xm1i722b+zrBD4g8258AWVEwRY9cpdJpcGwqKk8lEzVYxGAxeM+vnDzuAAx5LPKyraAMhXtjaLPz11MEpbIuVT1YKg+mfzWY6edofz+jJU3xix6q9M0/Lk70fucCGRwKnOv4bsQK9H5rmMIWxkW/CAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b400baaa5c2bdb1e044a962fc2c88517/f3b86/lofi_girl_downloader.png","srcSet":"/static/b400baaa5c2bdb1e044a962fc2c88517/ece18/lofi_girl_downloader.png 207w,\n/static/b400baaa5c2bdb1e044a962fc2c88517/c9837/lofi_girl_downloader.png 415w,\n/static/b400baaa5c2bdb1e044a962fc2c88517/f3b86/lofi_girl_downloader.png 829w","sizes":"(min-width: 829px) 829px, 100vw"},"sources":[{"srcSet":"/static/b400baaa5c2bdb1e044a962fc2c88517/068c1/lofi_girl_downloader.webp 207w,\n/static/b400baaa5c2bdb1e044a962fc2c88517/74295/lofi_girl_downloader.webp 415w,\n/static/b400baaa5c2bdb1e044a962fc2c88517/741ae/lofi_girl_downloader.webp 829w","type":"image/webp","sizes":"(min-width: 829px) 829px, 100vw"}]},"width":829,"height":467}}},"date":"August 2021"}}},{"node":{"id":"becaac7b-3c8d-5865-8e60-2aec2e134b50","frontmatter":{"languages":["typescript"],"priority":9,"dependencies":["gatsby","cors_anywhere","react-big-calendar"],"slug":"therapy_search","link":"https://github.com/christopher-besch/therapy_search","description":"Compute Call Times into a Calendar.","title":"therapy_search","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAACtElEQVR42m2SyU8TcRSA5z8xnvWi8eISE6+evJiYuCTggkgIKCBRBFeiuLBrUQQXqlCLUEAoIlCULkAtHTq0FApuQFtkaSlQcMvnb0ZO6uHLm5d5+eW97z1pYW6OD8E5RmfiBGZWCHyNMz4bZ0x8+8PLKFMxPJMxhgTK9BIjoWW8wSV8IvpVwita7lHrBNK3eAx9l8K+gtccLOokodzC4ZIuUip7OaF7R/ojO9n6frJr+jj/bIArRhfXG2UuGQe5Wj9I/ks3uXXvOfPEQdbTPqTv4kFdq5utWY3syjGxM6dJxCYSyiwcvdtDpihMrrSR9sjB2Zp+Tj6w0uicpFWexjwUot0Tosc/y/tPUayBeaS1pQgFRgcbk5+z+4KJTWkGtmYaKTDJPH0XIPGehQ1JerZkvGBbVj2b0w3kNwxS0qpw2eAk+X4P1+pdVHb50XX4kFZiEZoco6IDG5eNTgqaZG42y1R1+yl/PSyKvJS0KTzoGuG5bYJa+wdKzQqFr4a41ewmp7ZfjO3ionj8douMFF+K0jYQ4KzeyZ0WBYvvK93eGV65pzE4PtGhhOmbiGi56lAdO73azvF7b0mrtpH60Cpym+b8zGMH0nIsikX+SFn7COVmL/tvv2FPXgtHSrvZm2/mQOEbDhV3ki2E19k/ou+d0LyZh4K0CzqUEJ3DYdHIjPAaVDtc1Dq8ZHSTV+dk+zkTO86bOC22myEWom2yQaa4dVh4GqPM7BMj+ygSuRp1HX6K27zcMHmELg9SZGGe8el5XJ8XcX+JIot7Gxb3NhX9Tij2k8jaL74Bsys/xOgLGqPr9/rnZlcZE9Gv3q1AWhUOTfZRMmuc5BpcmsvUKgdJ960axyp6SdT1crzCSkqVXUM9o785tY5wuIg8EabFLZx4gpqfNnFjqo9/EIvR+N+/dX4DLBO43njKsuEAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/94a34e571c20f8d09ace3b0ab1c8cbc3/13309/therapy_search.png","srcSet":"/static/94a34e571c20f8d09ace3b0ab1c8cbc3/c475f/therapy_search.png 267w,\n/static/94a34e571c20f8d09ace3b0ab1c8cbc3/94713/therapy_search.png 534w,\n/static/94a34e571c20f8d09ace3b0ab1c8cbc3/13309/therapy_search.png 1068w","sizes":"(min-width: 1068px) 1068px, 100vw"},"sources":[{"srcSet":"/static/94a34e571c20f8d09ace3b0ab1c8cbc3/37b30/therapy_search.webp 267w,\n/static/94a34e571c20f8d09ace3b0ab1c8cbc3/788c4/therapy_search.webp 534w,\n/static/94a34e571c20f8d09ace3b0ab1c8cbc3/d158a/therapy_search.webp 1068w","type":"image/webp","sizes":"(min-width: 1068px) 1068px, 100vw"}]},"width":1068,"height":600}}},"date":"August 2022"}}},{"node":{"id":"b5e35dbf-f008-5c5b-a036-71b512291d78","frontmatter":{"languages":["python"],"priority":21,"dependencies":[],"slug":"technik3_plan","link":"https://github.com/christopher-besch/technik3-plan","description":"Plan a School Event.","title":"Technik³ Plan","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABSElEQVR42iXR6W7CQAwE4H3/J6xUtQUBSTiz5IQEpH6s/WMztsfjI+nr+6euj23bnk6n3W53PB5vH2t/f/9Y1/VwXdfb7Rbhcrns9/uqqgXbNqd1XXJum6aRm+cZQJXxHg4HMiJVVU3TRBeWejwe1+sVSKLn87nrumEY7vc7LKdD3/fjOAZgdHFEEJ7PJyEgzYXaFlMvRC6EuYA3upFWbxzF+2IpxIJhVEJyMBJsbG0RYhe0zWZD0SJWSMMw+pAgHNcyIbagl6tAQxdRDFAJ5qe4rpuy2JBzJiEdncnrqSaKKQYBeVmWmCtJr+v6KIbh5SqIO9k/MEVZLvx6vZZixh6snovpYBiuaW1F14R+vgjRz58tHGWhlTSLgzFT3eL356xAnAQeFxWOixhNPbk0zfOtXA/bVDbR/F5MDXZciISBNRB8v9/R/B/CzWj/TJl9EAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/faa3120c358f8722a4cf8d351c7ad243/380c0/technik3_plan.png","srcSet":"/static/faa3120c358f8722a4cf8d351c7ad243/ccf6a/technik3_plan.png 178w,\n/static/faa3120c358f8722a4cf8d351c7ad243/d4ef9/technik3_plan.png 355w,\n/static/faa3120c358f8722a4cf8d351c7ad243/380c0/technik3_plan.png 710w","sizes":"(min-width: 710px) 710px, 100vw"},"sources":[{"srcSet":"/static/faa3120c358f8722a4cf8d351c7ad243/744a3/technik3_plan.webp 178w,\n/static/faa3120c358f8722a4cf8d351c7ad243/7d728/technik3_plan.webp 355w,\n/static/faa3120c358f8722a4cf8d351c7ad243/09b79/technik3_plan.webp 710w","type":"image/webp","sizes":"(min-width: 710px) 710px, 100vw"}]},"width":710,"height":400}}},"date":"February 2019"}}},{"node":{"id":"b3b0a78c-e001-514a-a073-261c08a75a40","frontmatter":{"languages":["typescript"],"priority":31,"dependencies":["gatsby"],"slug":"homepage","link":"https://github.com/christopher-besch/homepage","description":"This Homepage.","title":"Homepage","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAAC/ElEQVR42h2TXWhbZRjHc+Mq22q2tixr89nk5OQk5+Sck69zkpxkaZdt6TbEtixFlFXtKhMZ4pS1Ll3XshUvnFMEZTimKDLEOb3Y1fCmiODGGNONMlDBXQji54XzzpufT3LxwPO+vO//z/P7v6/v8LPzdDpLnFo6xfLaOT745AqKqrEjsLNX/m3b2Tkc4ImZY8wePU9nbY3VxbO88Nwr+IdH8IdCbB0com/zFkYio/imDs1gWRaBkSCnV1a4fed7wrE4wWCIgYFB/P5tRGIxDs/NcXp1lYUzZ3nryKscm36eoUiEUGyUoUCARzZtIhyN4ys4ZSrVCiXXpT3TZnJqCsO0e3uGmcUtu+zdN4FpF6h4dbJZC9erUhsfx87l8aQvOSW8mke13hBBt0bR9XCqdcxciXhKp1Sp40jpVgFDhDTDRs1kiSoacTVNNKEymsz0zuWdCmkx0XQTVbfwOc0Gu1sTjDdbNFsHaOyZIGWYROKKjJ4gGI6JQIrJ9iyLCx1OdJZZWjnDU7NHUDRDjCzi6RyxpEbazOObfLpNZ7nD4msLdE6eZH7+qAiNsmXrZvr7+3m0r4/Htg9w9Ytr/PvXH/z59y/Af3x+9UsGdwwLtwShRJYh6bvGvlp9N60D+6nUasKqxbSEpKZ18oUCqpZGVVOCw6M9Nc2Lz8xx6OBBlk4c56WXj5MSDF6tLlOEhd8umvv247MKJSw7JwFYAt4WFgZWvihcXXKFIna+0AspI2XYFsl0hrQg6Z7xdgmuPU1cMWyMjVEqV/HptiPM7B74hLBQhIlhd03KGDkHq1hGl7XrjVEf39sLolCukXM8imVJPe9iSmVMCS8rDLvpxCSASMrEscNER8K88967fHX7Ore+u8tvv/7O5c+ucOH9i/z04w9sbGzwz8OHXPrwI4KRKIqioAmaYDBIUtO7gpKSkiJZavDk4znKMvLr597m6zvfcOPmLe7eu8/Hlz/ljTfPc/PGt6yvr/PzgwdcuHhJ7iXlU9joelbeZI68TPM/0daVA+bTPIwAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/b95e29677cb3c79ceb36176372272f18/87706/homepage.png","srcSet":"/static/b95e29677cb3c79ceb36176372272f18/f80f8/homepage.png 320w,\n/static/b95e29677cb3c79ceb36176372272f18/9a63f/homepage.png 640w,\n/static/b95e29677cb3c79ceb36176372272f18/87706/homepage.png 1280w","sizes":"(min-width: 1280px) 1280px, 100vw"},"sources":[{"srcSet":"/static/b95e29677cb3c79ceb36176372272f18/c0bcc/homepage.webp 320w,\n/static/b95e29677cb3c79ceb36176372272f18/17574/homepage.webp 640w,\n/static/b95e29677cb3c79ceb36176372272f18/71d4d/homepage.webp 1280w","type":"image/webp","sizes":"(min-width: 1280px) 1280px, 100vw"}]},"width":1280,"height":720}}},"date":"December 2021"}}},{"node":{"id":"a9f19df4-0623-5e91-a9e1-307d9c208b7f","frontmatter":{"languages":["cpp"],"priority":32,"dependencies":[],"slug":"bwinf_39_round2","link":"https://github.com/christopher-besch/bwinf_39_round2","description":"Coding Competition.","title":"BwInf 39 Round 2","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABK0lEQVR42lVS7ZKDIAzk/Z+wdlqvM53pFeupBcKHELxALOftj8y6bpIFFdsB3vt5nrXSAPCuADBMdAUi7tacqQjmWJFSrmIzZMRMItGDgqk6SzM/c9Ns9GLfbVY1b9MyYXAHcYuI8zRuGcVfEnqdUWpJ9RggWrvKn/I2YQuclneclEgptUhUn1r66I/N2fssB/wY9jVgk3yV2E0NKUgjOWHzgVNGlc37mupdxzEpEG0n+Z9q9MmzwqIL8akHOki7rXI1AIsa9wtzzllrocDywcjEojGGSAkVgquwFeCs875cGHxAX3JdV05YJllLCvXzL/Bd8Xg8hmG43+9SSkFqjJEqzWZC/cSJUDMpzFmk2nSaLr4q+r6/3W6XClbO5/PpdLr8R7N1XXe9Xn8B22Z9MJvbQvYAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/19bb00250071e5e6256839013240dd1f/721bf/bwinf_39_round2.png","srcSet":"/static/19bb00250071e5e6256839013240dd1f/822d2/bwinf_39_round2.png 211w,\n/static/19bb00250071e5e6256839013240dd1f/7f025/bwinf_39_round2.png 422w,\n/static/19bb00250071e5e6256839013240dd1f/721bf/bwinf_39_round2.png 843w","sizes":"(min-width: 843px) 843px, 100vw"},"sources":[{"srcSet":"/static/19bb00250071e5e6256839013240dd1f/36c97/bwinf_39_round2.webp 211w,\n/static/19bb00250071e5e6256839013240dd1f/ca09e/bwinf_39_round2.webp 422w,\n/static/19bb00250071e5e6256839013240dd1f/f5388/bwinf_39_round2.webp 843w","type":"image/webp","sizes":"(min-width: 843px) 843px, 100vw"}]},"width":843,"height":474}}},"date":"December 2020"}}},{"node":{"id":"a8c27062-4837-548b-a7bd-68445362f3c6","frontmatter":{"languages":["cpp"],"priority":32,"dependencies":[],"slug":"bwinf_40_round1","link":"https://github.com/yves147/bwinf40","description":"Coding Competition.","title":"BwInf 40 Round 1","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA/0lEQVR42m2RWQ6DQAxD5/63ZBESYmfYaaGvY5QilXwgJxPHTnDrus7zfJ5n27be+3Ec+76n4kNQpMKXhm3b7PsK4YZhmKbpOI6iKKBVVQVYloUiz+8QgGcyIjD3fS/Lkip8pAA4oshoMOB8iq8yZFrTNCVvmkZGwABSm0snsvJykVlM5DiOtbnU5JBXI7MRbVhjKHyeHsi6nwUjuIKRu67jIoC6rh2TWJ0kSRLtDJZtI/8rwyd1nAeEjTzPtRjpEUJkRiMiUwxSA4D0ezB80pFlGR240rUtmKtFOB7KrEkKIL3+Mx22M+S7soXZ/pGZpH8TRREj9Pb4V5HB4F35A+Nyfyvs76hkAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/a1ce44f6ee62cb4c329694ea10a70535/372ef/bwinf_40_round1.png","srcSet":"/static/a1ce44f6ee62cb4c329694ea10a70535/ec668/bwinf_40_round1.png 183w,\n/static/a1ce44f6ee62cb4c329694ea10a70535/d8edb/bwinf_40_round1.png 366w,\n/static/a1ce44f6ee62cb4c329694ea10a70535/372ef/bwinf_40_round1.png 731w","sizes":"(min-width: 731px) 731px, 100vw"},"sources":[{"srcSet":"/static/a1ce44f6ee62cb4c329694ea10a70535/5ba27/bwinf_40_round1.webp 183w,\n/static/a1ce44f6ee62cb4c329694ea10a70535/cd823/bwinf_40_round1.webp 366w,\n/static/a1ce44f6ee62cb4c329694ea10a70535/b87cd/bwinf_40_round1.webp 731w","type":"image/webp","sizes":"(min-width: 731px) 731px, 100vw"}]},"width":731,"height":411}}},"date":"August 2021"}}},{"node":{"id":"b20898a3-5f60-559e-bbb1-0325a0fa22e7","frontmatter":{"languages":["typescript"],"priority":32,"dependencies":["webpack"],"slug":"project_orange","link":"https://github.com/Science-Camp-Softwareentwicklung-02-22/TeamOrange","description":"Top-Down Shooter in a Week","title":"Project Orange","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAC4jAAAuIwF4pT92AAAB6klEQVR42oWSS09TURSF93neFtIHWqHUS8VEGDggYDRKWisOTAjhnVDEQDACCSFh4liLgo/SgCYSExL+A79CB8YJE3/PYp+eC1xAwmAPzt17fXetfQ4REXxJkLRcSdi2IsKheRQqr9BeriL7YAS5R+O4VZ5BsreE/OAU2u70sUZ7jZA448SAQgXcNOgtVjA38R2L01zDu3j9/AtWx/bQWDnE9ON1DPbPI5EOeZbnpbkC2PzITWqBtTkYnUUmcRc/V/bxZ/s3/u0f4W/jF+53PIG2NyBNCqQSrFOsEZeBUgp05g3CrgBBwMNBOzKZIsYeVjFRmsObF6voKQywo1YI62BJ784lEwIiDrSG8LJK2NpU2KhZvF1L49lACClSzWHnwP1QKt6XbmGYW42OUgkoyYZEDPi0RNjZIdRqhI13Eo2vBgujGpYsLDtxu9UmgFImAp3E9FEvAWdnCNt1hjHw43tC/QNhfUkhwbcYMEQJ78JotxoPOCl3tvxdyxiwUiZ82yVscuQfW1nsMXxy3A9YdpPLdiCfu3m6JxErd9YXHRojMVuVqH9SOPicxPKSRDrl9qOaQ523e9DVfc9DxLkb/X9kL9Qo5DXCUHEM7R9tVIr7mi9FsUi7F3E9MIoifPOiAx+dYZHIQdUVwGO8DxRGOMZEcAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/bd189e0525155225c9b2b33a04628548/a7193/project_orange.png","srcSet":"/static/bd189e0525155225c9b2b33a04628548/c9e85/project_orange.png 367w,\n/static/bd189e0525155225c9b2b33a04628548/8bc6d/project_orange.png 735w,\n/static/bd189e0525155225c9b2b33a04628548/a7193/project_orange.png 1469w","sizes":"(min-width: 1469px) 1469px, 100vw"},"sources":[{"srcSet":"/static/bd189e0525155225c9b2b33a04628548/0b8bd/project_orange.webp 367w,\n/static/bd189e0525155225c9b2b33a04628548/0fe8f/project_orange.webp 735w,\n/static/bd189e0525155225c9b2b33a04628548/1f94c/project_orange.webp 1469w","type":"image/webp","sizes":"(min-width: 1469px) 1469px, 100vw"}]},"width":1469,"height":826}}},"date":"February 2022"}}},{"node":{"id":"406da497-60f2-5a90-aed2-d65c3e5f0e54","frontmatter":{"languages":["typescript"],"priority":32,"dependencies":["gatsby"],"slug":"quote_rater","link":"https://github.com/christopher-besch/quote_rater","description":"Rate Quotes to Order them.","title":"Quote Rater","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB30lEQVR42m2QfWvTUBjF82FUNiVpm/eb96Rt0jXp2oQ0SZOmrd262Y5uOFT0jykKQ0T9Rxm+bus6t0zoN5plhdLv4XWKjHXw4+HAPee5hwdRdau9vuFFrbC5stbbWnZr9zu91Qf9TrcPp2V7BFBITiGAPA8iZZf6D590elsw093cdoOGZfvttY1uf7vT29QtB2clTskDOc9KuWsgvGrIuSJ84xSdEbMwaXvRshOUbL/kBJVq6Ph16GEETVANXtGvguhmZansOkFcqUaw87f9wfn5r9lsNh6PLy4m0+l0MpnsvnknaAVY4Vp/5PGznUdPdzSjlCuWDcvWCqXnL3eTn6P9wyFcdHj0A87jkzN4FIzkKF6F+f8gL169hih5EzZHSS5NC9CEEgBqjOJR4lITIMNIV2P/wqbtBXE7bK46fqwalpw3xWwBVvrT8NLx97ebr/32/YfkbHQ0PD1NRsPjZDBMDgYne5++f9z78vnrQb21fg8HtJCleG0exCy7tXrT9SPHC6u1uBrEXq3hhY0gakWNFU0vpkiwiBELKD4PgmboNMWmSYDhUIAUwWYogOJ0imRTBEOyAgXEO3ex24voPAhO80BQaE5iBYXhZU7SgKjSnMjLGivIUMMVtxbQG/kNQbvKNyMkz3AAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/14b1f3f938711f94880e5b0952b6d916/fec1d/quote_rater.png","srcSet":"/static/14b1f3f938711f94880e5b0952b6d916/4a3eb/quote_rater.png 181w,\n/static/14b1f3f938711f94880e5b0952b6d916/f9f2a/quote_rater.png 361w,\n/static/14b1f3f938711f94880e5b0952b6d916/fec1d/quote_rater.png 722w","sizes":"(min-width: 722px) 722px, 100vw"},"sources":[{"srcSet":"/static/14b1f3f938711f94880e5b0952b6d916/f6540/quote_rater.webp 181w,\n/static/14b1f3f938711f94880e5b0952b6d916/9a7e4/quote_rater.webp 361w,\n/static/14b1f3f938711f94880e5b0952b6d916/ca151/quote_rater.webp 722w","type":"image/webp","sizes":"(min-width: 722px) 722px, 100vw"}]},"width":722,"height":406}}},"date":"January 2022"}}},{"node":{"id":"5174106e-4bb8-5300-b455-253fb3796a88","frontmatter":{"languages":["python"],"priority":33,"dependencies":[],"slug":"bwinf_39_round1","link":"https://github.com/christopher-besch/bwinf_39_round1","description":"Coding Competition.","title":"BwInf 39 Round 1","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA/ElEQVR42m2S1w7DMAwD+/+fGWTD2c5ePZitmwbRE0vpTMX163SVZVkYhnVdx3EcRVFVVYggCHCSJEEYYxiglaYprW3boF6Cp2nq+x6rLMu2bXGMq33f4fM81zSHNk2DOI7jB6/rCs+EtXYcR3rDMCBwEJiCCeDnHZ7nmQY5HIzAQXRdxxCiKApamDjq/sHLspBMPmkIegqBQfAhPpmBB1hLsqEWAyAHeHDFuUpm4A6TRsPDPhmHQ6/JD9/sYS0mGEGydSV4dHV+6wNj8TdoSbVJ46pwtKpgxMOFcduagETrFBwl+7Wfb5tR/g8sHoYeCW9DybQQgnlC10fyBjUMf1U31Al4AAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/95e492f6b8b078f6280ffcb9c31a7eb2/ee310/bwinf_39_round1.png","srcSet":"/static/95e492f6b8b078f6280ffcb9c31a7eb2/27103/bwinf_39_round1.png 189w,\n/static/95e492f6b8b078f6280ffcb9c31a7eb2/48b82/bwinf_39_round1.png 377w,\n/static/95e492f6b8b078f6280ffcb9c31a7eb2/ee310/bwinf_39_round1.png 754w","sizes":"(min-width: 754px) 754px, 100vw"},"sources":[{"srcSet":"/static/95e492f6b8b078f6280ffcb9c31a7eb2/d03cf/bwinf_39_round1.webp 189w,\n/static/95e492f6b8b078f6280ffcb9c31a7eb2/c7b47/bwinf_39_round1.webp 377w,\n/static/95e492f6b8b078f6280ffcb9c31a7eb2/ac176/bwinf_39_round1.webp 754w","type":"image/webp","sizes":"(min-width: 754px) 754px, 100vw"}]},"width":754,"height":425}}},"date":"August 2020"}}},{"node":{"id":"c573109b-9a4d-501e-b0cd-91f7808e1288","frontmatter":{"languages":[],"priority":34,"dependencies":["blender"],"slug":"blender_models","link":"https://github.com/christopher-besch/blender_models","description":"Amateur 3D Models created with Blender.","title":"Blender Models","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABvklEQVR42m2QW4/aMBCF82/60oe+VKpUlS1ll9KmkBuEXEhiezyesEBCEki4/Pk6tNA+rPRpbNnnzPjYOLRd253a01nT3Wq/uVy666W7nNtLf6g5t9drfTrjvma7tr3pu7NRNYfmcKwPR12burkth5qKihcdr7tM0zTpnp786N2Av/8afzHL11KPbJrW2O6KXVlWalPGagvrel1UsBZmmI7mYGW5x7e/wmoQ0kdz/mHIP5np558UQ1HVu6I0JCpFRDHb2VBYSB7kHlMvAQ3CfBjDLJATm/9wkmmgvqfpLFpZIcuEojVSbgiQUqjNQlRzWI9X23FWmbD/JooXUbg8WSxTxw48Z/w89oe2P3JiK0SVg1QaAwD18E2cH91NbnHwmHSZsFOYRDjx0QqFE2IQOtPpfDKLnheRF0qptEVjgEQg9ZrkhUuJv4qDOMnSjHEpEDPodUQyTbjtZnZAU8aCDDlKpRCxN+seCEokgoEOgahII5FkX/sJgJgzgphLMwndpUwAif5O/qPQSXrDHfwf3U4Sm65olPhPFo+4/i0pSZvVG+qH54F+2jJlbiIjeBwaOtXb6jvqjs4JOmr+7+o3UgD/d1vX2VsAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/fec5ea1ede618e8a5b9b43714d665ecb/82514/blender_models.png","srcSet":"/static/fec5ea1ede618e8a5b9b43714d665ecb/aa5e8/blender_models.png 353w,\n/static/fec5ea1ede618e8a5b9b43714d665ecb/0abdc/blender_models.png 706w,\n/static/fec5ea1ede618e8a5b9b43714d665ecb/82514/blender_models.png 1411w","sizes":"(min-width: 1411px) 1411px, 100vw"},"sources":[{"srcSet":"/static/fec5ea1ede618e8a5b9b43714d665ecb/d1a36/blender_models.webp 353w,\n/static/fec5ea1ede618e8a5b9b43714d665ecb/76822/blender_models.webp 706w,\n/static/fec5ea1ede618e8a5b9b43714d665ecb/8cbe2/blender_models.webp 1411w","type":"image/webp","sizes":"(min-width: 1411px) 1411px, 100vw"}]},"width":1411,"height":794}}},"date":"May 2020"}}},{"node":{"id":"a0437b0a-4bd1-5136-95bc-f8347a2c6433","frontmatter":{"languages":["java"],"priority":35,"dependencies":[],"slug":"java_encryption","link":"https://github.com/christopher-besch/java_encryption","description":"A Funky Encryption Algorithm no one should ever use.","title":"Java Encryption","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABuUlEQVR42lVSCW6DMBDk/39r7kLShIbDHL7tYJvT0IUqqjrCaD2rYbwegrZtuRBcSiEl45xxoZRaGaWk1vKlmZCUca0VY4xSKqDFOcEYhEFrXYsQPLqqZJ6XSSIQavJ8QmgsirFAA2wRkgiZ18uPg59n7+cJ1jwHjBCx2/VhKM9nejx2YciezyZNxufT3G5D/K2+vtjjQaMovZwdwYuUngtP2dR1wSiE+9j1l4vb79XpqC+XKo5tUbSMaUKclA2jnrFBiJfS4Lb8wvsFnCchqsNxuN/Bs4mi/nRihwP4ZJ+f9Hp1j7t9PJrbra9rV9cjrmsYAZNVD+JFKbHft2HUxTErCo+xwUQQYssSZ/lIyEhpj3EvJS2KrqomQiZrfw8QLNa6LOvzfClLnSZwT64sDCW9sVLp0VhvzNQ0s2sHu9ZL1y5vBM45CEmCP2SzhUQoBWJ7r1sIjAmhtKac15Ra5/7EsIZhgGy1WpOEACVcIXxRrIGvmXPedR2FQazdJp3/iYGNouh6vX5vgCJJkizL0jQNwzCO4zzPoQYSirIsm6b5J66qCnrwA0Eb/O0G8DfGtG8AYza498l/ABSvZSyj/dM1AAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/3d1330b24531a344824d900190760ca4/b027b/java_encryption.png","srcSet":"/static/3d1330b24531a344824d900190760ca4/1f596/java_encryption.png 152w,\n/static/3d1330b24531a344824d900190760ca4/f6b65/java_encryption.png 305w,\n/static/3d1330b24531a344824d900190760ca4/b027b/java_encryption.png 609w","sizes":"(min-width: 609px) 609px, 100vw"},"sources":[{"srcSet":"/static/3d1330b24531a344824d900190760ca4/c4b59/java_encryption.webp 152w,\n/static/3d1330b24531a344824d900190760ca4/b29a5/java_encryption.webp 305w,\n/static/3d1330b24531a344824d900190760ca4/26613/java_encryption.webp 609w","type":"image/webp","sizes":"(min-width: 609px) 609px, 100vw"}]},"width":609,"height":342}}},"date":"February 2021"}}},{"node":{"id":"075a429f-cef7-5042-89f2-88593af6cc5f","frontmatter":{"languages":["java"],"priority":35,"dependencies":["sqllite","spark","maven"],"slug":"social_blog","link":"https://github.com/pascal-kuschkowitz/Inf-Proj-ProductDev","description":"A little School Project using SQLite and Java.","title":"Social Blog","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA+0lEQVR42pWS626DMAyFef+nW7dSaZU29q8jCSThEgIFzux0kSqtkM6SJSu2D/6MM2MstDHo3QA/jsEH72+xH8N77xzcMGC6XpOe4dccNTVNA60N2rYLcdd1+K9l67qGoBQCxzzH2zHHy+EV+emEj88CMf+0YKqABaM/k8vuk0pVkFIRak/YbcCODcuyUE7CWPtnHZuC3CCERK01iSvUdY1b7Yp5nnG5fEPSu6a8JdGk4BYWT8e+t5LHE9LXGdkSFp9TLIyiZSkCMuNyzUintTsh71BVVUBlrPvCaZro7x/wfj6jKL6CoKd73RRMGU/Ioo/QdwX3ziS1b7YfJ4ZfcmYkdp8AAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/e562f950599e1539c8904b96c2ab2241/87706/social_blog.png","srcSet":"/static/e562f950599e1539c8904b96c2ab2241/f80f8/social_blog.png 320w,\n/static/e562f950599e1539c8904b96c2ab2241/9a63f/social_blog.png 640w,\n/static/e562f950599e1539c8904b96c2ab2241/87706/social_blog.png 1280w","sizes":"(min-width: 1280px) 1280px, 100vw"},"sources":[{"srcSet":"/static/e562f950599e1539c8904b96c2ab2241/c0bcc/social_blog.webp 320w,\n/static/e562f950599e1539c8904b96c2ab2241/17574/social_blog.webp 640w,\n/static/e562f950599e1539c8904b96c2ab2241/71d4d/social_blog.webp 1280w","type":"image/webp","sizes":"(min-width: 1280px) 1280px, 100vw"}]},"width":1280,"height":720}}},"date":"October 2020"}}},{"node":{"id":"be675c7f-31af-5837-b780-07eff6d95a0d","frontmatter":{"languages":["python"],"priority":41,"dependencies":[],"slug":"bwinf_37_round1","link":"https://github.com/christopher-besch/bwinf_37_round1","description":"Coding Competition.","title":"BwInf 37 Round 1","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABRUlEQVR42k1SjXrCMAjsM5i0QIA2qTr95vu/344k63bVGgwHx8+iTG23dlhrB9MmIkyE77quuWO7QPEA0yJa4ORmrmpF3Eprre4wy0VGuNKhRfEp04KhS05Jhb8/n7PW6vp6v9+vFxPfbreUcsqZiItMMLOwDBOBFsRGCuENUhHZ3SU8NnNXZhS173utqMysaD2qKf5mRAc/yEhuWh5nq1ashOBRvNCGA1iIqCE7QiNtgqQgpSDjiCa50JoTvNGKW0fITrm3hriDopeQyKMdy/gBz5nurX4978/7ibYh8bzqzF5qGYd4i0DgJKfOr8dx1OYqiII60SBoAyeaXApo60BexywmOeaZ86Pu1c15W6OkfI1qTAhq6V8JwCTDG1JON6Utir2o4/YX2I1r/n+Zkbbt6KlifzB9iLw8YkmwGDIXA/zr6ge8Pz5cfrC+QAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/014908da94e0813ede327942eebbcc65/9bad6/bwinf_37_round1.png","srcSet":"/static/014908da94e0813ede327942eebbcc65/ced49/bwinf_37_round1.png 171w,\n/static/014908da94e0813ede327942eebbcc65/72dd6/bwinf_37_round1.png 343w,\n/static/014908da94e0813ede327942eebbcc65/9bad6/bwinf_37_round1.png 685w","sizes":"(min-width: 685px) 685px, 100vw"},"sources":[{"srcSet":"/static/014908da94e0813ede327942eebbcc65/8a4d2/bwinf_37_round1.webp 171w,\n/static/014908da94e0813ede327942eebbcc65/e31ae/bwinf_37_round1.webp 343w,\n/static/014908da94e0813ede327942eebbcc65/24a56/bwinf_37_round1.webp 685w","type":"image/webp","sizes":"(min-width: 685px) 685px, 100vw"}]},"width":685,"height":385}}},"date":"August 2018"}}},{"node":{"id":"a546ebe5-dfbb-5cba-a3cd-d1a5d959e7c5","frontmatter":{"languages":["java"],"priority":41,"dependencies":[],"slug":"java_sorting_algorithms","link":"https://github.com/christopher-besch/sorting_algorithms","description":"Example Implementation of Quick Sort.","title":"Java Quick Sort","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABKElEQVR42oVRi27DIAzkHwrEBD+ANOmy/f//7SBJu0qTerIcY8X2+eyWgVJKa1ar1KKmOWcKIfhPcMIsOXPmeZ5jiKEbyuBCBKY4Af0T/wK5XsyJqikR4U0poQXiNAJkwoVr2BsdRzGYgTA6iKo9gQzY3wDvh/uPNlguprUUFeFMmEcU4efUA2FQQJJQfhudrqC3c6B0N11auwNNliamcy1cK1Qg1VkFlpi7IQMte5wJmzv0QNVj21q1WgRe8vmfDy90JeMVx259MlQ0zlBoaBoh3JAzDKXjh1OhDPJAKeWMC2OymZiBtqrysaT3/tr2zRzGywHmUiA4QyfwOI26JzpjsBvPeGQcuq7ruu/7Y1t/vtf9a9nWCiulE8HmiV5dUIxDIBi3mH4ByQJAIObWcLEAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/a0a37e44a5b2abd8a730c618e8063a33/2a75c/java_quick_sort.png","srcSet":"/static/a0a37e44a5b2abd8a730c618e8063a33/0dbce/java_quick_sort.png 257w,\n/static/a0a37e44a5b2abd8a730c618e8063a33/12c30/java_quick_sort.png 513w,\n/static/a0a37e44a5b2abd8a730c618e8063a33/2a75c/java_quick_sort.png 1026w","sizes":"(min-width: 1026px) 1026px, 100vw"},"sources":[{"srcSet":"/static/a0a37e44a5b2abd8a730c618e8063a33/e43da/java_quick_sort.webp 257w,\n/static/a0a37e44a5b2abd8a730c618e8063a33/fffe3/java_quick_sort.webp 513w,\n/static/a0a37e44a5b2abd8a730c618e8063a33/51e4d/java_quick_sort.webp 1026w","type":"image/webp","sizes":"(min-width: 1026px) 1026px, 100vw"}]},"width":1026,"height":577}}},"date":"September 2020"}}},{"node":{"id":"a43853c3-0c86-5519-a03f-2a6011a3509c","frontmatter":{"languages":["python"],"priority":42,"dependencies":[],"slug":"manim","link":"https://www.manim.community","description":"A community maintained Python library for creating mathematical animations.","title":"Manim","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAB2klEQVR42q2TX09TQRDF7+fTxKifwAde8MkHjZpQElNRqNCagiZiajQkjQah1UraWiolSLFCWyy2irVAubf/7m1vpdX4+HN3oUoIJmp8ONmd2d0zM2dmtWZ1l/8Jza4bfDGrymjVdLWXvqMXrUr5zwi3Nwvks2uKzDR2eJ9ZpVz8oGxJ0kMvqLwjIX12Xad9gJ+EksDjGhYkH9lIp7jjcVPM5/jWthRJt9Vgz6rxbvUN7UaFr3aDbrOuqtC3SuyW9mEa+xVoemmTwBM/i7EIiViYyPMAeREktZQQJCtEQ0G1n/ZPsTgf5eVciHg4RCGbweGY5lzfJH39PnLZAh3LQPtc2CC5EFcPkom4IpYkg1evcFtk7hwcYMI9infsFmPDNxi57mTIMcD45DgXXVOcOOPm5Gk36ZWMqKaKlk0lef0qJiKuUVhPEwkFCD+bxf/wAXOBpwIzKmu5SnteZOh7dJ8Ld53cjPs4P3SPs6dcvPWO0jF1tJ7oUp+e6LIhHaGT9Ekde6vdMPjesljILXNpxsvl2Qn88SDrnhGK1/ox00tovxsLKfLhLiscnNX0LYKpKI+XX6CXP9Gt7dCsiM4b278I/waygr26yFrArhmYh+fwX3+EVS0fO+w/AIDi+spP065nAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/131d488121e2764ced8229bd101b9001/85cff/manim.png","srcSet":"/static/131d488121e2764ced8229bd101b9001/a25bb/manim.png 139w,\n/static/131d488121e2764ced8229bd101b9001/3035b/manim.png 279w,\n/static/131d488121e2764ced8229bd101b9001/85cff/manim.png 557w","sizes":"(min-width: 557px) 557px, 100vw"},"sources":[{"srcSet":"/static/131d488121e2764ced8229bd101b9001/082a1/manim.webp 139w,\n/static/131d488121e2764ced8229bd101b9001/0eb14/manim.webp 279w,\n/static/131d488121e2764ced8229bd101b9001/d823f/manim.webp 557w","type":"image/webp","sizes":"(min-width: 557px) 557px, 100vw"}]},"width":557,"height":313}}},"date":"September 2021"}}}]},"photo":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAFABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAID/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAH/2gAMAwEAAhADEAAAAdaIgV//xAAZEAACAwEAAAAAAAAAAAAAAAAAAQIDBBP/2gAIAQEAAQUCWixt3TO8j//EABURAQEAAAAAAAAAAAAAAAAAAAAR/9oACAEDAQE/AUf/xAAVEQEBAAAAAAAAAAAAAAAAAAAAEf/aAAgBAgEBPwFX/8QAFxAAAwEAAAAAAAAAAAAAAAAAABAxQf/aAAgBAQAGPwKrD//EABoQAAMAAwEAAAAAAAAAAAAAAAABETGBkdH/2gAIAQEAAT8hxAtDytXBT8H/2gAMAwEAAgADAAAAEHgv/8QAFhEBAQEAAAAAAAAAAAAAAAAAABEB/9oACAEDAQE/EJiH/8QAFxEAAwEAAAAAAAAAAAAAAAAAAAERUf/aAAgBAgEBPxCsrT//xAAYEAEBAQEBAAAAAAAAAAAAAAABIQARMf/aAAgBAQABPxBUcRUDdJFLPWT0mP/Z"},"images":{"fallback":{"src":"/static/4e593f58b0ca179f880b822019ec32f2/d4c94/alpha_mike.jpg","srcSet":"/static/4e593f58b0ca179f880b822019ec32f2/2bfa1/alpha_mike.jpg 480w,\n/static/4e593f58b0ca179f880b822019ec32f2/b0d0a/alpha_mike.jpg 960w,\n/static/4e593f58b0ca179f880b822019ec32f2/d4c94/alpha_mike.jpg 1920w","sizes":"(min-width: 1920px) 1920px, 100vw"},"sources":[{"srcSet":"/static/4e593f58b0ca179f880b822019ec32f2/b08bd/alpha_mike.webp 480w,\n/static/4e593f58b0ca179f880b822019ec32f2/35262/alpha_mike.webp 960w,\n/static/4e593f58b0ca179f880b822019ec32f2/d4591/alpha_mike.webp 1920w","type":"image/webp","sizes":"(min-width: 1920px) 1920px, 100vw"}]},"width":1920,"height":522}}}},"pageContext":{}},"staticQueryHashes":["1995789189","2480137602"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-index-tsx","path":"/","result":{"data":{"articles":{"edges":[{"node":{"id":"ef776637-9f6b-55ce-aba6-1a52100f6c8a","frontmatter":{"slug":"lvim_in_distrobox","description":" You're missing that one program that isn't available in your Linux distro? With Distrobox, the 'Linux Subsystem for Linux,' you can install it anyways. This article explains how to do that with the example of installing LunarVim on Red Hat. ","title":"LunarVim in Distrobox","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAAsTAAALEwEAmpwYAAABTklEQVR42n1SW3KDMAzkJMSAbQw4PAqUvPqi0+kBev+zqCs5ZEpL+qHxWJJXq11HuzSnzUgMZdVA9uH5FqY5kjIlxajdexf9SWYOpyPTXiSU3ZPSJaKirOwpH94oLbq7oCtAZb08tt0T6f1E8S4DU4taiFhpqbtxBtPqWvsPEM0JGJnuIisz0/UDhyEaUvRgf5YBv3tWgLHoNpLFqoHVlrYW7LxouttYO1qaFiOSvA7is24mSLBiIYCVaPmT+dIjgClA2IxYGVJZAf0eZTVpQj6YUoaexX1swX1K3umbSREDLIyYXZJDw+Z0zcFZP8DVVkA4xzVmZ+ojzHlHfyN3XR8CIJvArsrJf609ke1fJMeP2VE3zGB0lqHF4RMAM/p9AMYQ//pFbvoQOSKlC0FnZnxqP1LqGpGB/x27meJMkONvxADCGH2B2STD+c5rfwMBISO+aAZq+AAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/7b55476245f182a8e9f9b7e91efbb1a6/4f407/lvim.png","srcSet":"/static/7b55476245f182a8e9f9b7e91efbb1a6/b80f3/lvim.png 320w,\n/static/7b55476245f182a8e9f9b7e91efbb1a6/33942/lvim.png 640w,\n/static/7b55476245f182a8e9f9b7e91efbb1a6/4f407/lvim.png 1280w","sizes":"(min-width: 1280px) 1280px, 100vw"},"sources":[{"srcSet":"/static/7b55476245f182a8e9f9b7e91efbb1a6/aeec2/lvim.webp 320w,\n/static/7b55476245f182a8e9f9b7e91efbb1a6/99f93/lvim.webp 640w,\n/static/7b55476245f182a8e9f9b7e91efbb1a6/b584c/lvim.webp 1280w","type":"image/webp","sizes":"(min-width: 1280px) 1280px, 100vw"}]},"width":1280,"height":640}}},"date":"October 2022"}}},{"node":{"id":"4babb8e9-1394-5b33-96d9-9db996bc7fc2","frontmatter":{"slug":"bash_cmds/mp3_tag","description":" Why do it complicated when a Bash one-liner does it too? ","title":"Bodging MP3 Names in Bash","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAIAAAA7N+mxAAAACXBIWXMAAAsTAAALEwEAmpwYAAABhklEQVR42iWQ19KrMBCDTSeFDgECnNBCJ0yGi7z/m53vh73wrG1JK63QCtn4ytos67tkrIo6CvUj9Ekyd8XcFGNU9UU2d9nstMAPyqocx9E8qm1b0Q3dzb0mRTJvU5SEkibJuvTIoqav+7l3AyevsmHt4yweh3GapmEYuq5zHCdNUzFPcxiE5atsm9a6W3VVp0lqW3ae5cu8hH7Ydz1fnus1TdP3Pfzn8+l5nuu6Apmqqsqy5Myy7P1+0+AN0L+jiqJYlmWeZ8i2bYNEIo5jGhFF0f1+D4KAGLIs67qOBFDIj8cjSRKg4Oq6Zozv+1xRp+EqwjDEw+v1wgzQ4Siun88HDtLX6xVRIf7GrOvKOxTs5HkuTqtMZnvI0/OKMEzDMPCvaZo4Cs98gccjC2OAYGlAUT3jAbUsC63b7cZJTucoCLwTCkX4l8vlT2/bNtwS7/v9npsgDC5weEbACz3q+74zBlEyk1RRFIExzDCTP7aKW8i4YCZC4Lj+fj8wZy4mw1RVleH/AZ7uPYsi74ZJAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/5c491b010e8b22c6ffd20605f69d322f/4f407/bash_cmds.png","srcSet":"/static/5c491b010e8b22c6ffd20605f69d322f/b80f3/bash_cmds.png 320w,\n/static/5c491b010e8b22c6ffd20605f69d322f/33942/bash_cmds.png 640w,\n/static/5c491b010e8b22c6ffd20605f69d322f/4f407/bash_cmds.png 1280w","sizes":"(min-width: 1280px) 1280px, 100vw"},"sources":[{"srcSet":"/static/5c491b010e8b22c6ffd20605f69d322f/aeec2/bash_cmds.webp 320w,\n/static/5c491b010e8b22c6ffd20605f69d322f/99f93/bash_cmds.webp 640w,\n/static/5c491b010e8b22c6ffd20605f69d322f/b584c/bash_cmds.webp 1280w","type":"image/webp","sizes":"(min-width: 1280px) 1280px, 100vw"}]},"width":1280,"height":640}}},"date":"October 2022"}}},{"node":{"id":"8f20dcb8-95d0-5d14-a138-a8e2c04d76fd","frontmatter":{"slug":"revealjs","description":" reveal.js is a PowerPoint alternative. With it you programmatically define your presentation via HTML.\nThis article shows how you can use reveal.js for your own presentation. ","title":"reveal.js your Presentation","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB6klEQVR42j1TN4uyYRB8/4BnzllPFHPOmLOglZVgb6d2gtpYXCXYqaA2grX/cO6bhfuKFxafmdnZ2VWJxWIwGAxoNpsIhULQ6XSo1WpwuVyw2+1SG41GfH9/o1qtQqPRIB6PI5vNQq1Wo1QqIZ1OC6ZSqUDhg8ViETCBDocDrVYLgUAAfr9faopHIhHU63VYrVYRKxaLMJvNIpJMJmGz2eRdoZDT6cRwOJROFByNRgiHwwgGgxiPx3C73UIaDAbyTpFOpyON2JDirKmhRKNRqFQq5PN5pFIp6dTr9USENaNgQ+JInM1mEgPFM5mMTEb3X19fKJfLUJgBs5pOp7hcLtjv93i/39hut1itVng8HjidTlgul7jf7/j5+UG328V8PhfM9XoVURqgW4WqWq0Wi8UC6/Vavufzic1mg/P5jNvthuPxKN/n88Fut5O3v4av1wuTyQR6vV5cy8i0S6esuSDm5vF4ZCkMmlkyQ2bEaWjicDig3++j0WgIj9unhsKAaZchMxOv1ysjMRcKkUTxRCKBdrsteeZyOfmdC2KehULhP0/hMnhDnJ8kngLBPBuCWNMVG5BALDl0yfvlBLwOk8mETrcHhUAeKEEU4WETzO68uT+iz+eTLRNLDi+CUWX+3ST/EFqdHoVKDb9wblBEGkSeKwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/90f1af0c0e4970e8cf923a375c719169/4f407/revealjs.png","srcSet":"/static/90f1af0c0e4970e8cf923a375c719169/b80f3/revealjs.png 320w,\n/static/90f1af0c0e4970e8cf923a375c719169/33942/revealjs.png 640w,\n/static/90f1af0c0e4970e8cf923a375c719169/4f407/revealjs.png 1280w","sizes":"(min-width: 1280px) 1280px, 100vw"},"sources":[{"srcSet":"/static/90f1af0c0e4970e8cf923a375c719169/aeec2/revealjs.webp 320w,\n/static/90f1af0c0e4970e8cf923a375c719169/99f93/revealjs.webp 640w,\n/static/90f1af0c0e4970e8cf923a375c719169/b584c/revealjs.webp 1280w","type":"image/webp","sizes":"(min-width: 1280px) 1280px, 100vw"}]},"width":1280,"height":640}}},"date":"June 2022"}}},{"node":{"id":"f775d6b1-a11a-53ba-85c6-52a19e5c39d4","frontmatter":{"slug":"installing_gentoo","description":" Gentoo is a Linux distribution that offers as many options as possible. This article leads you through the decisions I took to end up with a system that best suits my needs. ","title":"Installing Gentoo To My Liking","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAIAAAA7N+mxAAAACXBIWXMAAAsTAAALEwEAmpwYAAABiklEQVR42o1R2W7bMBBcikud1UFLog5KpA5HSeWgKGI4keC6LdKXAvmD/v+HlELgtA95yGCwTzuY2VmwI9bvu/00utwBBmmYZWEe2ZFlWXAFZcgSxBHYAFYFPOe97oumgMNw//zz+XF6fLh/iINYWEJXXVmV4aeQUvomtjNkd2CIHYQqkFrqTkOxK87r+XQ4PS1P8zhLKpukzYvc930jI4SYiUbMkd3AxtrKZNroJm8zqLN6Xdb1vB6PRx5xQYUWKuHcdd235JRRxukWewIqgZeJanXTNbB8WS7fL4f5kESJ2RO01tlNWaW7JDYIw9AxcB22Q5zAngEV4XWilGoGCR56PgvIaz4A7UXffsfL5c/p14trI7NtRGQOYzHFAYw5KvBLtyiFVBLAA3CBeMQKAGySB97tEYfph56/kv/a3goztqazjqQ9b1VbjSUQ3Aim19f5HrabjXMPbASqwROOqISU9TurxDIlW9c7rs4pss+At2A3tFB53/dlX8BH8K/t/fbnoPGqujLf+gvyFyLSxOAJTAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/dd509c81379268c048ef45318173ad70/4f407/installing_gentoo.png","srcSet":"/static/dd509c81379268c048ef45318173ad70/b80f3/installing_gentoo.png 320w,\n/static/dd509c81379268c048ef45318173ad70/33942/installing_gentoo.png 640w,\n/static/dd509c81379268c048ef45318173ad70/4f407/installing_gentoo.png 1280w","sizes":"(min-width: 1280px) 1280px, 100vw"},"sources":[{"srcSet":"/static/dd509c81379268c048ef45318173ad70/aeec2/installing_gentoo.webp 320w,\n/static/dd509c81379268c048ef45318173ad70/99f93/installing_gentoo.webp 640w,\n/static/dd509c81379268c048ef45318173ad70/b584c/installing_gentoo.webp 1280w","type":"image/webp","sizes":"(min-width: 1280px) 1280px, 100vw"}]},"width":1280,"height":640}}},"date":"April 2022"}}},{"node":{"id":"439bcd05-da4f-5d27-bcc6-1ab6d3b3addf","frontmatter":{"slug":"maki_atoms_and_time_travel","description":" Maki showcases how a program for interactive and programmatic animation development can be implemented.\nIts programmatic approach provides the precision technical concepts require, while its interactivity and real-time updates avoid a disconnect between input and output. ","title":"Maki, Atoms and Time Travel","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAIAAAA7N+mxAAAACXBIWXMAAAsTAAALEwEAmpwYAAACWElEQVR42iWN7U8ScQCA77/og3OlRltZiXiQHjcEnYSKo+YLKzddKVpAQzw8uPff716Bg5WwgeZLODhQA9dAl1bO2Ye+tLW+1N8TW1+fPXseBMWcVrvLbMW9s9OkKK4BKsqThKJKhD415e+34Sg2/N8pFk5brT+N+s+z5u/Kh6914xJpU8ugY2TCF1NJEcp8glxPcCKRYtkME+MX518O4G4r5jTbcC1VOv/8t1q5ahxel/dape1jpF21YM5IhAAC1IVslqYgT9GEJnI6JyQ0Kh4KRax25wN0KEoozdav8sF5rXxR3m++zx0g7a1jzCMC4R2VVlNQTNJCmoqKG1SKkWROUWnIxh0uT2+/bWk11mj8OKxeHuyf7m0dlYoG0ofiM/5nAoAbEMSlLJR0lZfe6gQLaYFWRZZlZXp4xH1/YHDu+UqtdtX4eH1S/75TqJW2DMQyZF9YCAuSBKSYGkkrdFbXWE0FEpRlkRcZCjKMa2LyIYq5J2cM47Ja+VKtXGwXjnYLBvLI4VqL0ECWeY6MbYh8XE2AHKlCXcpkAJeWMwonuDw+s82ODY8VCydG+Vutcr63Xd8tVJHxcR8DFbZ9UpR0OrzJanEmQ/CcEIxnCErkZSUFvE+nLdgoah9lhfzOztlW8VM+f5zP1RD//KKgJ5MMSJIwl1M1OUsLsiKJKQg3OaApgF2j+u1eE+q5g3ru2rx9+KwZ9/UOuMyDj5HxOf+L168CwdDym5WlVSK4ur4SCAUDYYKIBsPBcGB59sl8j2W02+Lu6Oq90Wnq6Lp3q9t0s7Pzdo/pH7aHDFm22q+xAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/ec9e9265791849f80f7f7e1d76995206/4f407/maki_atoms_and_time_travel.png","srcSet":"/static/ec9e9265791849f80f7f7e1d76995206/b80f3/maki_atoms_and_time_travel.png 320w,\n/static/ec9e9265791849f80f7f7e1d76995206/33942/maki_atoms_and_time_travel.png 640w,\n/static/ec9e9265791849f80f7f7e1d76995206/4f407/maki_atoms_and_time_travel.png 1280w","sizes":"(min-width: 1280px) 1280px, 100vw"},"sources":[{"srcSet":"/static/ec9e9265791849f80f7f7e1d76995206/aeec2/maki_atoms_and_time_travel.webp 320w,\n/static/ec9e9265791849f80f7f7e1d76995206/99f93/maki_atoms_and_time_travel.webp 640w,\n/static/ec9e9265791849f80f7f7e1d76995206/b584c/maki_atoms_and_time_travel.webp 1280w","type":"image/webp","sizes":"(min-width: 1280px) 1280px, 100vw"}]},"width":1280,"height":640}}},"date":"February 2022"}}}]},"projects":{"edges":[{"node":{"id":"2f5cbcb4-8ca6-5d9c-9109-d52f8a436af1","frontmatter":{"languages":["python","typescript"],"priority":0,"dependencies":["bootstrap","flask","webpack"],"slug":"manim_editor","link":"https://github.com/ManimCommunity/manim_editor","description":"Web Presenter for Mathematical Animations using Manim.","title":"Manim Editor","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAACiElEQVR42pWT20tUURTGj3O8zXgZHS9NjZQ6Q0I++ydUL4G+9ZqBU0ia0cUgydGUHgSFelGUniRKKh8adDLNEJ2ZwC5DZYYimKY5ozkXnZsz/trnBFHQQy1YrL0X3/r2t/beS9rZ2SUWixEOR9QY39vjXywRF9joLvFYRNQk1FwyuY/U2dnJwMAAjY2NVNfU0NDYwK32dtpsNlpbb6qxzdbK9eYWrlxtxmq10tR0kQf2Ke7ef8G9RxO8nHbj9wdIJBJIdrudUYcDi8WCJElcu3yJ969fMTXuYGbyOROjdtzOSR47JujuuK1isnWZ3HnymQ57gr6xDUaejTMyNsH2th/JJk7v7umhqqqKjIxMTp44zoX685ytPYO1rk7EWurOWbHW13G6+hT5+QZMJhMfP3jwf/cS9G8RCoUIBAMERZSGh4dRVJrNZvV0jUaDlJJCrqEQvSiWZVnsNaSkppEi8gpGp9OxuLio3ncotPPH3Ur9/f0MDg7+IpTlVDTCS0rLOFZZiV6vJztXT7pWR6qsUTFarZY3b98RjcbVNtfW1lVi5VGlrq4u+vr6KDdbSBPgwwVZ5OTpMRwqoaTcgvFIGQdLzeQIxdn6PLIyZKFQy6f5eVWRQrK6+pWVldWfLT8cGuKpaPloRQW6dBmLqZBioxG9wUB+QYGqzlBQSNEBI0Uin5eTRXFxMQsLC+yJliORiEq4vPyFQCCI1NJyg97eXubm5piZcTLtdOF0OnG5XLjdwkVU1krup7uYnZ3F6/Ph9frY3Nxi/duGuk4mk0gej4elpSX+15RWFYKE8HA4rCrd3xcfW5GtfMh4PK6CfvdoNEowGMQf3GFjO4bPLyYqIiZETIlS/Df7AQM0eSSgdwjeAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/512c236dd73df7d96875dc50f7db59b9/87706/manim_editor.png","srcSet":"/static/512c236dd73df7d96875dc50f7db59b9/f80f8/manim_editor.png 320w,\n/static/512c236dd73df7d96875dc50f7db59b9/9a63f/manim_editor.png 640w,\n/static/512c236dd73df7d96875dc50f7db59b9/87706/manim_editor.png 1280w","sizes":"(min-width: 1280px) 1280px, 100vw"},"sources":[{"srcSet":"/static/512c236dd73df7d96875dc50f7db59b9/c0bcc/manim_editor.webp 320w,\n/static/512c236dd73df7d96875dc50f7db59b9/17574/manim_editor.webp 640w,\n/static/512c236dd73df7d96875dc50f7db59b9/71d4d/manim_editor.webp 1280w","type":"image/webp","sizes":"(min-width: 1280px) 1280px, 100vw"}]},"width":1280,"height":720}}},"date":"September 2021"}}},{"node":{"id":"b82d984e-ae2a-59a5-b339-8b2fbb2a5816","frontmatter":{"languages":["cpp"],"priority":0,"dependencies":[],"slug":"visualizations","link":"https://github.com/christopher-besch/visualizations","description":"Visualize Graphs with Godot and C++.","title":"Visualizations","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABfElEQVR42o2T2Y6jMBRE+89GirJhYwwYLxACZFFWRZP/fzkDfhl1JzPdDyVZSD5U3br+SNOUF0mJ1hprLW3bRh0OB+q6xnuPUoq390Z9fP2gUkWSCoqqZLtpCSHQ9z2Px4Pr9UrTNGy3W+T40x8BJ610wrxKED7DV45qdDoMQ3T5fD4jcHIrhPg/UCqJSnKaX5qNSDCuoWu3lKaM8Xe7HbfbjfP5zH6/xxjzAv0MHGPYyqJtji1HpZ65FwiXoYzGlIbL5cLxeIx65/IzMJUUqsCaQDjWZEEjy3GmeYqrPaYwdF3H6XTifr/H4r7O8iVyttYMs4LjUmDynGpfs8wTFlaQZDJGn2Y5FTWdv3GoyMSK3QjbZS2DdPwuz1QLi1t7Vk6OBVUURRGLebc+Ly1LlaKTgqoIdEWP8RW9cXTKE+YBbx0++LiP37b8dxclM7Nms5iROEUYC+lXmrXMSG0WodO8f7yHESoVenSw1GtM43BZQC81qywhFfKfL+UPn0urwPWCA3kAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/3f978993862ff0e513124ce977ea3ad4/dfdb8/visualizations.png","srcSet":"/static/3f978993862ff0e513124ce977ea3ad4/1d92b/visualizations.png 438w,\n/static/3f978993862ff0e513124ce977ea3ad4/27093/visualizations.png 875w,\n/static/3f978993862ff0e513124ce977ea3ad4/dfdb8/visualizations.png 1750w","sizes":"(min-width: 1750px) 1750px, 100vw"},"sources":[{"srcSet":"/static/3f978993862ff0e513124ce977ea3ad4/0e056/visualizations.webp 438w,\n/static/3f978993862ff0e513124ce977ea3ad4/4a6ac/visualizations.webp 875w,\n/static/3f978993862ff0e513124ce977ea3ad4/ae820/visualizations.webp 1750w","type":"image/webp","sizes":"(min-width: 1750px) 1750px, 100vw"}]},"width":1750,"height":984}}},"date":"January 2023"}}},{"node":{"id":"23f69708-bb7b-5319-ba21-f76a863596b9","frontmatter":{"languages":["typescript"],"priority":1,"dependencies":[],"slug":"compare_view","link":"https://octoframes.github.io/compare_view","description":"Blend Between Multiple Images.","title":"compare_view","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAACRElEQVR42k1T60vaYRj9/aOD9nGMfVEYaw0F8UOkhAU2NnItltv8UbgaeamFJW6IYKUyI2/l/Zq3yrzlmecBYx8e3vd93nOe55zn/f2U29tbDIdDPDw8oNlswuv1olAo4O7uDp1OB6VSCTc3NxiNRmg0Gri+vkatVpM7Yu7v74XLGgyFSQKr1aoA9Xo9AoEAer2ekEiYkZgjjg3ZfJafRb/fh8Ji2WwWqVQK8XgcBoMBPp9PwCxIYrfbFQJzVMozVXOloFkxrgotCXEKIMhsNsPlcj0BZioGg8HT/v87Nnh8fMR4PJa9KGTRZCqNQr4A69oaXG43Wq0Wrq6uJDKZjMyOVmc5KuOI6Cqfz6NYLIogZd/lgf37NqzrW1Dtm7AYXuPLhk1Uzs+/gU6ng8ViwdzcHLRaLZaWlrCwsICzszOoqgqTyQSj0QiNRoPd3V0oq7rnsK0YsKM68Gf/G/z2RXxefgfnTw8q5fK0a1PUnp6eipLyNFepVJ6UURVzVFiv16EEv77AycZLHG9/gG/LAHX5FXasb2FaWZ9ay0ixdrstc6ZFFiOZY+KL88zgSNhEca4+w8WvRRw4HYiHDpC/+I30+RE+2TbhO/ajNCVzdvwSEomEKA2Hw4hEInJOJpOyZ44NldAPHc597+Fx2NCq5TDsFDDpd+De24Pb7RECI5fLSYF0Oi1WLy8v5RyNRuUzi8Vi8upKJvQR1b825INmTIZ1jHotYDLAkceNw8NDBINB6c7V7/eLff5dbEDrtMpXpzqO5x8xAAI/640YPgAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/c5c6e9ede3805430bb6858f8f3f1fa70/1ac80/compare_view.png","srcSet":"/static/c5c6e9ede3805430bb6858f8f3f1fa70/f337a/compare_view.png 439w,\n/static/c5c6e9ede3805430bb6858f8f3f1fa70/cb3b4/compare_view.png 878w,\n/static/c5c6e9ede3805430bb6858f8f3f1fa70/1ac80/compare_view.png 1756w","sizes":"(min-width: 1756px) 1756px, 100vw"},"sources":[{"srcSet":"/static/c5c6e9ede3805430bb6858f8f3f1fa70/0e84f/compare_view.webp 439w,\n/static/c5c6e9ede3805430bb6858f8f3f1fa70/09d01/compare_view.webp 878w,\n/static/c5c6e9ede3805430bb6858f8f3f1fa70/9f143/compare_view.webp 1756w","type":"image/webp","sizes":"(min-width: 1756px) 1756px, 100vw"}]},"width":1756,"height":988}}},"date":"June 2022"}}},{"node":{"id":"3664d636-ee33-5677-8eff-aa5e8e509bdd","frontmatter":{"languages":["c"],"priority":1,"dependencies":["kicad","avr","i2c","uart","spi","make"],"slug":"mold_detect","link":"https://github.com/christopher-besch/mold_detect","description":"Warn residents of mold-friendly atmosphere and log opened windows.","title":"mold_detect","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAACV0lEQVR42iXSS2sTURQH8PkcrgSleVmEQhI7U0ubNJ0kzSSTifN+3jt35t7MM4/mYaMVtYgVKVjoUvwEfgU3rqULBXGlH8Urwn9zDvzgcM5hFKygHFzs3Dt7XJ4+Deq1nXKxIqvNIDGj3BVGvYHS02Ffc080r0ejuj3Z7ipOZ2R2mM3BTiQfveUfwFYlzAz2UbWwVTDMdpha6cxDERCG/AHPGlA0QJ/G8kUaA/ZFg2fec9svanevHt5ZcVvJMtytV4uFkm7wYWbZge5F+rHQarb3IBFkV1ScE0BUFFuTZRikNrPpsOFRpStVTfsQJwbH1kqFkusKKFFdrACieESDkQzJUHd0ksFsQdpC4/r63a+f35irevmsdt9DgkMATk12t1oqloHXz05p6ZDcwamBM8sL7e1KpcU3UAIbPPfp482f3z+YE7MrGawTyGQCSKqzu7VyqQyAOFtH8QxlCxxN/Whixbni+g5JUTzHR9396w+Xt7dfGV7aHxgdSCzLVdFY49g6xRCOzi8W83X08vV6vsqjHJJMmc5RPtfCHNpIwTHtIKY9OpDM48ViilBoOhLH/cfD6Xo8WyfPX61hAB3f9GMrniBAnhhwYIcyQLJEt02x5jSXi9z3A90c7FFc/IcnKzpweLqZJzNv9Qynp9jDiglF1e0M1GOFnOPNJcWHA707mSa+jwBS9rjaPwxEisOYiGLf9qz5MvXHuo2GJr0w6PVGrc2bm89fvjOC0uzrbRWIAFtBpNEnodu2rG40Az4ZNxqHjufjPHQDyQkkOrPmCbLdNkLQs+2/5R7sNzTUtS4AAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/e3a1143657c343da032639c75f73878a/05bc9/mold_detect.png","srcSet":"/static/e3a1143657c343da032639c75f73878a/5c8e9/mold_detect.png 230w,\n/static/e3a1143657c343da032639c75f73878a/f8232/mold_detect.png 461w,\n/static/e3a1143657c343da032639c75f73878a/05bc9/mold_detect.png 921w","sizes":"(min-width: 921px) 921px, 100vw"},"sources":[{"srcSet":"/static/e3a1143657c343da032639c75f73878a/20203/mold_detect.webp 230w,\n/static/e3a1143657c343da032639c75f73878a/0f691/mold_detect.webp 461w,\n/static/e3a1143657c343da032639c75f73878a/44573/mold_detect.webp 921w","type":"image/webp","sizes":"(min-width: 921px) 921px, 100vw"}]},"width":921,"height":518}}},"date":"November 2023"}}},{"node":{"id":"b79cb258-51bd-5f73-8335-f4e933884839","frontmatter":{"languages":["rust"],"priority":2,"dependencies":["docker","tokio"],"slug":"docker_logdna","link":"https://github.com/ibm/docker_logdna","description":"IBM: Logdna logging driver Docker plugin.","title":"docker_logdna","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABiklEQVR42pVT20rDQBTM/3+BoKIifoHgrV5eREVBH2qFVtuaa7u5J9vm0s3uuJu2tJEW9MBkIbuZc2Yyq0GWEEI90SxRv5/v/b20qqogOMekmMGnBYKJQomCcVRcgFUcY+JJuCCEwHVdTKfT7YRMEqp61iPsPZo4frFw8jqCGWSgNENMcxQzjqwUyIoKnCvwGhsJf28sJQa+j/7XJwbDPkbEQZJSSbw6s/zuty3atk5KFnE9+G4IpzdEbPuIxxQsTMGkNcqOrR7yuqNYrbUkgVIeoFYE++gO9uEthvst6DvnCB+6mDCpIggRRSHSNG0SJqGHJHBrxD6BNx7BDyKU1eJvLzwTfN5QagTNGHTDhGNboNIOxuZ+aNG0xE3HQqtt4PrdwGXbREcnSOIEOdseD0X4rRswTLNeLcuubdK8NMdZ28HFB8FVz8dpe4wumaghZGRWWVyHmpbJ6d+MBLv3Axw86TIZjkzBDNo80E0IwRvx2ARVuYyTUhjK7Mb5rB5CUxTKlnX872406wd/eVMybHQ7BwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/9d1703fede1297bd9e064aad91c4f5ad/afa5c/docker_logdna.png","srcSet":"/static/9d1703fede1297bd9e064aad91c4f5ad/2fe1e/docker_logdna.png 480w,\n/static/9d1703fede1297bd9e064aad91c4f5ad/9bec7/docker_logdna.png 960w,\n/static/9d1703fede1297bd9e064aad91c4f5ad/afa5c/docker_logdna.png 1920w","sizes":"(min-width: 1920px) 1920px, 100vw"},"sources":[{"srcSet":"/static/9d1703fede1297bd9e064aad91c4f5ad/3a3a2/docker_logdna.webp 480w,\n/static/9d1703fede1297bd9e064aad91c4f5ad/bde8a/docker_logdna.webp 960w,\n/static/9d1703fede1297bd9e064aad91c4f5ad/c512e/docker_logdna.webp 1920w","type":"image/webp","sizes":"(min-width: 1920px) 1920px, 100vw"}]},"width":1920,"height":1080}}},"date":"June 2023"}}},{"node":{"id":"66175c61-d427-5209-8362-f6e58349d320","frontmatter":{"languages":["cpp","python"],"priority":2,"dependencies":["cmake","opengl","glfw","glm","imgui","pybind11","spdlog","stb"],"slug":"maki","link":"https://github.com/christopher-besch/maki","description":"Interactive and Programmatic Animation Development; or: How to Time Travel?","title":"Maki","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAACiElEQVR42iWSW2vaABiGcz0KK660tTFRY8xBo4mJMYmHJp1dtR3dRQ+wCxktq3XTlZpa6yHiqVaNtXauDAbrrgorbDA6xm7GOhi7GmPsH+yvdJHBd/u8z/vxfQDHCpI05/eHKDdNcwIVkCKzsXR69+le8nE6lXiys5dXG8lcPL6MMiGUjcIucdLhm7aRFBsBgkEJJ92Ul+Z53shhJSWTSvc7zX6tViv3W9Xmqd4aVkpqSqUEBWNlmlc2t7TkdjGVLAAulwuGIAeKghCMuujYg/VmK1+s5jVVG5a0Xv6odVActLP1Wl1ZXGKEsCjPvz7//PX679WHXwBJklYr7ECxGdhOM7S6nSu3u1o5Vxoc1rS8tqN3CvrO85bW1e+vrDCi7OGlzWT26uPPt5fXAIbhDgdCUl4zhC2txQ67xf1aTS9oJycvCrl+/Vm529RLWiPb6K0+2vAGwmxQjkQXz998evf+B4DjuNVqJUjyzvRMIrHa6fayucJxUdUrnWauXWp09WZ+qFfPTtupzDYXjgjyXW8gtLvXvrj4YpgxBEFYliXc7oWFWGa/qma0w3rlqF/RWt2jRr3R66jF8sbWQXw5BWFzpE92+/no4lq5cjIyWywWo7wZtJhByGJHUAxnWY4PCNH5uBIKS1LILwWzebJ9jPQG9pWHPpKNMGLIJ0ZGsNPpZDnO7aUpj8eJojZjDRg2m80ETkxNTo2N3UII/7fv0zc3gDGvzu0otSAqChdSABRFDbPBz0CwzY4YIAiCBmkymXAMt4DQxMQ4iIiDM+w/PHyJOKh7wqw8ghmGcVEuhvNRHsqJYUaKcTyCIIxGHMdBIGQyjdswdj0h/v5z+/jUKcfCPuMjwyPzP+v1y0hjTk+xAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/ba4ee1e4d545c4df94a90630e0d8f20a/afa5c/maki2.png","srcSet":"/static/ba4ee1e4d545c4df94a90630e0d8f20a/2fe1e/maki2.png 480w,\n/static/ba4ee1e4d545c4df94a90630e0d8f20a/9bec7/maki2.png 960w,\n/static/ba4ee1e4d545c4df94a90630e0d8f20a/afa5c/maki2.png 1920w","sizes":"(min-width: 1920px) 1920px, 100vw"},"sources":[{"srcSet":"/static/ba4ee1e4d545c4df94a90630e0d8f20a/3a3a2/maki2.webp 480w,\n/static/ba4ee1e4d545c4df94a90630e0d8f20a/bde8a/maki2.webp 960w,\n/static/ba4ee1e4d545c4df94a90630e0d8f20a/c512e/maki2.webp 1920w","type":"image/webp","sizes":"(min-width: 1920px) 1920px, 100vw"}]},"width":1920,"height":1080}}},"date":"December 2021"}}},{"node":{"id":"b804b240-53c3-5a0b-8fb3-c9c6d885fb00","frontmatter":{"languages":["cpp"],"priority":2,"dependencies":["cmake","armadillo","nlohmann_json","spdlog"],"slug":"neural_network","link":"https://github.com/christopher-besch/neural_network","description":"Experimental Deep-Learning Framework.","title":"Neural Network","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABJUlEQVR42n2Q25KDIBBEGYIoYlaCKDcjlc3//+M2ick+5NI1NdWWc2ZaGes6GgZKiZaFLwvNM61r7VqTUrW0ZkKwjxKCAwihdvDW1jIGS/cBov+CON9NfdW2vBSQtefMY+RYhCDwIZD3+7ppIufodEJnTfO43DR0PlPO6AyBQ2DjyI5H1vc1s1LscKiF8Chg8DsohFRKhiCdkylJYxpj5M+PHMfWWgH4Gf5VKaVSyrquMYTZucX7mNK9tlLwqIfBGNO27RsY2LZt55sC5D3Misr593KJMWqtp2lSCP8FRgeL6eeu6/WKXN/g+zRWYG65KT2Ez/He933/MTauYQ4rYHDBOXf3EDbiEfCIn/cWBomhnDMYwPM8w+AgYCRHEMDW2q7rXtk/KaIgNPoxJ2IAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/ffcee91a9bd7ca290169a662b05f003f/08fdf/neural_network.png","srcSet":"/static/ffcee91a9bd7ca290169a662b05f003f/8416c/neural_network.png 202w,\n/static/ffcee91a9bd7ca290169a662b05f003f/077c0/neural_network.png 405w,\n/static/ffcee91a9bd7ca290169a662b05f003f/08fdf/neural_network.png 809w","sizes":"(min-width: 809px) 809px, 100vw"},"sources":[{"srcSet":"/static/ffcee91a9bd7ca290169a662b05f003f/51e0f/neural_network.webp 202w,\n/static/ffcee91a9bd7ca290169a662b05f003f/3ea73/neural_network.webp 405w,\n/static/ffcee91a9bd7ca290169a662b05f003f/a15e1/neural_network.webp 809w","type":"image/webp","sizes":"(min-width: 809px) 809px, 100vw"}]},"width":809,"height":455}}},"date":"May 2021"}}},{"node":{"id":"273ae0c1-4f5e-52ec-82ee-934c7aa00b04","frontmatter":{"languages":["cpp"],"priority":2,"dependencies":["gcc","premake","stb"],"slug":"ray_tracer","link":"https://github.com/christopher-besch/ray_tracer","description":"Experimental Offline Ray Tracer.","title":"Ray Tracer","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAACbklEQVR42h2QXUsUUQCG52f0AUWQXRhGaHURkVCSlFEghpkm3kQq5EW56+zMmbNnznydmTkzZ77WnZ0ZdXN3tUXTLAMTIiQQoqC7IOoHdCPdddNNY/BcvDcvD+/LaXTRZFlBavX0f+2+tqPar6qLL4MkZyNMD8mzE7XcsOmELRq0bL8RpVu7X37tff/DYXOJ+tndsZ2jF/8e6/7RO7Dm194E6fb//iHe/JrjtFx31fYadtgkXiNafbH38/f+twNOIRXDJk9m6x2XPx3p2r85VHH9p15keXHuXPeq6ySI5eVpnPEk19IlmyzGo9Ntq735+YBLa92xz2E8UwDp45nYsEobbS72jxvO89xDWRuwgvHxtrU1aE7yGz0TO+fG354dqfdPRvObnEtHTOUULAMjH+9mqslcu8syBky2YgcN228q1CtG46I6lVwY3j05+OHM6PvOMSZXDVbnoBKKcgXrKdTCsh4qZizpCxpdMViCtTB/yKBLmp5pdDm5NfX6xM13pwe3z48xNbWCJsfzSJR0gHwJmQCRklCWeA0DotkxRlShVagFkkgF4GiIhsMT7vUHzoyiKK5KYk6UAwGykuQIiImyL8iBJNgyYthMFFKTSYSNeQB9UfKA4iMrKgImqgHSI93KuKJg5FoR+QC5h2XoSsCWZaZYmWKmmMSyUZWNGOtVTBKs1zQ71axMNRLVTLi5Enw2+wiUqQBNXlSKc2V+lsCSlY9HZYqIj0lF5CkvMVjUnN4h9crDsuggO9HMjLOtO1Tl5gr3JDUDCpNUBmEPEm/k54mA6HRBxPkdDADX6xupd14NO/pql+5DHkOt+g+gtVjHbV/h3wAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/b6544f8b93634adaf6395fbe71540c0f/afa5c/ray_tracer.png","srcSet":"/static/b6544f8b93634adaf6395fbe71540c0f/2fe1e/ray_tracer.png 480w,\n/static/b6544f8b93634adaf6395fbe71540c0f/9bec7/ray_tracer.png 960w,\n/static/b6544f8b93634adaf6395fbe71540c0f/afa5c/ray_tracer.png 1920w","sizes":"(min-width: 1920px) 1920px, 100vw"},"sources":[{"srcSet":"/static/b6544f8b93634adaf6395fbe71540c0f/3a3a2/ray_tracer.webp 480w,\n/static/b6544f8b93634adaf6395fbe71540c0f/bde8a/ray_tracer.webp 960w,\n/static/b6544f8b93634adaf6395fbe71540c0f/c512e/ray_tracer.webp 1920w","type":"image/webp","sizes":"(min-width: 1920px) 1920px, 100vw"}]},"width":1920,"height":1080}}},"date":"May 2021"}}},{"node":{"id":"16731b16-54ad-5922-9979-6930ab456659","frontmatter":{"languages":["python"],"priority":2,"dependencies":[],"slug":"todd_linux","link":"https://github.com/ToddLinux/ToddLinux","description":"Experimental Source-Based Linux Distribution.","title":"Todd Linux","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABEklEQVR42nWR226EMAxEQ4Eu7AJLuN/F/3/lHjwlqlR1HizbsT1jx3VdN03Tuq7YcRxfhqIosFVVYdM0/TZkWZbnOaELaNu2aZphGEYDs8qypNl7j0PDwxDHsfsL2uhflgVyOiWhuUE/r33fv2+QRBGWYkccZJNCGG9U46NZtGjG8iTlhE+D27btOI55nsUA6rrWImJWCI834Gg09RczVPu+Qy7953lipS2AK3CqJEniX3C0MYxTQY4K6vCZAiGWEbmB0i+D+hPDdW22RTlsdCKMDJqlE9lY8sySbE2UeCcqOJFAzJHCwpyEO+lIcoTw59dXwamb+Rvak/FhcxzyYZcfZg7GMVQhnYRY8syOosj9jw98WSX8g+tLRAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/7c6e90442202143b65979ed16ebad618/f95d7/todd_linux.png","srcSet":"/static/7c6e90442202143b65979ed16ebad618/5e16b/todd_linux.png 238w,\n/static/7c6e90442202143b65979ed16ebad618/2b6c8/todd_linux.png 476w,\n/static/7c6e90442202143b65979ed16ebad618/f95d7/todd_linux.png 951w","sizes":"(min-width: 951px) 951px, 100vw"},"sources":[{"srcSet":"/static/7c6e90442202143b65979ed16ebad618/7f2c6/todd_linux.webp 238w,\n/static/7c6e90442202143b65979ed16ebad618/e6364/todd_linux.webp 476w,\n/static/7c6e90442202143b65979ed16ebad618/c84fa/todd_linux.webp 951w","type":"image/webp","sizes":"(min-width: 951px) 951px, 100vw"}]},"width":951,"height":535}}},"date":"July 2021"}}},{"node":{"id":"7d7ac55e-5c7d-5250-bf97-947d034898de","frontmatter":{"languages":[],"priority":3,"dependencies":["docker"],"slug":"docker_cron","link":"https://github.com/christopher-besch/docker_cron","description":"Scheduling container tasks with docker-compose.","title":"docker_cron","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABnUlEQVR42m1R23KjMAzlH5qEm7FBso0vYMBAkja97Uyn//9JK0i6sw+dOZyRD5J9JCX12MvzqC4Dty5lmAtNyDhBbTHf40qmTFJMCWml7sqphIS+tEJcQvsaK23BX2R3dsunnT/U8GLmdxvfsDsLE9vphn61y0d3/ZL9OWVUXEDKEdcBYg9z0LcJ5qEQ6ljCaUdaIvGxaDb+EelISB4ZFRa1rtted6NQDnSPZkAToA1VYzh63c0cnbRTrTq0o3ITB/co3t4voahNf/0Kz9/g1+H2bZdP2a1lY/O6FToUjSGrW9sMs0oRJ/9s5FwxsKIdpV/QRtURTwycclGg57IHM7LGlE0rpK/AUfx/sd5Vw+p280yGwZAi7UB52s8mrHREM5p+Vj6S/x/b5eaHrvfLO3l200u4/Gls1OEKZqBfZIp6prkQC+loCqQkx7whUM/0eCZsO71Cd6ntbOKbDFc1PDN0h7zex/vgQ9HclSQHVaDKhKS957U8FuKQiUMunlK+BZm4L+lXJLRbuQbuPWstxMDQbJPfR3rHad/zr/gLfMhafpHFCjcAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/5a5012abbd37087a66d8c181e0e2ae76/0dee1/docker_cron.png","srcSet":"/static/5a5012abbd37087a66d8c181e0e2ae76/f0aa7/docker_cron.png 188w,\n/static/5a5012abbd37087a66d8c181e0e2ae76/f9574/docker_cron.png 375w,\n/static/5a5012abbd37087a66d8c181e0e2ae76/0dee1/docker_cron.png 750w","sizes":"(min-width: 750px) 750px, 100vw"},"sources":[{"srcSet":"/static/5a5012abbd37087a66d8c181e0e2ae76/d03f4/docker_cron.webp 188w,\n/static/5a5012abbd37087a66d8c181e0e2ae76/cf250/docker_cron.webp 375w,\n/static/5a5012abbd37087a66d8c181e0e2ae76/a66aa/docker_cron.webp 750w","type":"image/webp","sizes":"(min-width: 750px) 750px, 100vw"}]},"width":750,"height":422}}},"date":"August 2022"}}},{"node":{"id":"0492067a-5e9a-537a-a914-a34ff985d7a8","frontmatter":{"languages":["typescript"],"priority":4,"dependencies":[],"slug":"lake_visualizer","link":"https://github.com/christopher-besch/lake_visualizer","description":"Interactive Problem Visualizer for the 39th BwInf, 2nd round, 3rd task.","title":"Lake Visualizer","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABbElEQVR42o2Rz0vDMBTHK/4j+p8piP+JeNGDeBHP3hQZ1ZaOgXhQtjGYE2EHhU2ra2Rrs279kSYvTX1pxzyouC+PJC/9fpKXV4NTOjNrlw9Wws1mx3XOP9z7dvR5Y87ZlW3TIFBKyd/EuTBYENBrs9Zz0szp9cYta+Y1u6F300iZXa8Hvo9wlmWM4cAz/h2MMQMnDlAUxSDwj7oHh49772yEqeeGQsgojj1CQEoMLkDjYiE8zMBJgkB3fWhvnmys7a/vWjsKoHE3HRGWsZgQIlLxejsAJlRRYFRC0BAAeZ5jMk2i49bptrVVe65hmiRYrTYpbVfUh87F8KX9pPdK/xLW39MIHUs3jos7qsUsLiZv0EqSPqblTgkLXfPcpREJK+sS+ym8MQSYS7mAlRRTUZw5PiXwJ1SWU52JvfU4x0TDuYQwE/0gp5PqLf8LUFLiew1cYNOVWo0rJQEEpQjqhiGMPVNqdVrCeIw//AubHm8gk7c5+gAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/4e6a8d52902f88b218b8f6ee5d511490/aaf42/lake_visualizer.png","srcSet":"/static/4e6a8d52902f88b218b8f6ee5d511490/822d2/lake_visualizer.png 211w,\n/static/4e6a8d52902f88b218b8f6ee5d511490/9dbfb/lake_visualizer.png 421w,\n/static/4e6a8d52902f88b218b8f6ee5d511490/aaf42/lake_visualizer.png 842w","sizes":"(min-width: 842px) 842px, 100vw"},"sources":[{"srcSet":"/static/4e6a8d52902f88b218b8f6ee5d511490/36c97/lake_visualizer.webp 211w,\n/static/4e6a8d52902f88b218b8f6ee5d511490/6fd1d/lake_visualizer.webp 421w,\n/static/4e6a8d52902f88b218b8f6ee5d511490/d6fa7/lake_visualizer.webp 842w","type":"image/webp","sizes":"(min-width: 842px) 842px, 100vw"}]},"width":842,"height":474}}},"date":"April 2021"}}},{"node":{"id":"e10fa48d-7760-559b-821d-6daaf9a541fb","frontmatter":{"languages":["cpp"],"priority":4,"dependencies":["emscripten","cmake","sdl","armadillo","spdlog"],"slug":"lynton","link":"https://github.com/christopher-besch/lynton","description":"Experimental Game Engine.","title":"Lynton","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABhUlEQVR42m1SOZIVMQzts5FBQkBAMEORDBT9be2y5Xb3h0mpIuUAxFwS9TDAD1Dk7ekt8vLm+9u7b++YRGIzLrTCh1B31qbWwg1IaEXThqKlP7Y4BkgbHA/7WF78fPnqx2tBRdZ8ow5C1cBFKlQjCt4r+7Wsk1gwJGnIkJgRdbn/+v7TXDHPZut85VqGc5NRBGZ38EBKlDFbRwtKfUAkzCwii1VTlGzVrBvTWgskg5w0jXVjzbuN0PgBWO2jBlsy8VMt2eX3kpKBCTXmsKPvZ+fNjs9r39StpYtKlRh7SRXyDOabyjMbwZ7VEyGeZiDdUXZWuyh5kVbk/+D0dhmpWjwJEqTYZfhkDBt99pRMCjfPb8DEcNVycHDTDij1izdU19nTgT75ypxdVOgv87PnU1oay0llWKj1VJpTI6CK5y0bq+fe/iBPsII1xGSrvXk03ND6GFs0IFgZbVsPdbKZDiTHov+yPtNGBzuBbIHipUOY9ZIfLJxkmO/Driw+90tmnineeP4FmLcjrLxJjGIAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/58a7108179147732c801c94288cd76d1/92a30/lynton.png","srcSet":"/static/58a7108179147732c801c94288cd76d1/0525f/lynton.png 249w,\n/static/58a7108179147732c801c94288cd76d1/a9baa/lynton.png 498w,\n/static/58a7108179147732c801c94288cd76d1/92a30/lynton.png 995w","sizes":"(min-width: 995px) 995px, 100vw"},"sources":[{"srcSet":"/static/58a7108179147732c801c94288cd76d1/ec4ed/lynton.webp 249w,\n/static/58a7108179147732c801c94288cd76d1/81a8d/lynton.webp 498w,\n/static/58a7108179147732c801c94288cd76d1/ec251/lynton.webp 995w","type":"image/webp","sizes":"(min-width: 995px) 995px, 100vw"}]},"width":995,"height":560}}},"date":"May 2021"}}},{"node":{"id":"d000ef96-1be3-5e1c-bbf9-cbfd81167f83","frontmatter":{"languages":[],"priority":5,"dependencies":["docker"],"slug":"docker_setups","link":"https://github.com/christopher-besch/docker_setups","description":"My Docker Deployments.","title":"Docker Setups","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABHElEQVR42m2S2Y6DMAxF2UFCIPZ9p2wS//99PWpS2jKTh6j4+vjaTpVt287zjKJIURRVVZU/R9f1aZqKoljXNQzDn7RlWYZhyLIsSZKyLOu69jzvBrdtS3wcx6ZpRKbUILuuo7Dv+0EQIFiW9Q3jA/N4H/xBpH/9Onmea5pm27Zpmre2SSKBzimBOWRVVVLDFo3J0Y7jQKPPb5iiSMBI8zzzg3ypUYxRKYZGV2iGYdycSej7HhuS4VmB1PgQGBksj7HJ2/f9Wts1syB/4O514IGx5c2Y3HGcq3napi9IMbnI/GybYmiu68ZxDHZbGDBWYMKW7mhNbpso30TB/v2TEMRZeOLBark/T0UleEKGaVzAdYu2IcVTcadpKtKeI4QrwQQ/6pcAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/404869fb5128fea2f3cd631ada4dcc63/d0df2/docker_setups.png","srcSet":"/static/404869fb5128fea2f3cd631ada4dcc63/f0aa7/docker_setups.png 188w,\n/static/404869fb5128fea2f3cd631ada4dcc63/f9574/docker_setups.png 375w,\n/static/404869fb5128fea2f3cd631ada4dcc63/d0df2/docker_setups.png 750w","sizes":"(min-width: 750px) 750px, 100vw"},"sources":[{"srcSet":"/static/404869fb5128fea2f3cd631ada4dcc63/d03f4/docker_setups.webp 188w,\n/static/404869fb5128fea2f3cd631ada4dcc63/cf250/docker_setups.webp 375w,\n/static/404869fb5128fea2f3cd631ada4dcc63/b9516/docker_setups.webp 750w","type":"image/webp","sizes":"(min-width: 750px) 750px, 100vw"}]},"width":750,"height":421}}},"date":"July 2022"}}},{"node":{"id":"1ee8a684-1e2e-5e14-bfbb-937cac375c4b","frontmatter":{"languages":["cpp"],"priority":6,"dependencies":["gcc","premake"],"slug":"cryptography","link":"https://github.com/christopher-besch/cryptography","description":"Cryptography Cracking Tool.","title":"Cryptography","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA7UlEQVR42sWQ3Y6DIBCFEVNEWOVnpQWxxdr2/V9xTyGSJu1e7NV+EjNzmDHnSIzXelY2GuF6yqjoBeCc9y+gpZQ2b5Dtuj1uj/t2X9M1znFZljmDIoQQY6wtOO+klCCSKk3TZK3VmXEcVabWwzDgPWZKIaUkWmn11DGkjLFlH3dluus6pDDGfGWgl1sAnUjXSy8GLzt3aLsWmfHwnZr5mfCdtCacy3pZzst3xjmHCG6niMVLBS2MkDnEcAr+GE7O4w/B9usn7A4WMM0YQ1QYhh0kIlIjE+eKc81a1jbkk71fYaTh+QhCD/SPy//FD5DPGrh7pv2mAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/a2fa82a75935e0858c6e4f4033465c43/a60e4/cryptography.png","srcSet":"/static/a2fa82a75935e0858c6e4f4033465c43/13d7a/cryptography.png 253w,\n/static/a2fa82a75935e0858c6e4f4033465c43/b09f4/cryptography.png 506w,\n/static/a2fa82a75935e0858c6e4f4033465c43/a60e4/cryptography.png 1012w","sizes":"(min-width: 1012px) 1012px, 100vw"},"sources":[{"srcSet":"/static/a2fa82a75935e0858c6e4f4033465c43/69402/cryptography.webp 253w,\n/static/a2fa82a75935e0858c6e4f4033465c43/29a8e/cryptography.webp 506w,\n/static/a2fa82a75935e0858c6e4f4033465c43/3a892/cryptography.webp 1012w","type":"image/webp","sizes":"(min-width: 1012px) 1012px, 100vw"}]},"width":1012,"height":569}}},"date":"December 2020"}}},{"node":{"id":"0561a320-4e01-507c-90d8-11dc7d6fd7ff","frontmatter":{"languages":[],"priority":6,"dependencies":["docker","borg"],"slug":"docker_borg_backup","link":"https://github.com/christopher-besch/docker_borg_backup","description":"Schedule Borg Backup with Docker-Compose and docker_cron.","title":"docker_borg_backup","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABlElEQVR42l1SCY7bMAz0H1pvfEiWRN2XLZ9xtugFtP//UolkWyQFBgQpaDgjUhUvCbZRn0XfZnvb7XWnKhMZqc4EQi8QjsiEuFD11sMzqroVxDn3c5PzyP0q86HGU4TtHlfmFoi7yieWHbN1J17Ibx20XLEU7bEO0jdEIqiwDYGWKiYDEa5jpm7ZiyyRFyIrzLAf6vfMq7S7+Ysp73Y6/fbNTCf4Gckt1XUHHzefUD06XahkOuu4qbDKsIAvJh92vIKbCHjlyyDjIANTiesk7Ah24ib/JaNV8DpfUVlPt7B+Bb/F48egYjOoh/MWMeiOW8wf8W67FZdeURHAFB0XFRabd+mKHw8TF+mLCrOJK+rjoU0rKuuw4M37wIQegh984GOCMBLu0KGwGb1QGTBH5xQCllxnYTIRmCQ8r/DdnTRDDKoUu8/Cxp4ZHHvPLXomjygckpHWUPWpYUj53HLEh+26ERRSPn7Z8j7efsf9u4wbDombCQUfj8QWzes/qZ5X10Nome2Ex9hQfR+kwiX9281/P+wPEFtbXIxxW1gAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/ceaebabb03fc010dde3f8c6c76ffa5e8/02437/docker_borg_backup.png","srcSet":"/static/ceaebabb03fc010dde3f8c6c76ffa5e8/f0aa7/docker_borg_backup.png 188w,\n/static/ceaebabb03fc010dde3f8c6c76ffa5e8/5bee0/docker_borg_backup.png 375w,\n/static/ceaebabb03fc010dde3f8c6c76ffa5e8/02437/docker_borg_backup.png 750w","sizes":"(min-width: 750px) 750px, 100vw"},"sources":[{"srcSet":"/static/ceaebabb03fc010dde3f8c6c76ffa5e8/d03f4/docker_borg_backup.webp 188w,\n/static/ceaebabb03fc010dde3f8c6c76ffa5e8/1e940/docker_borg_backup.webp 375w,\n/static/ceaebabb03fc010dde3f8c6c76ffa5e8/06597/docker_borg_backup.webp 750w","type":"image/webp","sizes":"(min-width: 750px) 750px, 100vw"}]},"width":750,"height":423}}},"date":"September 2022"}}},{"node":{"id":"e330b914-530e-52a0-9f17-d9a9eda50aca","frontmatter":{"languages":[],"priority":6,"dependencies":["docker","borg"],"slug":"docker_borg_remote","link":"https://github.com/christopher-besch/docker_borg_remote","description":"Using Borg and Docker to sync Backups.","title":"docker_borg_remote","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABmUlEQVR42m1S7Y6kIBD0MVRAHZXmowEBGWdud3Z/TC7Z93+jbfTXJZdUKtUdGroqNDezw/GlP9+zCouyq8EZ7KLxJi2Ji3sGXQddf/IlTjSsV5PO6vG9uLQqsxp7XkEz5hLEw6QujLMebhUj8aQbMSLjWox+lgFzsbFgIt5NyJjuVDpqpt2XA9OOmVD8fsd0KJcbzg0XZpiDtGH/KuGR8mt3Jfp7JEGlu0diKtNHjn+yzRv1Z4VtC80EadkeZPtmy21xevPKBzEY8tlzYEJxQQy8ihNDBeNAB5oRIhwvfP8sNpJDQFx15aX6rywNdr1sW9l1su0k6Z7JejWTNbBRblBeEHZ6U4cN0JFQfsMcAYNyXrkgjSesxg8TLaV7phg7A+t74EzPC545Fe2jckn7fCZXw9PhHw2YKS2wuRHCigmHJcw6uCOBQ5PItpMWqYF7cHswm8PszeZdOcvofaGAseHCku0lPPL7O3w8dfB1bUfDbpwNfYkrudMkMK6qpiCvwMSAtD0fbP5Mz78lPhPN08sUO2HVeI39F7+eG2b9HsHVfAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/6f7e29f23524527eadcb80896a5c8f90/0dee1/docker_borg_remote.png","srcSet":"/static/6f7e29f23524527eadcb80896a5c8f90/f0aa7/docker_borg_remote.png 188w,\n/static/6f7e29f23524527eadcb80896a5c8f90/f9574/docker_borg_remote.png 375w,\n/static/6f7e29f23524527eadcb80896a5c8f90/0dee1/docker_borg_remote.png 750w","sizes":"(min-width: 750px) 750px, 100vw"},"sources":[{"srcSet":"/static/6f7e29f23524527eadcb80896a5c8f90/d03f4/docker_borg_remote.webp 188w,\n/static/6f7e29f23524527eadcb80896a5c8f90/cf250/docker_borg_remote.webp 375w,\n/static/6f7e29f23524527eadcb80896a5c8f90/a66aa/docker_borg_remote.webp 750w","type":"image/webp","sizes":"(min-width: 750px) 750px, 100vw"}]},"width":750,"height":422}}},"date":"September 2022"}}},{"node":{"id":"887dd175-8e93-5c22-ac12-3bb8ccd12b39","frontmatter":{"languages":[],"priority":6,"dependencies":["docker"],"slug":"docker_git_backup","link":"https://github.com/christopher-besch/docker_git_backup","description":"Backup all your Git repos with Borg and Docker.","title":"docker_git_backup","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABzUlEQVR42j2Q2Y7bMAxF8w9tk1iWLcvaJVKLt0wcTJp5KAr0pf//N1VmkAJXBAnyELw6OLODe0/hQ+kdYC/5HeBa8n2dP4ItQUcrnBmt4tYIb4ST3HnpaxSDO5yJVGKJ/mH0bUu3ayzF57+3tz9recP4e5svWB7z/QJL0qEYCMIvDkH5IMOBUNP1oSGyi7eu/BIO43VJ0+QCQElxSrZklzYDE7eeGy8DCADCzPGsDu0T9mxA6tYWLlRmSlXTqoboupe0mlLdUkVa1XWG9nXYdMy2VNfWoT7Ok7e3wazNGNnohtEx7ris0fZfGuyofE3qMCGfav/DQ+o7T+xC3FYZG1Ha4FLUAaQPGmDU3iasreaFveB6dufq5eQsWiJOjTqd1blRx5M8fyZf5ekoa1Lhl9SJVM/Vlcx9+jnYbDHO25zn5CNOa3YAcclpznx0fW959TLYqoFZNng9uufZbCzC37mIo4z7vEbtlApryVp5JWyq38utFKYgFowFEOpWWB8lV9iwPgwMaqRUdiMGnScTJLNeeK2XjiEbktV7S8P3H+Jp5+lFfjvJJ9wz6PvA8NrBRbtYlnnbSkSMOYY8c42Y98e8O4saQTpEWC/VkMd/7ChkfqX4eUAAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/5dd042425f348f19eb3c0f4669b4fec7/0dee1/docker_git_backup.png","srcSet":"/static/5dd042425f348f19eb3c0f4669b4fec7/f0aa7/docker_git_backup.png 188w,\n/static/5dd042425f348f19eb3c0f4669b4fec7/f9574/docker_git_backup.png 375w,\n/static/5dd042425f348f19eb3c0f4669b4fec7/0dee1/docker_git_backup.png 750w","sizes":"(min-width: 750px) 750px, 100vw"},"sources":[{"srcSet":"/static/5dd042425f348f19eb3c0f4669b4fec7/d03f4/docker_git_backup.webp 188w,\n/static/5dd042425f348f19eb3c0f4669b4fec7/cf250/docker_git_backup.webp 375w,\n/static/5dd042425f348f19eb3c0f4669b4fec7/a66aa/docker_git_backup.webp 750w","type":"image/webp","sizes":"(min-width: 750px) 750px, 100vw"}]},"width":750,"height":422}}},"date":"August 2022"}}},{"node":{"id":"da7c139f-f844-54d3-9645-f0e85a3087ec","frontmatter":{"languages":["typescript"],"priority":7,"dependencies":["firefox"],"slug":"bbb_autostatus","link":"https://github.com/christopher-besch/bbb_autostatus","description":"Firefox Extension Simulating Human Interaction in Video Conferences.","title":"BBB Autostatus","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABaklEQVR42n2S2U7DMBBF+///A4hC4QUKbwgksjoN3RLHCfGS1UnqcJMXhER7ZVn2yMczvuPFOI62Za3u78uiqKsK277rwk2w234pKbAez2thTqfAd19f1hmjpZIItU0dBn5A/JRRrRtjzFl4HI3vOcvlLf/OqrKY4LYmnrsJyGG/Ox52uOs8bEzge+unpzxLpeB93+m2CQOy/QoZjZWSw9Bfyuzan48Pq+i4321D5AHtubZjW6USF2qe4GEYQLm2ReNICY7Tum2J5wTEi6OjFPmlN6Oq6LCf4OhQSD70PZI71qfvOjQ+Sv4Nw405nSt7/Hh/u7m+grdojxD5aegeVnevL88pSxBBHD78D1dVxXkOqxhLshSeCYyiQI8FQyih+dQFfAKMX2HTNM2i0xqvhbdoDBxL4qip6zRNN5twhhNCCOcc1mitu1ntLHixwK0soQmNGZ3nhEopyrLM81xKqZQSQmCu/woHkPkHA2FuTLlOEvMAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/aaead84ab62c2fe90cf9a8f2484b0c08/59e57/bbb_autostatus.png","srcSet":"/static/aaead84ab62c2fe90cf9a8f2484b0c08/372d0/bbb_autostatus.png 136w,\n/static/aaead84ab62c2fe90cf9a8f2484b0c08/d8348/bbb_autostatus.png 271w,\n/static/aaead84ab62c2fe90cf9a8f2484b0c08/59e57/bbb_autostatus.png 542w","sizes":"(min-width: 542px) 542px, 100vw"},"sources":[{"srcSet":"/static/aaead84ab62c2fe90cf9a8f2484b0c08/c3c12/bbb_autostatus.webp 136w,\n/static/aaead84ab62c2fe90cf9a8f2484b0c08/67841/bbb_autostatus.webp 271w,\n/static/aaead84ab62c2fe90cf9a8f2484b0c08/89110/bbb_autostatus.webp 542w","type":"image/webp","sizes":"(min-width: 542px) 542px, 100vw"}]},"width":542,"height":305}}},"date":"May 2021"}}},{"node":{"id":"47ed664a-f0c6-51cb-aabb-9ea9e5f48ad7","frontmatter":{"languages":["typescript"],"priority":7,"dependencies":["webpack","bootstrap"],"slug":"book_page_converter","link":"https://christopher-besch.github.io/book_page_converter/public/","description":"Convert Page Numbers between Different Versions of the same Book.","title":"Book Page Converter","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABLElEQVR42q2Sy07DMBBF8wkgROyxnYedVxNB2zwEQmzZIyTED7Dh/3/gMnaaAoKC1LI4ycjKXM+9k8hVNYq6QV6USHILnWaQ2swoA0pSrhOQ4bdJAorPDhFJ0lh1HfphwHqzCfi6H0dM04i2sVhfNYHb6RptW+NSEl+mfyTyjyTLYYsChm/QjOEptVFQ5YD45hVx/4J4+wy6e4Os76G1hOKJiV0s7AUFKaRsNbMOvvaHxBarqoLIO8jNI0T3EKDtE4TrkWXJXtB/7weomlXoDxNm1sI6B8c5BsoqZEqKQPE5SFzMxGcgEhDKfLHphb3o3vLn0T8sqLAUqeelzKS7ZX3PbnEXHQqXDjT+RXRM0z8Jmh2nCvpsFpQ6TdDnmLoS0vHv41rIvJmX80vPO+f+JchTPL98AAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/2aa401fbe9cc79fdb342b5be684f994b/87706/book_page_converter.png","srcSet":"/static/2aa401fbe9cc79fdb342b5be684f994b/f80f8/book_page_converter.png 320w,\n/static/2aa401fbe9cc79fdb342b5be684f994b/9a63f/book_page_converter.png 640w,\n/static/2aa401fbe9cc79fdb342b5be684f994b/87706/book_page_converter.png 1280w","sizes":"(min-width: 1280px) 1280px, 100vw"},"sources":[{"srcSet":"/static/2aa401fbe9cc79fdb342b5be684f994b/c0bcc/book_page_converter.webp 320w,\n/static/2aa401fbe9cc79fdb342b5be684f994b/17574/book_page_converter.webp 640w,\n/static/2aa401fbe9cc79fdb342b5be684f994b/71d4d/book_page_converter.webp 1280w","type":"image/webp","sizes":"(min-width: 1280px) 1280px, 100vw"}]},"width":1280,"height":720}}},"date":"October 2021"}}},{"node":{"id":"853d8ded-24e3-5d1c-a4be-e811d31c0d95","frontmatter":{"languages":["python","typescript"],"priority":7,"dependencies":[],"slug":"jupyter_compare_view","link":"https://github.com/Octoframes/jupyter_compare_view","description":"Blend Between Multiple Images in JupyterLab.","title":"Jupyter compare_view","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAACcUlEQVR42n2TSU9TURiGu3ZgKu1tb0dQ4N6WtkDiAAShEVqppcyIDCIig8QWVEICKCCJFIMgBWoQFIwDUZMWoztETQxL9vycx0sXxATC4lmdnOe8+c77qQS5GEHQYLJmkC3byLLnIee6cDgcyDYbkiwrSDid+TiyJKQcCdFkxmi2YLJYj6AScssQdVpS0wVa6moYafEy0epjrM1Lv/8CA41uuv2F9Pd28fzFHBOTk/h815VHbGh1evQGIzrRcIgidCPqtSSlpTMxNMTnqV5ehapYCfmJ9JSzEvSzFAwwH54itvWNaDTK/PwcFRUeUtXpiEbTMUIlYbJaw/C9PpYHGgi3FfF2KEBbpZPwbTdbz7qJb26w8e49W/E4M+Ew5Z4ThRrSBJFAiYvo/Wo+jbaz2HOF/hqZkC+fP6tPWI0u8ODhI3Z3d4nFYni8104Wpmr1tHgusjZYy2KXh4VONxuDPmZqs/g+7md9JcLLyCKRSITNzU2abjSTlJJ6QkKtSJO7gA+TQZb6avg4dpevj+tY7SogXC0z+3SU12tv2NnZYW9vj57ePk6fTcag/PjxQp2RhuJsfswO83d9nvj0ILHxVr6MtDLdXs36coSfv36zvb3N/v4+wVCIU2eSjhOWoVd6qNEbyJMs3KwspaM+QPP1CmqvluC9XEBVaSGNDfV0K6k673TRfquDS4VFpKVrEhJBLx6iEsyZiAYDJlMmFksOWtGIWpmnYDQrmBAOEhisiVlpBB1qjZaUNHXi8kGRDwr+PyqdcqA3GrFYz+PIy1e2xIbd7sThdGFzOMmS7Eg2Ow6XS9kcO9mShDXzXAJLRuYR/gHUBIeYGH+vFQAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/2e29918fcd7065171abf5a9e71e3e0fa/93019/jupyter_compare_view.png","srcSet":"/static/2e29918fcd7065171abf5a9e71e3e0fa/a9b17/jupyter_compare_view.png 149w,\n/static/2e29918fcd7065171abf5a9e71e3e0fa/873d6/jupyter_compare_view.png 299w,\n/static/2e29918fcd7065171abf5a9e71e3e0fa/93019/jupyter_compare_view.png 597w","sizes":"(min-width: 597px) 597px, 100vw"},"sources":[{"srcSet":"/static/2e29918fcd7065171abf5a9e71e3e0fa/2ec87/jupyter_compare_view.webp 149w,\n/static/2e29918fcd7065171abf5a9e71e3e0fa/5b303/jupyter_compare_view.webp 299w,\n/static/2e29918fcd7065171abf5a9e71e3e0fa/faef1/jupyter_compare_view.webp 597w","type":"image/webp","sizes":"(min-width: 597px) 597px, 100vw"}]},"width":597,"height":336}}},"date":"June 2022"}}},{"node":{"id":"706b8428-0a6d-5a1f-aa07-e00dca67d519","frontmatter":{"languages":["python"],"priority":7,"dependencies":["flask","bootstrap"],"slug":"ohg_plan_parser","link":"https://github.com/christopher-besch/ohg_plan_parser","description":"Parser for the Substitution plan of the Otto-Hahn-Gymnasium Gifhorn.","title":"OHG Plan Parser","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB/UlEQVR42oVSy27TQBTN51UNXYAE++666CZSF/AHVXcVpQoClQWtVAl1BYgVom0apSnIVaNUwklIHL9mPH6MZ+zxY2K7XCeIDQuuZnHu1VydM+dM42FZyq3SueooilJW5Wj0E3C3e6WbBg38i8vz/k1/eD8sCtnv9wBf968H90PYalTL8n0PO8g0DcZYHHGEkee5nu+laUoc7LoEY5TlmQ8z4gWen4ikXpZSpmlimEZA6UoFIc5M0/T5HIYspACgwQgvykW719672Nv9uvt28Cav8pq5LEshBJAAhuUkEeGyYCJlzjmLRQzDvMg3TzY3jjaefn7W+t4ShWjA7ZXyFe1f8G8LmKbUT/xABmFGoW3keS5EbNvWfD4HtdVDVcueTeGkSaYH+n5n/+XlwcHdqxFTT3+cHnYP2zevz/QzENIowEQpoyhinMEBBngCaKastuBWV5rvHj0+ebL+fv1c+7b1YWvtaK153Nzubf9fdiKTGZ9pkTYNpzzjJjenbDqLNEPoRVX8cRsjBN5CLd0m4LCNbOISEcfIsF3kOpazkJJggm2MLcTDqI6qWCzg2YyFAQ2ggDmKOIRMKYXM0yzF8AN8yBrXOQeQtAufIoqXy7AZx9yyTFVVgQpGYN5kPNZ0zXVcFas7H3eef3nR+tQakDtLt8aT8a/JxPU8uPkb7MBLQz3lw4sAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/010debbb2895bfdad1bede28a9cad696/752b5/ohg_plan_parser.png","srcSet":"/static/010debbb2895bfdad1bede28a9cad696/06b11/ohg_plan_parser.png 109w,\n/static/010debbb2895bfdad1bede28a9cad696/d225d/ohg_plan_parser.png 219w,\n/static/010debbb2895bfdad1bede28a9cad696/752b5/ohg_plan_parser.png 437w","sizes":"(min-width: 437px) 437px, 100vw"},"sources":[{"srcSet":"/static/010debbb2895bfdad1bede28a9cad696/4be77/ohg_plan_parser.webp 109w,\n/static/010debbb2895bfdad1bede28a9cad696/4bebd/ohg_plan_parser.webp 219w,\n/static/010debbb2895bfdad1bede28a9cad696/bd60b/ohg_plan_parser.webp 437w","type":"image/webp","sizes":"(min-width: 437px) 437px, 100vw"}]},"width":437,"height":246}}},"date":"July 2018"}}},{"node":{"id":"5c6b0000-143d-520a-bbec-c67c9d219924","frontmatter":{"languages":["python"],"priority":7,"dependencies":["gephi"],"slug":"time_table_planner","link":"https://github.com/christopher-besch/time_table_planner","description":"Data Analysis and Visualization Project.","title":"Time Table Planner","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAAC00lEQVR42jWSy24bBRhG/TDAkiUP0B0SEuINYMMCJFiAEAgQO4SQogrBAoFQA20TqYQQUqc0rU18jR078W0mnvH4NjfbM/Yk49vYHt8OQyW+9f9/i3O+0FCOMvPWLH0fW9HpSBLSvTpG4ob/UlNSNIQseeGA88ounj5koPbw/SX+dMp6Nntxt91sWK9WhDYjh0pJIBKJMtRMtoMBU0VhILdYOlvC8a9J1+6DD1PHRDmUEX7qML512NpDNt6MxXzNwl0wHDqEXM3A1A1k8RqrofFOxuJp26afVJEft1l5PsupT12sYlsWeqpC7Y80QiTGu5EDMucJGvdzKOEe42lQKMsJXMtm4Qwxqg1ee6pxL9diK1yjlKpcplNYco03X7/DZx+8z6RjMciLSPunfH68h3SRw03mmNyMWAUYQm27wiyv0Nl5yG23h1dTqMezhEsq1SuB8nkGPPj76Ij8aQwCDNnCr4SffcU2KeAVytxJ7LNTTsI8KCw0D1mZHpOWiVOSGOdLJPIyrz7v0rhW6apF9tIfMq61qIpHiPIp5XqUnLTL+kpkei3xUeaEg7bI2vYCKasNarOCO+pjf/Mb/YMIg16PfkenHs6RePILXxy/jGObXLWOSVUesJ0HWmWVh/UB31+0WcfyjCQNMyUEhUt4dPkxxfwhTryMlilgXhnUTmTsgONy4uHfThjVdex8g814hXiRpRiNYuguJblLPxNDe/wnS3dMaOFvuTFM7KqCGbvECtgNCl1aR1WMjIgt9pD7Lk052GixRCfxD50AiytK/FiJU9R05mc79H//EvV5nFDvwdt41ogfYm8RLXz3YqTlxhPOIneDxxobw+bnXJPTZJ3h3nvY375CX2qDPuCT5F+c1QTWzWCzt2M0PUfIOd/FUbukMvsochrfXLLz7A0+PXyJYSAleXKCXRaZB1LG5TNuso+Y6Cp2ZB9fajGpq6wWPv/nXyYm/2M8YBggAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/6ebf595c0ce1860eeba4054c6c5cc1f5/0691c/time_table_planner.png","srcSet":"/static/6ebf595c0ce1860eeba4054c6c5cc1f5/2aa30/time_table_planner.png 285w,\n/static/6ebf595c0ce1860eeba4054c6c5cc1f5/e62cd/time_table_planner.png 570w,\n/static/6ebf595c0ce1860eeba4054c6c5cc1f5/0691c/time_table_planner.png 1139w","sizes":"(min-width: 1139px) 1139px, 100vw"},"sources":[{"srcSet":"/static/6ebf595c0ce1860eeba4054c6c5cc1f5/b343b/time_table_planner.webp 285w,\n/static/6ebf595c0ce1860eeba4054c6c5cc1f5/6375f/time_table_planner.webp 570w,\n/static/6ebf595c0ce1860eeba4054c6c5cc1f5/984aa/time_table_planner.webp 1139w","type":"image/webp","sizes":"(min-width: 1139px) 1139px, 100vw"}]},"width":1139,"height":640}}},"date":"March 2020"}}},{"node":{"id":"00a65e3b-4350-5432-9f07-eab958b7bd4c","frontmatter":{"languages":["typescript"],"priority":7,"dependencies":["bootstrap"],"slug":"who_am_i","link":"https://github.com/christopher-besch/who_am_i","description":"\"Who Am I\" Game with Your Friends as Characters.","title":"Who Am I","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42pWS2U8TURjF+2eZ+D8Yjb7Ik/oAIcH4gqgJCjFCGotRjEKwgFpCCCCFiCxuNBFLBYKRVQybdaGUlk6ns3aW/rxeDDwYEr3JyXdmvnvPzDnfDYwmkkTjP4lNrpKMvcNcXMFNZ5CrVOJ/V6B5rEBt1KSrf429x91k2p5S+DCLJ5qu4+C6Lq7nyuqI59/wPO9oQS2/i6ak0HWFnGVJ6LaNZZkCFqaopilgmBiGgS5gi/6RgulMlpSwmFcL4ssOJd+TTv82+2/2A744XdA0PMcm/glCOxNEnEY00hhaEd83WFgR77fmCDv1pEvrOKaPYRpSwLJswc1DQVs0mipPsjmfoCcO58+dpnX2FDm+0VpdzkKsj5fLcKH8Io0vjqHwlZ6GWkY6Q1Kg9951og9uSu4LdwHXKTLZfJlccpnVDpgqqyHdcgVXS5IIB9ldnWBjCN6fDfI9WEFJ2eDjQAdr491SZD4a5vPzzv1QfJ+ArhnsbG+jqArmMOR73mJHxK+msjJXy9MxXoPSOYnRNgbrKVTbRFdVKaIVCqj5/ME1CxSLRbI5RUzQYmlmiZHeQV4NjqPuqehiyoYAfgnNLOzn5gsRMXH9T26GaaHpxsHMAkXL4E7VGTYXZ4kNJ6g5cZzWa1fJpnO036hgevyZ3NheV0Wsv0PySLCa0Sd3Je+7X89gS8Nhho7IcCJ0idzWCtPReQYqyxi+HSKzk2cqXMePmTdyc7z9FluxIcmnI018Ge2SfK7vIUvRRwcZ/gLB5BjRNwUe3wAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/31a6dfc8ba3d42b8c4c0a76ae8243156/c206e/who_am_i.png","srcSet":"/static/31a6dfc8ba3d42b8c4c0a76ae8243156/c86e3/who_am_i.png 284w,\n/static/31a6dfc8ba3d42b8c4c0a76ae8243156/33bc5/who_am_i.png 569w,\n/static/31a6dfc8ba3d42b8c4c0a76ae8243156/c206e/who_am_i.png 1137w","sizes":"(min-width: 1137px) 1137px, 100vw"},"sources":[{"srcSet":"/static/31a6dfc8ba3d42b8c4c0a76ae8243156/be6c4/who_am_i.webp 284w,\n/static/31a6dfc8ba3d42b8c4c0a76ae8243156/3d74d/who_am_i.webp 569w,\n/static/31a6dfc8ba3d42b8c4c0a76ae8243156/c0cb4/who_am_i.webp 1137w","type":"image/webp","sizes":"(min-width: 1137px) 1137px, 100vw"}]},"width":1137,"height":640}}},"date":"March 2021"}}},{"node":{"id":"9ec7efcd-6eff-547c-b1db-ba631cda945b","frontmatter":{"languages":["python"],"priority":8,"dependencies":["flask","bootstrap"],"slug":"mc_royale_supervisor","link":"https://github.com/christopher-besch/mc_royale_supervisor","description":"Minecraft Battle Royale mode with Supervisor Powers through a Webinterface.","title":"MC Royale Supervisor","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB0ElEQVR42j2S227TQBCG/QZVidd7mPEevF6fUpxD4yhpSAsUigJCSFRFvYS7IvWiRXDDFbc8Am/LOIZIv0aj2f13v/3tyIcCUuNDWVWlUEiq6qY5OdHOKdQSUiGxmY2raWUrh9bQZC+kGgkFXKrU2JBb2fegjc3ynEQ7BABj8uzT/MOPy93Dtl5X1hVZURqX0Wpv7v1CjhLJ930iJOOccUEHDauYptY5AGTKCB0YOJk6mkZ7AEBtQu4Q6Spqrc28zTKFAx7GIn3CdSz1rNEvunAxd+OgEgH/sMlRBjq7x6YnuCwnf+9UEHO1W+m79+HV0rxdw+O1/X5tPm71SBywpYrFAVsxTuSCejIzAc9bebuBVcW2yt/V7QX6I2lwwKZN2jrvveoTQuOcD4ECG7CFgOysqXfzajf7/Mb/uvLfruxmIhndPLwKUk3kdM/QEzlpiOM4ll+/VH9+d/f3T8/Ps5vL/PZ1/nLhEpVGhBeTEs76kAcJqoeoEwmtl5tGFjrZaf+znb4z/kggIEb0R9TjhiollIciFGVelNRTCoOZNBJwzHEk0SM0CFS56lejRbfYbp+t1qvpbH56ulh0XbdctpMJfUb+30zwai9G4au+DvO/s45ZNDTY2I0AAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/e2c1d3c93e6c6ee28de8f535211258ea/41ea1/mc_royale_supervisor.png","srcSet":"/static/e2c1d3c93e6c6ee28de8f535211258ea/8ab74/mc_royale_supervisor.png 214w,\n/static/e2c1d3c93e6c6ee28de8f535211258ea/9f483/mc_royale_supervisor.png 428w,\n/static/e2c1d3c93e6c6ee28de8f535211258ea/41ea1/mc_royale_supervisor.png 856w","sizes":"(min-width: 856px) 856px, 100vw"},"sources":[{"srcSet":"/static/e2c1d3c93e6c6ee28de8f535211258ea/5177e/mc_royale_supervisor.webp 214w,\n/static/e2c1d3c93e6c6ee28de8f535211258ea/ae194/mc_royale_supervisor.webp 428w,\n/static/e2c1d3c93e6c6ee28de8f535211258ea/e11fc/mc_royale_supervisor.webp 856w","type":"image/webp","sizes":"(min-width: 856px) 856px, 100vw"}]},"width":856,"height":481}}},"date":"December 2019"}}},{"node":{"id":"a05a5af9-7962-52c4-9725-50ef7e3c102c","frontmatter":{"languages":["python","typescript"],"priority":8,"dependencies":["flask","webpack"],"slug":"project_omega","link":"https://github.com/christopher-besch/project_omega","description":"Article Publication Website.","title":"Project Omega","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAACDElEQVR42n1SyW4TQRD1F8RJPNNdvcxMz+KJbbxNosgiWDFbFDBEYhEIkFAuIBkuERKBE0IcuHMBPvdRPWPgkMChVF29vHr1XrfSootur4+8W8JlORKOOM1gE8c5ReTSutZRXIdZ539FS5BCbzDAldEIo/EEu3t7yLmJf0jaghSBZAhFAh1hsbFt0ZGmjm1hIDSvla4zcbQkF2leoMxzFGuW2kYomXXiHJTrQQ0OIPIKu2ONkxuEaqgxHpi6LrjxNErhjIX8DZikDv3CIYodfK340EtRZAnk6BZo+QXt2Wu8WBJ+fAhwdCCxeixw9jLAgt+t8iGqKEGgNY/MAI51yl1S65UyUz9uWpS8F0FM7oAefcPm/AwPbxO+vglwuC/x8VTg3SkDMpnznQn2bYKOB/SM4oTF542IjUjYCBvHyHj8IoshqvugJz/RXpzj2V3C9/cBjucSn18JvH0e4lqc4VNvilnkGkAvpNESRgWwzMyP6/csj2+tgSwqqNlTBMMjzCqNBzcVilxjeahw/Sqhb2McZyV2TITQa0hEENN7UIsVTFpCm8Ytz1wqXpMEBZtQslO7utFhZ1WTt0KDkO+1lWIw3bhMXMj+HLI6gbSOv0lz8Ce4M7EcZOK6mWHWap19reoJbZ0bQL/gf0bh1kUwz3TN9rKzy6L1l0V8EYxBvEFR1gVl/B9ZeNL/B/4FaEI0+0sKY2sAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/4e199f626b070295f7c3e3a7fd898e89/87706/project_omega.png","srcSet":"/static/4e199f626b070295f7c3e3a7fd898e89/f80f8/project_omega.png 320w,\n/static/4e199f626b070295f7c3e3a7fd898e89/9a63f/project_omega.png 640w,\n/static/4e199f626b070295f7c3e3a7fd898e89/87706/project_omega.png 1280w","sizes":"(min-width: 1280px) 1280px, 100vw"},"sources":[{"srcSet":"/static/4e199f626b070295f7c3e3a7fd898e89/c0bcc/project_omega.webp 320w,\n/static/4e199f626b070295f7c3e3a7fd898e89/17574/project_omega.webp 640w,\n/static/4e199f626b070295f7c3e3a7fd898e89/71d4d/project_omega.webp 1280w","type":"image/webp","sizes":"(min-width: 1280px) 1280px, 100vw"}]},"width":1280,"height":720}}},"date":"March 2021"}}},{"node":{"id":"7129211b-0f0a-572d-a253-5974ad08ac5a","frontmatter":{"languages":["python"],"priority":9,"dependencies":[],"slug":"arg_toolset","link":"https://github.com/christopher-besch/arg_toolset","description":"Toolkit aiding in solving alternate reality games.","title":"Arg Toolset","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABTUlEQVR42m2S666CQAyE9x0QRG6iIoii3ATC+z9YT74mJeTEH5OW7ky308U9Hg9ZlkXCMFREUaTxdrtpfV1XmaZJ4jiWIAjkdDoph/gL7nq9Sl3XUlWVZFmmIhomSSLP51PKslRcLheN1I/H4zbAfzhIn89H2rbVpggADai9Xi9pmkYjvPv9vnF+wUHE0vv9VotMRTOm7vteQePv9ytd18k8z9o8z3PB3R7oXFEUKmaK8/m8WUaAkB1zDriMb7jkOOKbHFBXy0zAJOSQeBBuwyIkpre1WDNqtgpywLnjEDvDMGzWILErs0vELtHE+3UAzrUh3u1BfN8Xz/PkcDiofYRm1SKTcqE9pq2AAdA6CuM4bnukOUJ2iwCYRTuz3OwyHVrdIQ0Z3QrWgBttdya0M9vrPocD1DJ2uTFNU7WLdSxDsBc2Do9lHP4I4j7/A+CPPseYlsGzAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/d9af869cd877cf16897b43771cccfaa7/9d14b/arg_toolset.png","srcSet":"/static/d9af869cd877cf16897b43771cccfaa7/d141e/arg_toolset.png 132w,\n/static/d9af869cd877cf16897b43771cccfaa7/9803f/arg_toolset.png 264w,\n/static/d9af869cd877cf16897b43771cccfaa7/9d14b/arg_toolset.png 527w","sizes":"(min-width: 527px) 527px, 100vw"},"sources":[{"srcSet":"/static/d9af869cd877cf16897b43771cccfaa7/f62d0/arg_toolset.webp 132w,\n/static/d9af869cd877cf16897b43771cccfaa7/441a7/arg_toolset.webp 264w,\n/static/d9af869cd877cf16897b43771cccfaa7/41ffa/arg_toolset.webp 527w","type":"image/webp","sizes":"(min-width: 527px) 527px, 100vw"}]},"width":527,"height":297}}},"date":"August 2020"}}},{"node":{"id":"2cd91929-b240-50ed-8199-6f16083bc8e0","frontmatter":{"languages":["cpp"],"priority":9,"dependencies":["godot"],"slug":"cmos_simulator","link":"https://github.com/christopher-besch/cmos_simulator","description":"Click some nMos and pMon Transistors together.","title":"cmos_simulator","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB+ElEQVR42n2SS4saQRSF52dlMTFKi7G7q8putX22Thx3IcF/4kYnPgluJrp3OwFBFFw4O92qe8GF4INRT24V6OAkmQuX7mq4X59zT91wzsGoTc7AbQssnwaPhcGFAGcclmXB6/WiUqlgNpuh2+3ieDxiMBhgOp1C1ul0wrluJCxshuDaGRjZJNi3HNhdEsF8gn5AwJCFTwSsVqsYj8doNps4HA7o9XqYTCZ/A6VCqcb1mdBZEMY9gZ0oNHELljJhcVLo86JcLitlq9VKDY5GI7RaLex2uyuoAppkzQ2byKc1fElpyCb8uMtqMGMcgtvweLxoNBp4/PWITqejBqXafr9/pe5VIbXB5B4F8q6GRDSIsGUgaumIOwwB/y3t8AeWyyWen8dqcDgcYrFY/McytWBkO6ThPu1B0vmMVCygOpPUYQQ+kL2feHr6jUKhcBmWK3hbFyAXIYT9PgjDgR3JQNdNGBQWFzY+enwoPzyoAanyvboAmWCk0EbB+Q7HccFMg/YnYNO18VHKpVJJDciEpUUZxmazUeeXl5frUJTlkAxGJ2gWTiwL09Tpu7jcwzNQ1nw+R61WU3dTPmXa5/RfLcthQWFEc4jHc+8CZRjFYhHtdhv1el2B1+v1G8uM0bCNjPsVkUiKzsY/gdKibGl3v99ju92q97PlP1gnYQxM37BYAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b1db4520aec38adb87983526a2e24dc5/252d5/cmos_simulator.png","srcSet":"/static/b1db4520aec38adb87983526a2e24dc5/cb1c8/cmos_simulator.png 269w,\n/static/b1db4520aec38adb87983526a2e24dc5/16840/cmos_simulator.png 539w,\n/static/b1db4520aec38adb87983526a2e24dc5/252d5/cmos_simulator.png 1077w","sizes":"(min-width: 1077px) 1077px, 100vw"},"sources":[{"srcSet":"/static/b1db4520aec38adb87983526a2e24dc5/bb587/cmos_simulator.webp 269w,\n/static/b1db4520aec38adb87983526a2e24dc5/4bca7/cmos_simulator.webp 539w,\n/static/b1db4520aec38adb87983526a2e24dc5/2d602/cmos_simulator.webp 1077w","type":"image/webp","sizes":"(min-width: 1077px) 1077px, 100vw"}]},"width":1077,"height":606}}},"date":"May 2023"}}},{"node":{"id":"682154b4-9546-5b1b-b9e0-e98bef0a0a36","frontmatter":{"languages":["python"],"priority":9,"dependencies":["docker","minecraft"],"slug":"docker_minecraft_screenshooter","link":"https://github.com/christopher-besch/docker_minecraft_screenshooter","description":"Record Minecraft Timelapse videos.","title":"docker_minecraft screenshooter","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAACjUlEQVR42iWOTW/SAACGqy7TgxsbhQ4YA+YGK6wtLZS2lJaWfkFb2tGWMTacH9N9GJ0bcFX/gO4PGI8evLhk8eBMvHjwoFHjwcX4AzzqxUQTPSDG5M17e5/3AV5+GRy9//X07Y8XJ4PHr74evvv5/NPg2cffT15/O/rwp3f/Yf/g0fHJ4Pjz4PDN9+2tzbqu5AjU0GVJKAG3HxxIl3XKY7zeBizPFZc5d3/H2LmEWwi9zEbI8RlqSrxoNPpXNvq9tWaDJnGxXLQMNYcjQJg6E6JGIWLUj52Ki+ORwjkofxoiR4KLZ6HMSCg3FsbPw2yM4hYbtmIbGkXizlKNoQiWyQNxHkwI/kTZn+ADcW4ySvsi1ESyBCFEAM8GoukxVRXatnptiV1f80osZRiKLPMMlXOsGpAgJxKYL8b6EtzkLD6ZIqZoOUQrsbyazrBQOh+QbWFztXijWbIbtiDwZl2n6YJdr5k1BUhVwFlmYl4Gk+wkpaXanZan4lUeZasEVoxgfLjS5rZWq20Nq0iVpmtWRE7Xa1a9qikiMMP5povjc5K/ZCPrV9sKlSktRlsrDl6OwwWwtTL8M1sSctPKODIhi5xp6pZtaWqlpklAjPFdUMAFGVItvuU2HYm5vtoqa+QCD/IavNJe9iR81870m9k9B+momXpNUNWKqkrDAHA1gJcDuBC+QIFJMlTSSEkvEsUIzAdba/q9u3c6GtJ10Z6X7XpY10O3jHRHSbli2iyjQFLzs3RgHvPHs/4UC8FCEBaDSDWKCKGyRNmm3pGTew7adbNdFxv2UKHfRLuNzC0zBaASmCXBBOGfJ8EkE4S5ECpPo+o0Volghbhlm73dne1GYd9But7//T9Eb2jhon8BCT+yvCMA7T4AAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/918bfbc61528540e93979b38c00bffea/afa5c/docker_minecraft_screenshooter.png","srcSet":"/static/918bfbc61528540e93979b38c00bffea/2fe1e/docker_minecraft_screenshooter.png 480w,\n/static/918bfbc61528540e93979b38c00bffea/9bec7/docker_minecraft_screenshooter.png 960w,\n/static/918bfbc61528540e93979b38c00bffea/afa5c/docker_minecraft_screenshooter.png 1920w","sizes":"(min-width: 1920px) 1920px, 100vw"},"sources":[{"srcSet":"/static/918bfbc61528540e93979b38c00bffea/3a3a2/docker_minecraft_screenshooter.webp 480w,\n/static/918bfbc61528540e93979b38c00bffea/bde8a/docker_minecraft_screenshooter.webp 960w,\n/static/918bfbc61528540e93979b38c00bffea/c512e/docker_minecraft_screenshooter.webp 1920w","type":"image/webp","sizes":"(min-width: 1920px) 1920px, 100vw"}]},"width":1920,"height":1080}}},"date":"March 2023"}}},{"node":{"id":"1d1c76e2-efb0-523c-af84-b0f2c4f87211","frontmatter":{"languages":["cpp"],"priority":9,"dependencies":["glm","godot"],"slug":"glome_projection","link":"https://github.com/christopher-besch/glome_projection","description":"Interactively Project 4D Sphere onto 2D Screen.","title":"glome_projection","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABKUlEQVR42lWS6U4CMRRGDyiKEUHBBQfEhVGUCLj/cI8a9QWM7/8m3jnjEGia26btt9xvBujBDuzDBXzCA2xBBdZhF/bgFurMj0toukmgDR0puvAM3zCBDWj4JoVzKOWwfAnA2E0otKBmDYoDOIEvePQwbjcFJzPYbFxZw2FVq9uwpmC868O1sy5pnAxhcVa8WVC8FN2+W3t2Gy7uzGJV8YFmp9io5VjeVJiYQjT8q+eOFKdwo3jD5I5hAZbyWcpqRjnUZ7w+M4gA35tfImO3SGRoX6j533xqSDEPYeSLkebz/Afy1uyxP+88G7lCokKqeKi9Cm6bSJhfMchcYw7cKvrpKRvgJ/gowGOvqn6zxK9Ynv1buvIdeZea8I8sdcEj3S4beEvqyhT5BwVfFxtLtlefAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/311e9ddcb1e37c3b3a82f909b721b43f/afa5c/glome_projection.png","srcSet":"/static/311e9ddcb1e37c3b3a82f909b721b43f/2fe1e/glome_projection.png 480w,\n/static/311e9ddcb1e37c3b3a82f909b721b43f/9bec7/glome_projection.png 960w,\n/static/311e9ddcb1e37c3b3a82f909b721b43f/afa5c/glome_projection.png 1920w","sizes":"(min-width: 1920px) 1920px, 100vw"},"sources":[{"srcSet":"/static/311e9ddcb1e37c3b3a82f909b721b43f/3a3a2/glome_projection.webp 480w,\n/static/311e9ddcb1e37c3b3a82f909b721b43f/bde8a/glome_projection.webp 960w,\n/static/311e9ddcb1e37c3b3a82f909b721b43f/c512e/glome_projection.webp 1920w","type":"image/webp","sizes":"(min-width: 1920px) 1920px, 100vw"}]},"width":1920,"height":1080}}},"date":"January 2023"}}},{"node":{"id":"b4c72d3d-c69e-521e-ae22-a29ff7a64c53","frontmatter":{"languages":["python"],"priority":9,"dependencies":["ffmpeg","youtube-dl"],"slug":"lofi_girl_downloader","link":"https://github.com/christopher-besch/lofi_girl_downloader","description":"Download and order all music from Lofi Girl.","title":"Lofi Girl Downloader","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABPklEQVR42l3SV5bCQAxEUYMxJsxg4Nhgcg77X+FcWpP1oSM3raonNdnhcNhsNqvVar1eN02z3+8Xi4Xi7StGo5E8Ho/fU5Rl2ev1ut1uJm632+l0Oh6P8na7vd/vbduS2+12bQpaFJ3IPufzeVVVtKhkl8vler3qfD6ffqaCJXL45HleFEWZot/vq+NEnXFgCNttJmom4blcLjG7JA+HQ26dTif7HbCDWSYB2/Ak4NEybV3XTQq0RYpAeDVjRq7z8XgwpwL+fD47mU6n7v1bm7af5tg2SG6xm1i722b+zrBD4g8258AWVEwRY9cpdJpcGwqKk8lEzVYxGAxeM+vnDzuAAx5LPKyraAMhXtjaLPz11MEpbIuVT1YKg+mfzWY6edofz+jJU3xix6q9M0/Lk70fucCGRwKnOv4bsQK9H5rmMIWxkW/CAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b400baaa5c2bdb1e044a962fc2c88517/f3b86/lofi_girl_downloader.png","srcSet":"/static/b400baaa5c2bdb1e044a962fc2c88517/ece18/lofi_girl_downloader.png 207w,\n/static/b400baaa5c2bdb1e044a962fc2c88517/c9837/lofi_girl_downloader.png 415w,\n/static/b400baaa5c2bdb1e044a962fc2c88517/f3b86/lofi_girl_downloader.png 829w","sizes":"(min-width: 829px) 829px, 100vw"},"sources":[{"srcSet":"/static/b400baaa5c2bdb1e044a962fc2c88517/068c1/lofi_girl_downloader.webp 207w,\n/static/b400baaa5c2bdb1e044a962fc2c88517/74295/lofi_girl_downloader.webp 415w,\n/static/b400baaa5c2bdb1e044a962fc2c88517/741ae/lofi_girl_downloader.webp 829w","type":"image/webp","sizes":"(min-width: 829px) 829px, 100vw"}]},"width":829,"height":467}}},"date":"August 2021"}}},{"node":{"id":"becaac7b-3c8d-5865-8e60-2aec2e134b50","frontmatter":{"languages":["typescript"],"priority":9,"dependencies":["gatsby","cors_anywhere","react-big-calendar"],"slug":"therapy_search","link":"https://github.com/christopher-besch/therapy_search","description":"Compute Call Times into a Calendar.","title":"therapy_search","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAACtElEQVR42m2SyU8TcRSA5z8xnvWi8eISE6+evJiYuCTggkgIKCBRBFeiuLBrUQQXqlCLUEAoIlCULkAtHTq0FApuQFtkaSlQcMvnb0ZO6uHLm5d5+eW97z1pYW6OD8E5RmfiBGZWCHyNMz4bZ0x8+8PLKFMxPJMxhgTK9BIjoWW8wSV8IvpVwita7lHrBNK3eAx9l8K+gtccLOokodzC4ZIuUip7OaF7R/ojO9n6frJr+jj/bIArRhfXG2UuGQe5Wj9I/ks3uXXvOfPEQdbTPqTv4kFdq5utWY3syjGxM6dJxCYSyiwcvdtDpihMrrSR9sjB2Zp+Tj6w0uicpFWexjwUot0Tosc/y/tPUayBeaS1pQgFRgcbk5+z+4KJTWkGtmYaKTDJPH0XIPGehQ1JerZkvGBbVj2b0w3kNwxS0qpw2eAk+X4P1+pdVHb50XX4kFZiEZoco6IDG5eNTgqaZG42y1R1+yl/PSyKvJS0KTzoGuG5bYJa+wdKzQqFr4a41ewmp7ZfjO3ionj8douMFF+K0jYQ4KzeyZ0WBYvvK93eGV65pzE4PtGhhOmbiGi56lAdO73azvF7b0mrtpH60Cpym+b8zGMH0nIsikX+SFn7COVmL/tvv2FPXgtHSrvZm2/mQOEbDhV3ki2E19k/ou+d0LyZh4K0CzqUEJ3DYdHIjPAaVDtc1Dq8ZHSTV+dk+zkTO86bOC22myEWom2yQaa4dVh4GqPM7BMj+ygSuRp1HX6K27zcMHmELg9SZGGe8el5XJ8XcX+JIot7Gxb3NhX9Tij2k8jaL74Bsys/xOgLGqPr9/rnZlcZE9Gv3q1AWhUOTfZRMmuc5BpcmsvUKgdJ960axyp6SdT1crzCSkqVXUM9o785tY5wuIg8EabFLZx4gpqfNnFjqo9/EIvR+N+/dX4DLBO43njKsuEAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/94a34e571c20f8d09ace3b0ab1c8cbc3/13309/therapy_search.png","srcSet":"/static/94a34e571c20f8d09ace3b0ab1c8cbc3/c475f/therapy_search.png 267w,\n/static/94a34e571c20f8d09ace3b0ab1c8cbc3/94713/therapy_search.png 534w,\n/static/94a34e571c20f8d09ace3b0ab1c8cbc3/13309/therapy_search.png 1068w","sizes":"(min-width: 1068px) 1068px, 100vw"},"sources":[{"srcSet":"/static/94a34e571c20f8d09ace3b0ab1c8cbc3/37b30/therapy_search.webp 267w,\n/static/94a34e571c20f8d09ace3b0ab1c8cbc3/788c4/therapy_search.webp 534w,\n/static/94a34e571c20f8d09ace3b0ab1c8cbc3/d158a/therapy_search.webp 1068w","type":"image/webp","sizes":"(min-width: 1068px) 1068px, 100vw"}]},"width":1068,"height":600}}},"date":"August 2022"}}},{"node":{"id":"b5e35dbf-f008-5c5b-a036-71b512291d78","frontmatter":{"languages":["python"],"priority":21,"dependencies":[],"slug":"technik3_plan","link":"https://github.com/christopher-besch/technik3-plan","description":"Plan a School Event.","title":"Technik³ Plan","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABSElEQVR42iXR6W7CQAwE4H3/J6xUtQUBSTiz5IQEpH6s/WMztsfjI+nr+6euj23bnk6n3W53PB5vH2t/f/9Y1/VwXdfb7Rbhcrns9/uqqgXbNqd1XXJum6aRm+cZQJXxHg4HMiJVVU3TRBeWejwe1+sVSKLn87nrumEY7vc7LKdD3/fjOAZgdHFEEJ7PJyEgzYXaFlMvRC6EuYA3upFWbxzF+2IpxIJhVEJyMBJsbG0RYhe0zWZD0SJWSMMw+pAgHNcyIbagl6tAQxdRDFAJ5qe4rpuy2JBzJiEdncnrqSaKKQYBeVmWmCtJr+v6KIbh5SqIO9k/MEVZLvx6vZZixh6snovpYBiuaW1F14R+vgjRz58tHGWhlTSLgzFT3eL356xAnAQeFxWOixhNPbk0zfOtXA/bVDbR/F5MDXZciISBNRB8v9/R/B/CzWj/TJl9EAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/faa3120c358f8722a4cf8d351c7ad243/380c0/technik3_plan.png","srcSet":"/static/faa3120c358f8722a4cf8d351c7ad243/ccf6a/technik3_plan.png 178w,\n/static/faa3120c358f8722a4cf8d351c7ad243/d4ef9/technik3_plan.png 355w,\n/static/faa3120c358f8722a4cf8d351c7ad243/380c0/technik3_plan.png 710w","sizes":"(min-width: 710px) 710px, 100vw"},"sources":[{"srcSet":"/static/faa3120c358f8722a4cf8d351c7ad243/744a3/technik3_plan.webp 178w,\n/static/faa3120c358f8722a4cf8d351c7ad243/7d728/technik3_plan.webp 355w,\n/static/faa3120c358f8722a4cf8d351c7ad243/09b79/technik3_plan.webp 710w","type":"image/webp","sizes":"(min-width: 710px) 710px, 100vw"}]},"width":710,"height":400}}},"date":"February 2019"}}},{"node":{"id":"b3b0a78c-e001-514a-a073-261c08a75a40","frontmatter":{"languages":["typescript"],"priority":31,"dependencies":["gatsby"],"slug":"homepage","link":"https://github.com/christopher-besch/homepage","description":"This Homepage.","title":"Homepage","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAAC/ElEQVR42h2TXWhbZRjHc+Mq22q2tixr89nk5OQk5+Sck69zkpxkaZdt6TbEtixFlFXtKhMZ4pS1Ll3XshUvnFMEZTimKDLEOb3Y1fCmiODGGNONMlDBXQji54XzzpufT3LxwPO+vO//z/P7v6/v8LPzdDpLnFo6xfLaOT745AqKqrEjsLNX/m3b2Tkc4ImZY8wePU9nbY3VxbO88Nwr+IdH8IdCbB0com/zFkYio/imDs1gWRaBkSCnV1a4fed7wrE4wWCIgYFB/P5tRGIxDs/NcXp1lYUzZ3nryKscm36eoUiEUGyUoUCARzZtIhyN4ys4ZSrVCiXXpT3TZnJqCsO0e3uGmcUtu+zdN4FpF6h4dbJZC9erUhsfx87l8aQvOSW8mke13hBBt0bR9XCqdcxciXhKp1Sp40jpVgFDhDTDRs1kiSoacTVNNKEymsz0zuWdCmkx0XQTVbfwOc0Gu1sTjDdbNFsHaOyZIGWYROKKjJ4gGI6JQIrJ9iyLCx1OdJZZWjnDU7NHUDRDjCzi6RyxpEbazOObfLpNZ7nD4msLdE6eZH7+qAiNsmXrZvr7+3m0r4/Htg9w9Ytr/PvXH/z59y/Af3x+9UsGdwwLtwShRJYh6bvGvlp9N60D+6nUasKqxbSEpKZ18oUCqpZGVVOCw6M9Nc2Lz8xx6OBBlk4c56WXj5MSDF6tLlOEhd8umvv247MKJSw7JwFYAt4WFgZWvihcXXKFIna+0AspI2XYFsl0hrQg6Z7xdgmuPU1cMWyMjVEqV/HptiPM7B74hLBQhIlhd03KGDkHq1hGl7XrjVEf39sLolCukXM8imVJPe9iSmVMCS8rDLvpxCSASMrEscNER8K88967fHX7Ore+u8tvv/7O5c+ucOH9i/z04w9sbGzwz8OHXPrwI4KRKIqioAmaYDBIUtO7gpKSkiJZavDk4znKMvLr597m6zvfcOPmLe7eu8/Hlz/ljTfPc/PGt6yvr/PzgwdcuHhJ7iXlU9joelbeZI68TPM/0daVA+bTPIwAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/b95e29677cb3c79ceb36176372272f18/87706/homepage.png","srcSet":"/static/b95e29677cb3c79ceb36176372272f18/f80f8/homepage.png 320w,\n/static/b95e29677cb3c79ceb36176372272f18/9a63f/homepage.png 640w,\n/static/b95e29677cb3c79ceb36176372272f18/87706/homepage.png 1280w","sizes":"(min-width: 1280px) 1280px, 100vw"},"sources":[{"srcSet":"/static/b95e29677cb3c79ceb36176372272f18/c0bcc/homepage.webp 320w,\n/static/b95e29677cb3c79ceb36176372272f18/17574/homepage.webp 640w,\n/static/b95e29677cb3c79ceb36176372272f18/71d4d/homepage.webp 1280w","type":"image/webp","sizes":"(min-width: 1280px) 1280px, 100vw"}]},"width":1280,"height":720}}},"date":"December 2021"}}},{"node":{"id":"a9f19df4-0623-5e91-a9e1-307d9c208b7f","frontmatter":{"languages":["cpp"],"priority":32,"dependencies":[],"slug":"bwinf_39_round2","link":"https://github.com/christopher-besch/bwinf_39_round2","description":"Coding Competition.","title":"BwInf 39 Round 2","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABK0lEQVR42lVS7ZKDIAzk/Z+wdlqvM53pFeupBcKHELxALOftj8y6bpIFFdsB3vt5nrXSAPCuADBMdAUi7tacqQjmWJFSrmIzZMRMItGDgqk6SzM/c9Ns9GLfbVY1b9MyYXAHcYuI8zRuGcVfEnqdUWpJ9RggWrvKn/I2YQuclneclEgptUhUn1r66I/N2fssB/wY9jVgk3yV2E0NKUgjOWHzgVNGlc37mupdxzEpEG0n+Z9q9MmzwqIL8akHOki7rXI1AIsa9wtzzllrocDywcjEojGGSAkVgquwFeCs875cGHxAX3JdV05YJllLCvXzL/Bd8Xg8hmG43+9SSkFqjJEqzWZC/cSJUDMpzFmk2nSaLr4q+r6/3W6XClbO5/PpdLr8R7N1XXe9Xn8B22Z9MJvbQvYAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/19bb00250071e5e6256839013240dd1f/721bf/bwinf_39_round2.png","srcSet":"/static/19bb00250071e5e6256839013240dd1f/822d2/bwinf_39_round2.png 211w,\n/static/19bb00250071e5e6256839013240dd1f/7f025/bwinf_39_round2.png 422w,\n/static/19bb00250071e5e6256839013240dd1f/721bf/bwinf_39_round2.png 843w","sizes":"(min-width: 843px) 843px, 100vw"},"sources":[{"srcSet":"/static/19bb00250071e5e6256839013240dd1f/36c97/bwinf_39_round2.webp 211w,\n/static/19bb00250071e5e6256839013240dd1f/ca09e/bwinf_39_round2.webp 422w,\n/static/19bb00250071e5e6256839013240dd1f/f5388/bwinf_39_round2.webp 843w","type":"image/webp","sizes":"(min-width: 843px) 843px, 100vw"}]},"width":843,"height":474}}},"date":"December 2020"}}},{"node":{"id":"a8c27062-4837-548b-a7bd-68445362f3c6","frontmatter":{"languages":["cpp"],"priority":32,"dependencies":[],"slug":"bwinf_40_round1","link":"https://github.com/yves147/bwinf40","description":"Coding Competition.","title":"BwInf 40 Round 1","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA/0lEQVR42m2RWQ6DQAxD5/63ZBESYmfYaaGvY5QilXwgJxPHTnDrus7zfJ5n27be+3Ec+76n4kNQpMKXhm3b7PsK4YZhmKbpOI6iKKBVVQVYloUiz+8QgGcyIjD3fS/Lkip8pAA4oshoMOB8iq8yZFrTNCVvmkZGwABSm0snsvJykVlM5DiOtbnU5JBXI7MRbVhjKHyeHsi6nwUjuIKRu67jIoC6rh2TWJ0kSRLtDJZtI/8rwyd1nAeEjTzPtRjpEUJkRiMiUwxSA4D0ezB80pFlGR240rUtmKtFOB7KrEkKIL3+Mx22M+S7soXZ/pGZpH8TRREj9Pb4V5HB4F35A+Nyfyvs76hkAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/a1ce44f6ee62cb4c329694ea10a70535/372ef/bwinf_40_round1.png","srcSet":"/static/a1ce44f6ee62cb4c329694ea10a70535/ec668/bwinf_40_round1.png 183w,\n/static/a1ce44f6ee62cb4c329694ea10a70535/d8edb/bwinf_40_round1.png 366w,\n/static/a1ce44f6ee62cb4c329694ea10a70535/372ef/bwinf_40_round1.png 731w","sizes":"(min-width: 731px) 731px, 100vw"},"sources":[{"srcSet":"/static/a1ce44f6ee62cb4c329694ea10a70535/5ba27/bwinf_40_round1.webp 183w,\n/static/a1ce44f6ee62cb4c329694ea10a70535/cd823/bwinf_40_round1.webp 366w,\n/static/a1ce44f6ee62cb4c329694ea10a70535/b87cd/bwinf_40_round1.webp 731w","type":"image/webp","sizes":"(min-width: 731px) 731px, 100vw"}]},"width":731,"height":411}}},"date":"August 2021"}}},{"node":{"id":"b20898a3-5f60-559e-bbb1-0325a0fa22e7","frontmatter":{"languages":["typescript"],"priority":32,"dependencies":["webpack"],"slug":"project_orange","link":"https://github.com/Science-Camp-Softwareentwicklung-02-22/TeamOrange","description":"Top-Down Shooter in a Week","title":"Project Orange","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAC4jAAAuIwF4pT92AAAB6klEQVR42oWSS09TURSF93neFtIHWqHUS8VEGDggYDRKWisOTAjhnVDEQDACCSFh4liLgo/SgCYSExL+A79CB8YJE3/PYp+eC1xAwmAPzt17fXetfQ4REXxJkLRcSdi2IsKheRQqr9BeriL7YAS5R+O4VZ5BsreE/OAU2u70sUZ7jZA448SAQgXcNOgtVjA38R2L01zDu3j9/AtWx/bQWDnE9ON1DPbPI5EOeZbnpbkC2PzITWqBtTkYnUUmcRc/V/bxZ/s3/u0f4W/jF+53PIG2NyBNCqQSrFOsEZeBUgp05g3CrgBBwMNBOzKZIsYeVjFRmsObF6voKQywo1YI62BJ784lEwIiDrSG8LJK2NpU2KhZvF1L49lACClSzWHnwP1QKt6XbmGYW42OUgkoyYZEDPi0RNjZIdRqhI13Eo2vBgujGpYsLDtxu9UmgFImAp3E9FEvAWdnCNt1hjHw43tC/QNhfUkhwbcYMEQJ78JotxoPOCl3tvxdyxiwUiZ82yVscuQfW1nsMXxy3A9YdpPLdiCfu3m6JxErd9YXHRojMVuVqH9SOPicxPKSRDrl9qOaQ523e9DVfc9DxLkb/X9kL9Qo5DXCUHEM7R9tVIr7mi9FsUi7F3E9MIoifPOiAx+dYZHIQdUVwGO8DxRGOMZEcAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/bd189e0525155225c9b2b33a04628548/a7193/project_orange.png","srcSet":"/static/bd189e0525155225c9b2b33a04628548/c9e85/project_orange.png 367w,\n/static/bd189e0525155225c9b2b33a04628548/8bc6d/project_orange.png 735w,\n/static/bd189e0525155225c9b2b33a04628548/a7193/project_orange.png 1469w","sizes":"(min-width: 1469px) 1469px, 100vw"},"sources":[{"srcSet":"/static/bd189e0525155225c9b2b33a04628548/0b8bd/project_orange.webp 367w,\n/static/bd189e0525155225c9b2b33a04628548/0fe8f/project_orange.webp 735w,\n/static/bd189e0525155225c9b2b33a04628548/1f94c/project_orange.webp 1469w","type":"image/webp","sizes":"(min-width: 1469px) 1469px, 100vw"}]},"width":1469,"height":826}}},"date":"February 2022"}}},{"node":{"id":"406da497-60f2-5a90-aed2-d65c3e5f0e54","frontmatter":{"languages":["typescript"],"priority":32,"dependencies":["gatsby"],"slug":"quote_rater","link":"https://github.com/christopher-besch/quote_rater","description":"Rate Quotes to Order them.","title":"Quote Rater","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB30lEQVR42m2QfWvTUBjF82FUNiVpm/eb96Rt0jXp2oQ0SZOmrd262Y5uOFT0jykKQ0T9Rxm+bus6t0zoN5plhdLv4XWKjHXw4+HAPee5hwdRdau9vuFFrbC5stbbWnZr9zu91Qf9TrcPp2V7BFBITiGAPA8iZZf6D590elsw093cdoOGZfvttY1uf7vT29QtB2clTskDOc9KuWsgvGrIuSJ84xSdEbMwaXvRshOUbL/kBJVq6Ph16GEETVANXtGvguhmZansOkFcqUaw87f9wfn5r9lsNh6PLy4m0+l0MpnsvnknaAVY4Vp/5PGznUdPdzSjlCuWDcvWCqXnL3eTn6P9wyFcdHj0A87jkzN4FIzkKF6F+f8gL169hih5EzZHSS5NC9CEEgBqjOJR4lITIMNIV2P/wqbtBXE7bK46fqwalpw3xWwBVvrT8NLx97ebr/32/YfkbHQ0PD1NRsPjZDBMDgYne5++f9z78vnrQb21fg8HtJCleG0exCy7tXrT9SPHC6u1uBrEXq3hhY0gakWNFU0vpkiwiBELKD4PgmboNMWmSYDhUIAUwWYogOJ0imRTBEOyAgXEO3ex24voPAhO80BQaE5iBYXhZU7SgKjSnMjLGivIUMMVtxbQG/kNQbvKNyMkz3AAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/14b1f3f938711f94880e5b0952b6d916/fec1d/quote_rater.png","srcSet":"/static/14b1f3f938711f94880e5b0952b6d916/4a3eb/quote_rater.png 181w,\n/static/14b1f3f938711f94880e5b0952b6d916/f9f2a/quote_rater.png 361w,\n/static/14b1f3f938711f94880e5b0952b6d916/fec1d/quote_rater.png 722w","sizes":"(min-width: 722px) 722px, 100vw"},"sources":[{"srcSet":"/static/14b1f3f938711f94880e5b0952b6d916/f6540/quote_rater.webp 181w,\n/static/14b1f3f938711f94880e5b0952b6d916/9a7e4/quote_rater.webp 361w,\n/static/14b1f3f938711f94880e5b0952b6d916/ca151/quote_rater.webp 722w","type":"image/webp","sizes":"(min-width: 722px) 722px, 100vw"}]},"width":722,"height":406}}},"date":"January 2022"}}},{"node":{"id":"5174106e-4bb8-5300-b455-253fb3796a88","frontmatter":{"languages":["python"],"priority":33,"dependencies":[],"slug":"bwinf_39_round1","link":"https://github.com/christopher-besch/bwinf_39_round1","description":"Coding Competition.","title":"BwInf 39 Round 1","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA/ElEQVR42m2S1w7DMAwD+/+fGWTD2c5ePZitmwbRE0vpTMX163SVZVkYhnVdx3EcRVFVVYggCHCSJEEYYxiglaYprW3boF6Cp2nq+x6rLMu2bXGMq33f4fM81zSHNk2DOI7jB6/rCs+EtXYcR3rDMCBwEJiCCeDnHZ7nmQY5HIzAQXRdxxCiKApamDjq/sHLspBMPmkIegqBQfAhPpmBB1hLsqEWAyAHeHDFuUpm4A6TRsPDPhmHQ6/JD9/sYS0mGEGydSV4dHV+6wNj8TdoSbVJ46pwtKpgxMOFcduagETrFBwl+7Wfb5tR/g8sHoYeCW9DybQQgnlC10fyBjUMf1U31Al4AAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/95e492f6b8b078f6280ffcb9c31a7eb2/ee310/bwinf_39_round1.png","srcSet":"/static/95e492f6b8b078f6280ffcb9c31a7eb2/27103/bwinf_39_round1.png 189w,\n/static/95e492f6b8b078f6280ffcb9c31a7eb2/48b82/bwinf_39_round1.png 377w,\n/static/95e492f6b8b078f6280ffcb9c31a7eb2/ee310/bwinf_39_round1.png 754w","sizes":"(min-width: 754px) 754px, 100vw"},"sources":[{"srcSet":"/static/95e492f6b8b078f6280ffcb9c31a7eb2/d03cf/bwinf_39_round1.webp 189w,\n/static/95e492f6b8b078f6280ffcb9c31a7eb2/c7b47/bwinf_39_round1.webp 377w,\n/static/95e492f6b8b078f6280ffcb9c31a7eb2/ac176/bwinf_39_round1.webp 754w","type":"image/webp","sizes":"(min-width: 754px) 754px, 100vw"}]},"width":754,"height":425}}},"date":"August 2020"}}},{"node":{"id":"c573109b-9a4d-501e-b0cd-91f7808e1288","frontmatter":{"languages":[],"priority":34,"dependencies":["blender"],"slug":"blender_models","link":"https://github.com/christopher-besch/blender_models","description":"Amateur 3D Models created with Blender.","title":"Blender Models","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABvklEQVR42m2QW4/aMBCF82/60oe+VKpUlS1ll9KmkBuEXEhiezyesEBCEki4/Pk6tNA+rPRpbNnnzPjYOLRd253a01nT3Wq/uVy666W7nNtLf6g5t9drfTrjvma7tr3pu7NRNYfmcKwPR12burkth5qKihcdr7tM0zTpnp786N2Av/8afzHL11KPbJrW2O6KXVlWalPGagvrel1UsBZmmI7mYGW5x7e/wmoQ0kdz/mHIP5np558UQ1HVu6I0JCpFRDHb2VBYSB7kHlMvAQ3CfBjDLJATm/9wkmmgvqfpLFpZIcuEojVSbgiQUqjNQlRzWI9X23FWmbD/JooXUbg8WSxTxw48Z/w89oe2P3JiK0SVg1QaAwD18E2cH91NbnHwmHSZsFOYRDjx0QqFE2IQOtPpfDKLnheRF0qptEVjgEQg9ZrkhUuJv4qDOMnSjHEpEDPodUQyTbjtZnZAU8aCDDlKpRCxN+seCEokgoEOgahII5FkX/sJgJgzgphLMwndpUwAif5O/qPQSXrDHfwf3U4Sm65olPhPFo+4/i0pSZvVG+qH54F+2jJlbiIjeBwaOtXb6jvqjs4JOmr+7+o3UgD/d1vX2VsAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/fec5ea1ede618e8a5b9b43714d665ecb/82514/blender_models.png","srcSet":"/static/fec5ea1ede618e8a5b9b43714d665ecb/aa5e8/blender_models.png 353w,\n/static/fec5ea1ede618e8a5b9b43714d665ecb/0abdc/blender_models.png 706w,\n/static/fec5ea1ede618e8a5b9b43714d665ecb/82514/blender_models.png 1411w","sizes":"(min-width: 1411px) 1411px, 100vw"},"sources":[{"srcSet":"/static/fec5ea1ede618e8a5b9b43714d665ecb/d1a36/blender_models.webp 353w,\n/static/fec5ea1ede618e8a5b9b43714d665ecb/76822/blender_models.webp 706w,\n/static/fec5ea1ede618e8a5b9b43714d665ecb/8cbe2/blender_models.webp 1411w","type":"image/webp","sizes":"(min-width: 1411px) 1411px, 100vw"}]},"width":1411,"height":794}}},"date":"May 2020"}}},{"node":{"id":"a0437b0a-4bd1-5136-95bc-f8347a2c6433","frontmatter":{"languages":["java"],"priority":35,"dependencies":[],"slug":"java_encryption","link":"https://github.com/christopher-besch/java_encryption","description":"A Funky Encryption Algorithm no one should ever use.","title":"Java Encryption","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABuUlEQVR42lVSCW6DMBDk/39r7kLShIbDHL7tYJvT0IUqqjrCaD2rYbwegrZtuRBcSiEl45xxoZRaGaWk1vKlmZCUca0VY4xSKqDFOcEYhEFrXYsQPLqqZJ6XSSIQavJ8QmgsirFAA2wRkgiZ18uPg59n7+cJ1jwHjBCx2/VhKM9nejx2YciezyZNxufT3G5D/K2+vtjjQaMovZwdwYuUngtP2dR1wSiE+9j1l4vb79XpqC+XKo5tUbSMaUKclA2jnrFBiJfS4Lb8wvsFnCchqsNxuN/Bs4mi/nRihwP4ZJ+f9Hp1j7t9PJrbra9rV9cjrmsYAZNVD+JFKbHft2HUxTErCo+xwUQQYssSZ/lIyEhpj3EvJS2KrqomQiZrfw8QLNa6LOvzfClLnSZwT64sDCW9sVLp0VhvzNQ0s2sHu9ZL1y5vBM45CEmCP2SzhUQoBWJ7r1sIjAmhtKac15Ra5/7EsIZhgGy1WpOEACVcIXxRrIGvmXPedR2FQazdJp3/iYGNouh6vX5vgCJJkizL0jQNwzCO4zzPoQYSirIsm6b5J66qCnrwA0Eb/O0G8DfGtG8AYza498l/ABSvZSyj/dM1AAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/3d1330b24531a344824d900190760ca4/b027b/java_encryption.png","srcSet":"/static/3d1330b24531a344824d900190760ca4/1f596/java_encryption.png 152w,\n/static/3d1330b24531a344824d900190760ca4/f6b65/java_encryption.png 305w,\n/static/3d1330b24531a344824d900190760ca4/b027b/java_encryption.png 609w","sizes":"(min-width: 609px) 609px, 100vw"},"sources":[{"srcSet":"/static/3d1330b24531a344824d900190760ca4/c4b59/java_encryption.webp 152w,\n/static/3d1330b24531a344824d900190760ca4/b29a5/java_encryption.webp 305w,\n/static/3d1330b24531a344824d900190760ca4/26613/java_encryption.webp 609w","type":"image/webp","sizes":"(min-width: 609px) 609px, 100vw"}]},"width":609,"height":342}}},"date":"February 2021"}}},{"node":{"id":"075a429f-cef7-5042-89f2-88593af6cc5f","frontmatter":{"languages":["java"],"priority":35,"dependencies":["sqllite","spark","maven"],"slug":"social_blog","link":"https://github.com/pascal-kuschkowitz/Inf-Proj-ProductDev","description":"A little School Project using SQLite and Java.","title":"Social Blog","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA+0lEQVR42pWS626DMAyFef+nW7dSaZU29q8jCSThEgIFzux0kSqtkM6SJSu2D/6MM2MstDHo3QA/jsEH72+xH8N77xzcMGC6XpOe4dccNTVNA60N2rYLcdd1+K9l67qGoBQCxzzH2zHHy+EV+emEj88CMf+0YKqABaM/k8vuk0pVkFIRak/YbcCODcuyUE7CWPtnHZuC3CCERK01iSvUdY1b7Yp5nnG5fEPSu6a8JdGk4BYWT8e+t5LHE9LXGdkSFp9TLIyiZSkCMuNyzUintTsh71BVVUBlrPvCaZro7x/wfj6jKL6CoKd73RRMGU/Ioo/QdwX3ziS1b7YfJ4ZfcmYkdp8AAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/e562f950599e1539c8904b96c2ab2241/87706/social_blog.png","srcSet":"/static/e562f950599e1539c8904b96c2ab2241/f80f8/social_blog.png 320w,\n/static/e562f950599e1539c8904b96c2ab2241/9a63f/social_blog.png 640w,\n/static/e562f950599e1539c8904b96c2ab2241/87706/social_blog.png 1280w","sizes":"(min-width: 1280px) 1280px, 100vw"},"sources":[{"srcSet":"/static/e562f950599e1539c8904b96c2ab2241/c0bcc/social_blog.webp 320w,\n/static/e562f950599e1539c8904b96c2ab2241/17574/social_blog.webp 640w,\n/static/e562f950599e1539c8904b96c2ab2241/71d4d/social_blog.webp 1280w","type":"image/webp","sizes":"(min-width: 1280px) 1280px, 100vw"}]},"width":1280,"height":720}}},"date":"October 2020"}}},{"node":{"id":"be675c7f-31af-5837-b780-07eff6d95a0d","frontmatter":{"languages":["python"],"priority":41,"dependencies":[],"slug":"bwinf_37_round1","link":"https://github.com/christopher-besch/bwinf_37_round1","description":"Coding Competition.","title":"BwInf 37 Round 1","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABRUlEQVR42k1SjXrCMAjsM5i0QIA2qTr95vu/344k63bVGgwHx8+iTG23dlhrB9MmIkyE77quuWO7QPEA0yJa4ORmrmpF3Eprre4wy0VGuNKhRfEp04KhS05Jhb8/n7PW6vp6v9+vFxPfbreUcsqZiItMMLOwDBOBFsRGCuENUhHZ3SU8NnNXZhS173utqMysaD2qKf5mRAc/yEhuWh5nq1ashOBRvNCGA1iIqCE7QiNtgqQgpSDjiCa50JoTvNGKW0fITrm3hriDopeQyKMdy/gBz5nurX4978/7ibYh8bzqzF5qGYd4i0DgJKfOr8dx1OYqiII60SBoAyeaXApo60BexywmOeaZ86Pu1c15W6OkfI1qTAhq6V8JwCTDG1JON6Utir2o4/YX2I1r/n+Zkbbt6KlifzB9iLw8YkmwGDIXA/zr6ge8Pz5cfrC+QAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/014908da94e0813ede327942eebbcc65/9bad6/bwinf_37_round1.png","srcSet":"/static/014908da94e0813ede327942eebbcc65/ced49/bwinf_37_round1.png 171w,\n/static/014908da94e0813ede327942eebbcc65/72dd6/bwinf_37_round1.png 343w,\n/static/014908da94e0813ede327942eebbcc65/9bad6/bwinf_37_round1.png 685w","sizes":"(min-width: 685px) 685px, 100vw"},"sources":[{"srcSet":"/static/014908da94e0813ede327942eebbcc65/8a4d2/bwinf_37_round1.webp 171w,\n/static/014908da94e0813ede327942eebbcc65/e31ae/bwinf_37_round1.webp 343w,\n/static/014908da94e0813ede327942eebbcc65/24a56/bwinf_37_round1.webp 685w","type":"image/webp","sizes":"(min-width: 685px) 685px, 100vw"}]},"width":685,"height":385}}},"date":"August 2018"}}},{"node":{"id":"a546ebe5-dfbb-5cba-a3cd-d1a5d959e7c5","frontmatter":{"languages":["java"],"priority":41,"dependencies":[],"slug":"java_sorting_algorithms","link":"https://github.com/christopher-besch/sorting_algorithms","description":"Example Implementation of Quick Sort.","title":"Java Quick Sort","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABKElEQVR42oVRi27DIAzkHwrEBD+ANOmy/f//7SBJu0qTerIcY8X2+eyWgVJKa1ar1KKmOWcKIfhPcMIsOXPmeZ5jiKEbyuBCBKY4Af0T/wK5XsyJqikR4U0poQXiNAJkwoVr2BsdRzGYgTA6iKo9gQzY3wDvh/uPNlguprUUFeFMmEcU4efUA2FQQJJQfhudrqC3c6B0N11auwNNliamcy1cK1Qg1VkFlpi7IQMte5wJmzv0QNVj21q1WgRe8vmfDy90JeMVx259MlQ0zlBoaBoh3JAzDKXjh1OhDPJAKeWMC2OymZiBtqrysaT3/tr2zRzGywHmUiA4QyfwOI26JzpjsBvPeGQcuq7ruu/7Y1t/vtf9a9nWCiulE8HmiV5dUIxDIBi3mH4ByQJAIObWcLEAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/a0a37e44a5b2abd8a730c618e8063a33/2a75c/java_quick_sort.png","srcSet":"/static/a0a37e44a5b2abd8a730c618e8063a33/0dbce/java_quick_sort.png 257w,\n/static/a0a37e44a5b2abd8a730c618e8063a33/12c30/java_quick_sort.png 513w,\n/static/a0a37e44a5b2abd8a730c618e8063a33/2a75c/java_quick_sort.png 1026w","sizes":"(min-width: 1026px) 1026px, 100vw"},"sources":[{"srcSet":"/static/a0a37e44a5b2abd8a730c618e8063a33/e43da/java_quick_sort.webp 257w,\n/static/a0a37e44a5b2abd8a730c618e8063a33/fffe3/java_quick_sort.webp 513w,\n/static/a0a37e44a5b2abd8a730c618e8063a33/51e4d/java_quick_sort.webp 1026w","type":"image/webp","sizes":"(min-width: 1026px) 1026px, 100vw"}]},"width":1026,"height":577}}},"date":"September 2020"}}},{"node":{"id":"a43853c3-0c86-5519-a03f-2a6011a3509c","frontmatter":{"languages":["python"],"priority":42,"dependencies":[],"slug":"manim","link":"https://www.manim.community","description":"A community maintained Python library for creating mathematical animations.","title":"Manim","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAB2klEQVR42q2TX09TQRDF7+fTxKifwAde8MkHjZpQElNRqNCagiZiajQkjQah1UraWiolSLFCWyy2irVAubf/7m1vpdX4+HN3oUoIJmp8ONmd2d0zM2dmtWZ1l/8Jza4bfDGrymjVdLWXvqMXrUr5zwi3Nwvks2uKzDR2eJ9ZpVz8oGxJ0kMvqLwjIX12Xad9gJ+EksDjGhYkH9lIp7jjcVPM5/jWthRJt9Vgz6rxbvUN7UaFr3aDbrOuqtC3SuyW9mEa+xVoemmTwBM/i7EIiViYyPMAeREktZQQJCtEQ0G1n/ZPsTgf5eVciHg4RCGbweGY5lzfJH39PnLZAh3LQPtc2CC5EFcPkom4IpYkg1evcFtk7hwcYMI9infsFmPDNxi57mTIMcD45DgXXVOcOOPm5Gk36ZWMqKaKlk0lef0qJiKuUVhPEwkFCD+bxf/wAXOBpwIzKmu5SnteZOh7dJ8Ld53cjPs4P3SPs6dcvPWO0jF1tJ7oUp+e6LIhHaGT9Ekde6vdMPjesljILXNpxsvl2Qn88SDrnhGK1/ox00tovxsLKfLhLiscnNX0LYKpKI+XX6CXP9Gt7dCsiM4b278I/waygr26yFrArhmYh+fwX3+EVS0fO+w/AIDi+spP065nAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/131d488121e2764ced8229bd101b9001/85cff/manim.png","srcSet":"/static/131d488121e2764ced8229bd101b9001/a25bb/manim.png 139w,\n/static/131d488121e2764ced8229bd101b9001/3035b/manim.png 279w,\n/static/131d488121e2764ced8229bd101b9001/85cff/manim.png 557w","sizes":"(min-width: 557px) 557px, 100vw"},"sources":[{"srcSet":"/static/131d488121e2764ced8229bd101b9001/082a1/manim.webp 139w,\n/static/131d488121e2764ced8229bd101b9001/0eb14/manim.webp 279w,\n/static/131d488121e2764ced8229bd101b9001/d823f/manim.webp 557w","type":"image/webp","sizes":"(min-width: 557px) 557px, 100vw"}]},"width":557,"height":313}}},"date":"September 2021"}}}]},"photo":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAFABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAID/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAH/2gAMAwEAAhADEAAAAdaIgV//xAAZEAACAwEAAAAAAAAAAAAAAAAAAQIDBBP/2gAIAQEAAQUCWixt3TO8j//EABURAQEAAAAAAAAAAAAAAAAAAAAR/9oACAEDAQE/AUf/xAAVEQEBAAAAAAAAAAAAAAAAAAAAEf/aAAgBAgEBPwFX/8QAFxAAAwEAAAAAAAAAAAAAAAAAABAxQf/aAAgBAQAGPwKrD//EABoQAAMAAwEAAAAAAAAAAAAAAAABETGBkdH/2gAIAQEAAT8hxAtDytXBT8H/2gAMAwEAAgADAAAAEHgv/8QAFhEBAQEAAAAAAAAAAAAAAAAAABEB/9oACAEDAQE/EJiH/8QAFxEAAwEAAAAAAAAAAAAAAAAAAAERUf/aAAgBAgEBPxCsrT//xAAYEAEBAQEBAAAAAAAAAAAAAAABIQARMf/aAAgBAQABPxBUcRUDdJFLPWT0mP/Z"},"images":{"fallback":{"src":"/static/4e593f58b0ca179f880b822019ec32f2/d4c94/alpha_mike.jpg","srcSet":"/static/4e593f58b0ca179f880b822019ec32f2/2bfa1/alpha_mike.jpg 480w,\n/static/4e593f58b0ca179f880b822019ec32f2/b0d0a/alpha_mike.jpg 960w,\n/static/4e593f58b0ca179f880b822019ec32f2/d4c94/alpha_mike.jpg 1920w","sizes":"(min-width: 1920px) 1920px, 100vw"},"sources":[{"srcSet":"/static/4e593f58b0ca179f880b822019ec32f2/b08bd/alpha_mike.webp 480w,\n/static/4e593f58b0ca179f880b822019ec32f2/35262/alpha_mike.webp 960w,\n/static/4e593f58b0ca179f880b822019ec32f2/d4591/alpha_mike.webp 1920w","type":"image/webp","sizes":"(min-width: 1920px) 1920px, 100vw"}]},"width":1920,"height":522}}}},"pageContext":{}},"staticQueryHashes":["1995789189","2480137602"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/projects/c/page-data.json b/page-data/projects/c/page-data.json new file mode 100644 index 00000000..6e806ba3 --- /dev/null +++ b/page-data/projects/c/page-data.json @@ -0,0 +1 @@ +{"componentChunkName":"component---src-templates-projects-language-tsx","path":"/projects/c/","result":{"data":{"allMdx":{"edges":[{"node":{"id":"3664d636-ee33-5677-8eff-aa5e8e509bdd","frontmatter":{"languages":["c"],"priority":1,"dependencies":["kicad","avr","i2c","uart","spi","make"],"slug":"mold_detect","link":"https://github.com/christopher-besch/mold_detect","description":"Warn residents of mold-friendly atmosphere and log opened windows.","title":"mold_detect","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAACV0lEQVR42iXSS2sTURQH8PkcrgSleVmEQhI7U0ubNJ0kzSSTifN+3jt35t7MM4/mYaMVtYgVKVjoUvwEfgU3rqULBXGlH8Urwn9zDvzgcM5hFKygHFzs3Dt7XJ4+Deq1nXKxIqvNIDGj3BVGvYHS02Ffc080r0ejuj3Z7ipOZ2R2mM3BTiQfveUfwFYlzAz2UbWwVTDMdpha6cxDERCG/AHPGlA0QJ/G8kUaA/ZFg2fec9svanevHt5ZcVvJMtytV4uFkm7wYWbZge5F+rHQarb3IBFkV1ScE0BUFFuTZRikNrPpsOFRpStVTfsQJwbH1kqFkusKKFFdrACieESDkQzJUHd0ksFsQdpC4/r63a+f35irevmsdt9DgkMATk12t1oqloHXz05p6ZDcwamBM8sL7e1KpcU3UAIbPPfp482f3z+YE7MrGawTyGQCSKqzu7VyqQyAOFtH8QxlCxxN/Whixbni+g5JUTzHR9396w+Xt7dfGV7aHxgdSCzLVdFY49g6xRCOzi8W83X08vV6vsqjHJJMmc5RPtfCHNpIwTHtIKY9OpDM48ViilBoOhLH/cfD6Xo8WyfPX61hAB3f9GMrniBAnhhwYIcyQLJEt02x5jSXi9z3A90c7FFc/IcnKzpweLqZJzNv9Qynp9jDiglF1e0M1GOFnOPNJcWHA707mSa+jwBS9rjaPwxEisOYiGLf9qz5MvXHuo2GJr0w6PVGrc2bm89fvjOC0uzrbRWIAFtBpNEnodu2rG40Az4ZNxqHjufjPHQDyQkkOrPmCbLdNkLQs+2/5R7sNzTUtS4AAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/e3a1143657c343da032639c75f73878a/05bc9/mold_detect.png","srcSet":"/static/e3a1143657c343da032639c75f73878a/5c8e9/mold_detect.png 230w,\n/static/e3a1143657c343da032639c75f73878a/f8232/mold_detect.png 461w,\n/static/e3a1143657c343da032639c75f73878a/05bc9/mold_detect.png 921w","sizes":"(min-width: 921px) 921px, 100vw"},"sources":[{"srcSet":"/static/e3a1143657c343da032639c75f73878a/20203/mold_detect.webp 230w,\n/static/e3a1143657c343da032639c75f73878a/0f691/mold_detect.webp 461w,\n/static/e3a1143657c343da032639c75f73878a/44573/mold_detect.webp 921w","type":"image/webp","sizes":"(min-width: 921px) 921px, 100vw"}]},"width":921,"height":518}}},"date":"November 2023"}}}]}},"pageContext":{"language":"c"}},"staticQueryHashes":["1995789189","2480137602"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/projects/page-data.json b/page-data/projects/page-data.json index 0ed72f9e..66cbb3c2 100644 --- a/page-data/projects/page-data.json +++ b/page-data/projects/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-projects-tsx","path":"/projects/","result":{"data":{"allMdx":{"edges":[{"node":{"id":"2f5cbcb4-8ca6-5d9c-9109-d52f8a436af1","frontmatter":{"languages":["python","typescript"],"priority":0,"dependencies":["bootstrap","flask","webpack"],"slug":"manim_editor","link":"https://github.com/ManimCommunity/manim_editor","description":"Web Presenter for Mathematical Animations using Manim.","title":"Manim Editor","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAACiElEQVR42pWT20tUURTGj3O8zXgZHS9NjZQ6Q0I++ydUL4G+9ZqBU0ia0cUgydGUHgSFelGUniRKKh8adDLNEJ2ZwC5DZYYimKY5ozkXnZsz/trnBFHQQy1YrL0X3/r2t/beS9rZ2SUWixEOR9QY39vjXywRF9joLvFYRNQk1FwyuY/U2dnJwMAAjY2NVNfU0NDYwK32dtpsNlpbb6qxzdbK9eYWrlxtxmq10tR0kQf2Ke7ef8G9RxO8nHbj9wdIJBJIdrudUYcDi8WCJElcu3yJ969fMTXuYGbyOROjdtzOSR47JujuuK1isnWZ3HnymQ57gr6xDUaejTMyNsH2th/JJk7v7umhqqqKjIxMTp44zoX685ytPYO1rk7EWurOWbHW13G6+hT5+QZMJhMfP3jwf/cS9G8RCoUIBAMERZSGh4dRVJrNZvV0jUaDlJJCrqEQvSiWZVnsNaSkppEi8gpGp9OxuLio3ncotPPH3Ur9/f0MDg7+IpTlVDTCS0rLOFZZiV6vJztXT7pWR6qsUTFarZY3b98RjcbVNtfW1lVi5VGlrq4u+vr6KDdbSBPgwwVZ5OTpMRwqoaTcgvFIGQdLzeQIxdn6PLIyZKFQy6f5eVWRQrK6+pWVldWfLT8cGuKpaPloRQW6dBmLqZBioxG9wUB+QYGqzlBQSNEBI0Uin5eTRXFxMQsLC+yJliORiEq4vPyFQCCI1NJyg97eXubm5piZcTLtdOF0OnG5XLjdwkVU1krup7uYnZ3F6/Ph9frY3Nxi/duGuk4mk0gej4elpSX+15RWFYKE8HA4rCrd3xcfW5GtfMh4PK6CfvdoNEowGMQf3GFjO4bPLyYqIiZETIlS/Df7AQM0eSSgdwjeAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/512c236dd73df7d96875dc50f7db59b9/87706/manim_editor.png","srcSet":"/static/512c236dd73df7d96875dc50f7db59b9/f80f8/manim_editor.png 320w,\n/static/512c236dd73df7d96875dc50f7db59b9/9a63f/manim_editor.png 640w,\n/static/512c236dd73df7d96875dc50f7db59b9/87706/manim_editor.png 1280w","sizes":"(min-width: 1280px) 1280px, 100vw"},"sources":[{"srcSet":"/static/512c236dd73df7d96875dc50f7db59b9/c0bcc/manim_editor.webp 320w,\n/static/512c236dd73df7d96875dc50f7db59b9/17574/manim_editor.webp 640w,\n/static/512c236dd73df7d96875dc50f7db59b9/71d4d/manim_editor.webp 1280w","type":"image/webp","sizes":"(min-width: 1280px) 1280px, 100vw"}]},"width":1280,"height":720}}},"date":"September 2021"}}},{"node":{"id":"b82d984e-ae2a-59a5-b339-8b2fbb2a5816","frontmatter":{"languages":["cpp"],"priority":0,"dependencies":[],"slug":"visualizations","link":"https://github.com/christopher-besch/visualizations","description":"Visualize Graphs with Godot and C++.","title":"Visualizations","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABfElEQVR42o2T2Y6jMBRE+89GirJhYwwYLxACZFFWRZP/fzkDfhl1JzPdDyVZSD5U3br+SNOUF0mJ1hprLW3bRh0OB+q6xnuPUoq390Z9fP2gUkWSCoqqZLtpCSHQ9z2Px4Pr9UrTNGy3W+T40x8BJ610wrxKED7DV45qdDoMQ3T5fD4jcHIrhPg/UCqJSnKaX5qNSDCuoWu3lKaM8Xe7HbfbjfP5zH6/xxjzAv0MHGPYyqJtji1HpZ65FwiXoYzGlIbL5cLxeIx65/IzMJUUqsCaQDjWZEEjy3GmeYqrPaYwdF3H6XTifr/H4r7O8iVyttYMs4LjUmDynGpfs8wTFlaQZDJGn2Y5FTWdv3GoyMSK3QjbZS2DdPwuz1QLi1t7Vk6OBVUURRGLebc+Ly1LlaKTgqoIdEWP8RW9cXTKE+YBbx0++LiP37b8dxclM7Nms5iROEUYC+lXmrXMSG0WodO8f7yHESoVenSw1GtM43BZQC81qywhFfKfL+UPn0urwPWCA3kAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/3f978993862ff0e513124ce977ea3ad4/dfdb8/visualizations.png","srcSet":"/static/3f978993862ff0e513124ce977ea3ad4/1d92b/visualizations.png 438w,\n/static/3f978993862ff0e513124ce977ea3ad4/27093/visualizations.png 875w,\n/static/3f978993862ff0e513124ce977ea3ad4/dfdb8/visualizations.png 1750w","sizes":"(min-width: 1750px) 1750px, 100vw"},"sources":[{"srcSet":"/static/3f978993862ff0e513124ce977ea3ad4/0e056/visualizations.webp 438w,\n/static/3f978993862ff0e513124ce977ea3ad4/4a6ac/visualizations.webp 875w,\n/static/3f978993862ff0e513124ce977ea3ad4/ae820/visualizations.webp 1750w","type":"image/webp","sizes":"(min-width: 1750px) 1750px, 100vw"}]},"width":1750,"height":984}}},"date":"January 2023"}}},{"node":{"id":"23f69708-bb7b-5319-ba21-f76a863596b9","frontmatter":{"languages":["typescript"],"priority":1,"dependencies":[],"slug":"compare_view","link":"https://octoframes.github.io/compare_view","description":"Blend Between Multiple Images.","title":"compare_view","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAACRElEQVR42k1T60vaYRj9/aOD9nGMfVEYaw0F8UOkhAU2NnItltv8UbgaeamFJW6IYKUyI2/l/Zq3yrzlmecBYx8e3vd93nOe55zn/f2U29tbDIdDPDw8oNlswuv1olAo4O7uDp1OB6VSCTc3NxiNRmg0Gri+vkatVpM7Yu7v74XLGgyFSQKr1aoA9Xo9AoEAer2ekEiYkZgjjg3ZfJafRb/fh8Ji2WwWqVQK8XgcBoMBPp9PwCxIYrfbFQJzVMozVXOloFkxrgotCXEKIMhsNsPlcj0BZioGg8HT/v87Nnh8fMR4PJa9KGTRZCqNQr4A69oaXG43Wq0Wrq6uJDKZjMyOVmc5KuOI6Cqfz6NYLIogZd/lgf37NqzrW1Dtm7AYXuPLhk1Uzs+/gU6ng8ViwdzcHLRaLZaWlrCwsICzszOoqgqTyQSj0QiNRoPd3V0oq7rnsK0YsKM68Gf/G/z2RXxefgfnTw8q5fK0a1PUnp6eipLyNFepVJ6UURVzVFiv16EEv77AycZLHG9/gG/LAHX5FXasb2FaWZ9ay0ixdrstc6ZFFiOZY+KL88zgSNhEca4+w8WvRRw4HYiHDpC/+I30+RE+2TbhO/ajNCVzdvwSEomEKA2Hw4hEInJOJpOyZ44NldAPHc597+Fx2NCq5TDsFDDpd+De24Pb7RECI5fLSYF0Oi1WLy8v5RyNRuUzi8Vi8upKJvQR1b825INmTIZ1jHotYDLAkceNw8NDBINB6c7V7/eLff5dbEDrtMpXpzqO5x8xAAI/640YPgAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/c5c6e9ede3805430bb6858f8f3f1fa70/1ac80/compare_view.png","srcSet":"/static/c5c6e9ede3805430bb6858f8f3f1fa70/f337a/compare_view.png 439w,\n/static/c5c6e9ede3805430bb6858f8f3f1fa70/cb3b4/compare_view.png 878w,\n/static/c5c6e9ede3805430bb6858f8f3f1fa70/1ac80/compare_view.png 1756w","sizes":"(min-width: 1756px) 1756px, 100vw"},"sources":[{"srcSet":"/static/c5c6e9ede3805430bb6858f8f3f1fa70/0e84f/compare_view.webp 439w,\n/static/c5c6e9ede3805430bb6858f8f3f1fa70/09d01/compare_view.webp 878w,\n/static/c5c6e9ede3805430bb6858f8f3f1fa70/9f143/compare_view.webp 1756w","type":"image/webp","sizes":"(min-width: 1756px) 1756px, 100vw"}]},"width":1756,"height":988}}},"date":"June 2022"}}},{"node":{"id":"7d7ac55e-5c7d-5250-bf97-947d034898de","frontmatter":{"languages":[],"priority":1,"dependencies":[],"slug":"docker_cron","link":"https://github.com/christopher-besch/docker_cron","description":"Scheduling container tasks with docker-compose.","title":"docker_cron","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABnUlEQVR42m1R23KjMAzlH5qEm7FBso0vYMBAkja97Uyn//9JK0i6sw+dOZyRD5J9JCX12MvzqC4Dty5lmAtNyDhBbTHf40qmTFJMCWml7sqphIS+tEJcQvsaK23BX2R3dsunnT/U8GLmdxvfsDsLE9vphn61y0d3/ZL9OWVUXEDKEdcBYg9z0LcJ5qEQ6ljCaUdaIvGxaDb+EelISB4ZFRa1rtted6NQDnSPZkAToA1VYzh63c0cnbRTrTq0o3ITB/co3t4voahNf/0Kz9/g1+H2bZdP2a1lY/O6FToUjSGrW9sMs0oRJ/9s5FwxsKIdpV/QRtURTwycclGg57IHM7LGlE0rpK/AUfx/sd5Vw+p280yGwZAi7UB52s8mrHREM5p+Vj6S/x/b5eaHrvfLO3l200u4/Gls1OEKZqBfZIp6prkQC+loCqQkx7whUM/0eCZsO71Cd6ntbOKbDFc1PDN0h7zex/vgQ9HclSQHVaDKhKS957U8FuKQiUMunlK+BZm4L+lXJLRbuQbuPWstxMDQbJPfR3rHad/zr/gLfMhafpHFCjcAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/5a5012abbd37087a66d8c181e0e2ae76/0dee1/docker_cron.png","srcSet":"/static/5a5012abbd37087a66d8c181e0e2ae76/f0aa7/docker_cron.png 188w,\n/static/5a5012abbd37087a66d8c181e0e2ae76/f9574/docker_cron.png 375w,\n/static/5a5012abbd37087a66d8c181e0e2ae76/0dee1/docker_cron.png 750w","sizes":"(min-width: 750px) 750px, 100vw"},"sources":[{"srcSet":"/static/5a5012abbd37087a66d8c181e0e2ae76/d03f4/docker_cron.webp 188w,\n/static/5a5012abbd37087a66d8c181e0e2ae76/cf250/docker_cron.webp 375w,\n/static/5a5012abbd37087a66d8c181e0e2ae76/a66aa/docker_cron.webp 750w","type":"image/webp","sizes":"(min-width: 750px) 750px, 100vw"}]},"width":750,"height":422}}},"date":"August 2022"}}},{"node":{"id":"b79cb258-51bd-5f73-8335-f4e933884839","frontmatter":{"languages":["rust"],"priority":2,"dependencies":["docker","tokio"],"slug":"docker_logdna","link":"https://github.com/ibm/docker_logdna","description":"IBM: Logdna logging driver Docker plugin.","title":"docker_logdna","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABiklEQVR42pVT20rDQBTM/3+BoKIifoHgrV5eREVBH2qFVtuaa7u5J9vm0s3uuJu2tJEW9MBkIbuZc2Yyq0GWEEI90SxRv5/v/b20qqogOMekmMGnBYKJQomCcVRcgFUcY+JJuCCEwHVdTKfT7YRMEqp61iPsPZo4frFw8jqCGWSgNENMcxQzjqwUyIoKnCvwGhsJf28sJQa+j/7XJwbDPkbEQZJSSbw6s/zuty3atk5KFnE9+G4IpzdEbPuIxxQsTMGkNcqOrR7yuqNYrbUkgVIeoFYE++gO9uEthvst6DvnCB+6mDCpIggRRSHSNG0SJqGHJHBrxD6BNx7BDyKU1eJvLzwTfN5QagTNGHTDhGNboNIOxuZ+aNG0xE3HQqtt4PrdwGXbREcnSOIEOdseD0X4rRswTLNeLcuubdK8NMdZ28HFB8FVz8dpe4wumaghZGRWWVyHmpbJ6d+MBLv3Axw86TIZjkzBDNo80E0IwRvx2ARVuYyTUhjK7Mb5rB5CUxTKlnX872406wd/eVMybHQ7BwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/9d1703fede1297bd9e064aad91c4f5ad/afa5c/docker_logdna.png","srcSet":"/static/9d1703fede1297bd9e064aad91c4f5ad/2fe1e/docker_logdna.png 480w,\n/static/9d1703fede1297bd9e064aad91c4f5ad/9bec7/docker_logdna.png 960w,\n/static/9d1703fede1297bd9e064aad91c4f5ad/afa5c/docker_logdna.png 1920w","sizes":"(min-width: 1920px) 1920px, 100vw"},"sources":[{"srcSet":"/static/9d1703fede1297bd9e064aad91c4f5ad/3a3a2/docker_logdna.webp 480w,\n/static/9d1703fede1297bd9e064aad91c4f5ad/bde8a/docker_logdna.webp 960w,\n/static/9d1703fede1297bd9e064aad91c4f5ad/c512e/docker_logdna.webp 1920w","type":"image/webp","sizes":"(min-width: 1920px) 1920px, 100vw"}]},"width":1920,"height":1080}}},"date":"June 2023"}}},{"node":{"id":"66175c61-d427-5209-8362-f6e58349d320","frontmatter":{"languages":["cpp","python"],"priority":2,"dependencies":["cmake","opengl","glfw","glm","imgui","pybind11","spdlog","stb"],"slug":"maki","link":"https://github.com/christopher-besch/maki","description":"Interactive and Programmatic Animation Development; or: How to Time Travel?","title":"Maki","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAACiElEQVR42iWSW2vaABiGcz0KK660tTFRY8xBo4mJMYmHJp1dtR3dRQ+wCxktq3XTlZpa6yHiqVaNtXauDAbrrgorbDA6xm7GOhi7GmPsH+yvdJHBd/u8z/vxfQDHCpI05/eHKDdNcwIVkCKzsXR69+le8nE6lXiys5dXG8lcPL6MMiGUjcIucdLhm7aRFBsBgkEJJ92Ul+Z53shhJSWTSvc7zX6tViv3W9Xmqd4aVkpqSqUEBWNlmlc2t7TkdjGVLAAulwuGIAeKghCMuujYg/VmK1+s5jVVG5a0Xv6odVActLP1Wl1ZXGKEsCjPvz7//PX679WHXwBJklYr7ECxGdhOM7S6nSu3u1o5Vxoc1rS8tqN3CvrO85bW1e+vrDCi7OGlzWT26uPPt5fXAIbhDgdCUl4zhC2txQ67xf1aTS9oJycvCrl+/Vm529RLWiPb6K0+2vAGwmxQjkQXz998evf+B4DjuNVqJUjyzvRMIrHa6fayucJxUdUrnWauXWp09WZ+qFfPTtupzDYXjgjyXW8gtLvXvrj4YpgxBEFYliXc7oWFWGa/qma0w3rlqF/RWt2jRr3R66jF8sbWQXw5BWFzpE92+/no4lq5cjIyWywWo7wZtJhByGJHUAxnWY4PCNH5uBIKS1LILwWzebJ9jPQG9pWHPpKNMGLIJ0ZGsNPpZDnO7aUpj8eJojZjDRg2m80ETkxNTo2N3UII/7fv0zc3gDGvzu0otSAqChdSABRFDbPBz0CwzY4YIAiCBmkymXAMt4DQxMQ4iIiDM+w/PHyJOKh7wqw8ghmGcVEuhvNRHsqJYUaKcTyCIIxGHMdBIGQyjdswdj0h/v5z+/jUKcfCPuMjwyPzP+v1y0hjTk+xAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/ba4ee1e4d545c4df94a90630e0d8f20a/afa5c/maki2.png","srcSet":"/static/ba4ee1e4d545c4df94a90630e0d8f20a/2fe1e/maki2.png 480w,\n/static/ba4ee1e4d545c4df94a90630e0d8f20a/9bec7/maki2.png 960w,\n/static/ba4ee1e4d545c4df94a90630e0d8f20a/afa5c/maki2.png 1920w","sizes":"(min-width: 1920px) 1920px, 100vw"},"sources":[{"srcSet":"/static/ba4ee1e4d545c4df94a90630e0d8f20a/3a3a2/maki2.webp 480w,\n/static/ba4ee1e4d545c4df94a90630e0d8f20a/bde8a/maki2.webp 960w,\n/static/ba4ee1e4d545c4df94a90630e0d8f20a/c512e/maki2.webp 1920w","type":"image/webp","sizes":"(min-width: 1920px) 1920px, 100vw"}]},"width":1920,"height":1080}}},"date":"December 2021"}}},{"node":{"id":"b804b240-53c3-5a0b-8fb3-c9c6d885fb00","frontmatter":{"languages":["cpp"],"priority":2,"dependencies":["cmake","armadillo","nlohmann_json","spdlog"],"slug":"neural_network","link":"https://github.com/christopher-besch/neural_network","description":"Experimental Deep-Learning Framework.","title":"Neural Network","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABJUlEQVR42n2Q25KDIBBEGYIoYlaCKDcjlc3//+M2ick+5NI1NdWWc2ZaGes6GgZKiZaFLwvNM61r7VqTUrW0ZkKwjxKCAwihdvDW1jIGS/cBov+CON9NfdW2vBSQtefMY+RYhCDwIZD3+7ppIufodEJnTfO43DR0PlPO6AyBQ2DjyI5H1vc1s1LscKiF8Chg8DsohFRKhiCdkylJYxpj5M+PHMfWWgH4Gf5VKaVSyrquMYTZucX7mNK9tlLwqIfBGNO27RsY2LZt55sC5D3Misr593KJMWqtp2lSCP8FRgeL6eeu6/WKXN/g+zRWYG65KT2Ez/He933/MTauYQ4rYHDBOXf3EDbiEfCIn/cWBomhnDMYwPM8w+AgYCRHEMDW2q7rXtk/KaIgNPoxJ2IAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/ffcee91a9bd7ca290169a662b05f003f/08fdf/neural_network.png","srcSet":"/static/ffcee91a9bd7ca290169a662b05f003f/8416c/neural_network.png 202w,\n/static/ffcee91a9bd7ca290169a662b05f003f/077c0/neural_network.png 405w,\n/static/ffcee91a9bd7ca290169a662b05f003f/08fdf/neural_network.png 809w","sizes":"(min-width: 809px) 809px, 100vw"},"sources":[{"srcSet":"/static/ffcee91a9bd7ca290169a662b05f003f/51e0f/neural_network.webp 202w,\n/static/ffcee91a9bd7ca290169a662b05f003f/3ea73/neural_network.webp 405w,\n/static/ffcee91a9bd7ca290169a662b05f003f/a15e1/neural_network.webp 809w","type":"image/webp","sizes":"(min-width: 809px) 809px, 100vw"}]},"width":809,"height":455}}},"date":"May 2021"}}},{"node":{"id":"273ae0c1-4f5e-52ec-82ee-934c7aa00b04","frontmatter":{"languages":["cpp"],"priority":2,"dependencies":["gcc","premake","stb"],"slug":"ray_tracer","link":"https://github.com/christopher-besch/ray_tracer","description":"Experimental Offline Ray Tracer.","title":"Ray Tracer","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAACbklEQVR42h2QXUsUUQCG52f0AUWQXRhGaHURkVCSlFEghpkm3kQq5EW56+zMmbNnznydmTkzZ77WnZ0ZdXN3tUXTLAMTIiQQoqC7IOoHdCPdddNNY/BcvDcvD+/LaXTRZFlBavX0f+2+tqPar6qLL4MkZyNMD8mzE7XcsOmELRq0bL8RpVu7X37tff/DYXOJ+tndsZ2jF/8e6/7RO7Dm194E6fb//iHe/JrjtFx31fYadtgkXiNafbH38/f+twNOIRXDJk9m6x2XPx3p2r85VHH9p15keXHuXPeq6ySI5eVpnPEk19IlmyzGo9Ntq735+YBLa92xz2E8UwDp45nYsEobbS72jxvO89xDWRuwgvHxtrU1aE7yGz0TO+fG354dqfdPRvObnEtHTOUULAMjH+9mqslcu8syBky2YgcN228q1CtG46I6lVwY3j05+OHM6PvOMSZXDVbnoBKKcgXrKdTCsh4qZizpCxpdMViCtTB/yKBLmp5pdDm5NfX6xM13pwe3z48xNbWCJsfzSJR0gHwJmQCRklCWeA0DotkxRlShVagFkkgF4GiIhsMT7vUHzoyiKK5KYk6UAwGykuQIiImyL8iBJNgyYthMFFKTSYSNeQB9UfKA4iMrKgImqgHSI93KuKJg5FoR+QC5h2XoSsCWZaZYmWKmmMSyUZWNGOtVTBKs1zQ71axMNRLVTLi5Enw2+wiUqQBNXlSKc2V+lsCSlY9HZYqIj0lF5CkvMVjUnN4h9crDsuggO9HMjLOtO1Tl5gr3JDUDCpNUBmEPEm/k54mA6HRBxPkdDADX6xupd14NO/pql+5DHkOt+g+gtVjHbV/h3wAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/b6544f8b93634adaf6395fbe71540c0f/afa5c/ray_tracer.png","srcSet":"/static/b6544f8b93634adaf6395fbe71540c0f/2fe1e/ray_tracer.png 480w,\n/static/b6544f8b93634adaf6395fbe71540c0f/9bec7/ray_tracer.png 960w,\n/static/b6544f8b93634adaf6395fbe71540c0f/afa5c/ray_tracer.png 1920w","sizes":"(min-width: 1920px) 1920px, 100vw"},"sources":[{"srcSet":"/static/b6544f8b93634adaf6395fbe71540c0f/3a3a2/ray_tracer.webp 480w,\n/static/b6544f8b93634adaf6395fbe71540c0f/bde8a/ray_tracer.webp 960w,\n/static/b6544f8b93634adaf6395fbe71540c0f/c512e/ray_tracer.webp 1920w","type":"image/webp","sizes":"(min-width: 1920px) 1920px, 100vw"}]},"width":1920,"height":1080}}},"date":"May 2021"}}},{"node":{"id":"16731b16-54ad-5922-9979-6930ab456659","frontmatter":{"languages":["python"],"priority":2,"dependencies":[],"slug":"todd_linux","link":"https://github.com/ToddLinux/ToddLinux","description":"Experimental Source-Based Linux Distribution.","title":"Todd Linux","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABEklEQVR42nWR226EMAxEQ4Eu7AJLuN/F/3/lHjwlqlR1HizbsT1jx3VdN03Tuq7YcRxfhqIosFVVYdM0/TZkWZbnOaELaNu2aZphGEYDs8qypNl7j0PDwxDHsfsL2uhflgVyOiWhuUE/r33fv2+QRBGWYkccZJNCGG9U46NZtGjG8iTlhE+D27btOI55nsUA6rrWImJWCI834Gg09RczVPu+Qy7953lipS2AK3CqJEniX3C0MYxTQY4K6vCZAiGWEbmB0i+D+hPDdW22RTlsdCKMDJqlE9lY8sySbE2UeCcqOJFAzJHCwpyEO+lIcoTw59dXwamb+Rvak/FhcxzyYZcfZg7GMVQhnYRY8syOosj9jw98WSX8g+tLRAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/7c6e90442202143b65979ed16ebad618/f95d7/todd_linux.png","srcSet":"/static/7c6e90442202143b65979ed16ebad618/5e16b/todd_linux.png 238w,\n/static/7c6e90442202143b65979ed16ebad618/2b6c8/todd_linux.png 476w,\n/static/7c6e90442202143b65979ed16ebad618/f95d7/todd_linux.png 951w","sizes":"(min-width: 951px) 951px, 100vw"},"sources":[{"srcSet":"/static/7c6e90442202143b65979ed16ebad618/7f2c6/todd_linux.webp 238w,\n/static/7c6e90442202143b65979ed16ebad618/e6364/todd_linux.webp 476w,\n/static/7c6e90442202143b65979ed16ebad618/c84fa/todd_linux.webp 951w","type":"image/webp","sizes":"(min-width: 951px) 951px, 100vw"}]},"width":951,"height":535}}},"date":"July 2021"}}},{"node":{"id":"0492067a-5e9a-537a-a914-a34ff985d7a8","frontmatter":{"languages":["typescript"],"priority":4,"dependencies":[],"slug":"lake_visualizer","link":"https://github.com/christopher-besch/lake_visualizer","description":"Interactive Problem Visualizer for the 39th BwInf, 2nd round, 3rd task.","title":"Lake Visualizer","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABbElEQVR42o2Rz0vDMBTHK/4j+p8piP+JeNGDeBHP3hQZ1ZaOgXhQtjGYE2EHhU2ra2Rrs279kSYvTX1pxzyouC+PJC/9fpKXV4NTOjNrlw9Wws1mx3XOP9z7dvR5Y87ZlW3TIFBKyd/EuTBYENBrs9Zz0szp9cYta+Y1u6F300iZXa8Hvo9wlmWM4cAz/h2MMQMnDlAUxSDwj7oHh49772yEqeeGQsgojj1CQEoMLkDjYiE8zMBJgkB3fWhvnmys7a/vWjsKoHE3HRGWsZgQIlLxejsAJlRRYFRC0BAAeZ5jMk2i49bptrVVe65hmiRYrTYpbVfUh87F8KX9pPdK/xLW39MIHUs3jos7qsUsLiZv0EqSPqblTgkLXfPcpREJK+sS+ym8MQSYS7mAlRRTUZw5PiXwJ1SWU52JvfU4x0TDuYQwE/0gp5PqLf8LUFLiew1cYNOVWo0rJQEEpQjqhiGMPVNqdVrCeIw//AubHm8gk7c5+gAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/4e6a8d52902f88b218b8f6ee5d511490/aaf42/lake_visualizer.png","srcSet":"/static/4e6a8d52902f88b218b8f6ee5d511490/822d2/lake_visualizer.png 211w,\n/static/4e6a8d52902f88b218b8f6ee5d511490/9dbfb/lake_visualizer.png 421w,\n/static/4e6a8d52902f88b218b8f6ee5d511490/aaf42/lake_visualizer.png 842w","sizes":"(min-width: 842px) 842px, 100vw"},"sources":[{"srcSet":"/static/4e6a8d52902f88b218b8f6ee5d511490/36c97/lake_visualizer.webp 211w,\n/static/4e6a8d52902f88b218b8f6ee5d511490/6fd1d/lake_visualizer.webp 421w,\n/static/4e6a8d52902f88b218b8f6ee5d511490/d6fa7/lake_visualizer.webp 842w","type":"image/webp","sizes":"(min-width: 842px) 842px, 100vw"}]},"width":842,"height":474}}},"date":"April 2021"}}},{"node":{"id":"e10fa48d-7760-559b-821d-6daaf9a541fb","frontmatter":{"languages":["cpp"],"priority":4,"dependencies":["emscripten","cmake","sdl","armadillo","spdlog"],"slug":"lynton","link":"https://github.com/christopher-besch/lynton","description":"Experimental Game Engine.","title":"Lynton","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABhUlEQVR42m1SOZIVMQzts5FBQkBAMEORDBT9be2y5Xb3h0mpIuUAxFwS9TDAD1Dk7ekt8vLm+9u7b++YRGIzLrTCh1B31qbWwg1IaEXThqKlP7Y4BkgbHA/7WF78fPnqx2tBRdZ8ow5C1cBFKlQjCt4r+7Wsk1gwJGnIkJgRdbn/+v7TXDHPZut85VqGc5NRBGZ38EBKlDFbRwtKfUAkzCwii1VTlGzVrBvTWgskg5w0jXVjzbuN0PgBWO2jBlsy8VMt2eX3kpKBCTXmsKPvZ+fNjs9r39StpYtKlRh7SRXyDOabyjMbwZ7VEyGeZiDdUXZWuyh5kVbk/+D0dhmpWjwJEqTYZfhkDBt99pRMCjfPb8DEcNVycHDTDij1izdU19nTgT75ypxdVOgv87PnU1oay0llWKj1VJpTI6CK5y0bq+fe/iBPsII1xGSrvXk03ND6GFs0IFgZbVsPdbKZDiTHov+yPtNGBzuBbIHipUOY9ZIfLJxkmO/Driw+90tmnineeP4FmLcjrLxJjGIAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/58a7108179147732c801c94288cd76d1/92a30/lynton.png","srcSet":"/static/58a7108179147732c801c94288cd76d1/0525f/lynton.png 249w,\n/static/58a7108179147732c801c94288cd76d1/a9baa/lynton.png 498w,\n/static/58a7108179147732c801c94288cd76d1/92a30/lynton.png 995w","sizes":"(min-width: 995px) 995px, 100vw"},"sources":[{"srcSet":"/static/58a7108179147732c801c94288cd76d1/ec4ed/lynton.webp 249w,\n/static/58a7108179147732c801c94288cd76d1/81a8d/lynton.webp 498w,\n/static/58a7108179147732c801c94288cd76d1/ec251/lynton.webp 995w","type":"image/webp","sizes":"(min-width: 995px) 995px, 100vw"}]},"width":995,"height":560}}},"date":"May 2021"}}},{"node":{"id":"d000ef96-1be3-5e1c-bbf9-cbfd81167f83","frontmatter":{"languages":[],"priority":5,"dependencies":[],"slug":"docker_setups","link":"https://github.com/christopher-besch/docker_setups","description":"My Docker Deployments.","title":"Docker Setups","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABHElEQVR42m2S2Y6DMAxF2UFCIPZ9p2wS//99PWpS2jKTh6j4+vjaTpVt287zjKJIURRVVZU/R9f1aZqKoljXNQzDn7RlWYZhyLIsSZKyLOu69jzvBrdtS3wcx6ZpRKbUILuuo7Dv+0EQIFiW9Q3jA/N4H/xBpH/9Onmea5pm27Zpmre2SSKBzimBOWRVVVLDFo3J0Y7jQKPPb5iiSMBI8zzzg3ypUYxRKYZGV2iGYdycSej7HhuS4VmB1PgQGBksj7HJ2/f9Wts1syB/4O514IGx5c2Y3HGcq3napi9IMbnI/GybYmiu68ZxDHZbGDBWYMKW7mhNbpso30TB/v2TEMRZeOLBark/T0UleEKGaVzAdYu2IcVTcadpKtKeI4QrwQQ/6pcAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/404869fb5128fea2f3cd631ada4dcc63/d0df2/docker_setups.png","srcSet":"/static/404869fb5128fea2f3cd631ada4dcc63/f0aa7/docker_setups.png 188w,\n/static/404869fb5128fea2f3cd631ada4dcc63/f9574/docker_setups.png 375w,\n/static/404869fb5128fea2f3cd631ada4dcc63/d0df2/docker_setups.png 750w","sizes":"(min-width: 750px) 750px, 100vw"},"sources":[{"srcSet":"/static/404869fb5128fea2f3cd631ada4dcc63/d03f4/docker_setups.webp 188w,\n/static/404869fb5128fea2f3cd631ada4dcc63/cf250/docker_setups.webp 375w,\n/static/404869fb5128fea2f3cd631ada4dcc63/b9516/docker_setups.webp 750w","type":"image/webp","sizes":"(min-width: 750px) 750px, 100vw"}]},"width":750,"height":421}}},"date":"July 2022"}}},{"node":{"id":"1ee8a684-1e2e-5e14-bfbb-937cac375c4b","frontmatter":{"languages":["cpp"],"priority":6,"dependencies":["gcc","premake"],"slug":"cryptography","link":"https://github.com/christopher-besch/cryptography","description":"Cryptography Cracking Tool.","title":"Cryptography","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA7UlEQVR42sWQ3Y6DIBCFEVNEWOVnpQWxxdr2/V9xTyGSJu1e7NV+EjNzmDHnSIzXelY2GuF6yqjoBeCc9y+gpZQ2b5Dtuj1uj/t2X9M1znFZljmDIoQQY6wtOO+klCCSKk3TZK3VmXEcVabWwzDgPWZKIaUkWmn11DGkjLFlH3dluus6pDDGfGWgl1sAnUjXSy8GLzt3aLsWmfHwnZr5mfCdtCacy3pZzst3xjmHCG6niMVLBS2MkDnEcAr+GE7O4w/B9usn7A4WMM0YQ1QYhh0kIlIjE+eKc81a1jbkk71fYaTh+QhCD/SPy//FD5DPGrh7pv2mAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/a2fa82a75935e0858c6e4f4033465c43/a60e4/cryptography.png","srcSet":"/static/a2fa82a75935e0858c6e4f4033465c43/13d7a/cryptography.png 253w,\n/static/a2fa82a75935e0858c6e4f4033465c43/b09f4/cryptography.png 506w,\n/static/a2fa82a75935e0858c6e4f4033465c43/a60e4/cryptography.png 1012w","sizes":"(min-width: 1012px) 1012px, 100vw"},"sources":[{"srcSet":"/static/a2fa82a75935e0858c6e4f4033465c43/69402/cryptography.webp 253w,\n/static/a2fa82a75935e0858c6e4f4033465c43/29a8e/cryptography.webp 506w,\n/static/a2fa82a75935e0858c6e4f4033465c43/3a892/cryptography.webp 1012w","type":"image/webp","sizes":"(min-width: 1012px) 1012px, 100vw"}]},"width":1012,"height":569}}},"date":"December 2020"}}},{"node":{"id":"0561a320-4e01-507c-90d8-11dc7d6fd7ff","frontmatter":{"languages":[],"priority":6,"dependencies":[],"slug":"docker_borg_backup","link":"https://github.com/christopher-besch/docker_borg_backup","description":"Schedule Borg Backup with Docker-Compose and docker_cron.","title":"docker_borg_backup","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABlElEQVR42l1SCY7bMAz0H1pvfEiWRN2XLZ9xtugFtP//UolkWyQFBgQpaDgjUhUvCbZRn0XfZnvb7XWnKhMZqc4EQi8QjsiEuFD11sMzqroVxDn3c5PzyP0q86HGU4TtHlfmFoi7yieWHbN1J17Ibx20XLEU7bEO0jdEIqiwDYGWKiYDEa5jpm7ZiyyRFyIrzLAf6vfMq7S7+Ysp73Y6/fbNTCf4Gckt1XUHHzefUD06XahkOuu4qbDKsIAvJh92vIKbCHjlyyDjIANTiesk7Ah24ib/JaNV8DpfUVlPt7B+Bb/F48egYjOoh/MWMeiOW8wf8W67FZdeURHAFB0XFRabd+mKHw8TF+mLCrOJK+rjoU0rKuuw4M37wIQegh984GOCMBLu0KGwGb1QGTBH5xQCllxnYTIRmCQ8r/DdnTRDDKoUu8/Cxp4ZHHvPLXomjygckpHWUPWpYUj53HLEh+26ERRSPn7Z8j7efsf9u4wbDombCQUfj8QWzes/qZ5X10Nome2Ex9hQfR+kwiX9281/P+wPEFtbXIxxW1gAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/ceaebabb03fc010dde3f8c6c76ffa5e8/02437/docker_borg_backup.png","srcSet":"/static/ceaebabb03fc010dde3f8c6c76ffa5e8/f0aa7/docker_borg_backup.png 188w,\n/static/ceaebabb03fc010dde3f8c6c76ffa5e8/5bee0/docker_borg_backup.png 375w,\n/static/ceaebabb03fc010dde3f8c6c76ffa5e8/02437/docker_borg_backup.png 750w","sizes":"(min-width: 750px) 750px, 100vw"},"sources":[{"srcSet":"/static/ceaebabb03fc010dde3f8c6c76ffa5e8/d03f4/docker_borg_backup.webp 188w,\n/static/ceaebabb03fc010dde3f8c6c76ffa5e8/1e940/docker_borg_backup.webp 375w,\n/static/ceaebabb03fc010dde3f8c6c76ffa5e8/06597/docker_borg_backup.webp 750w","type":"image/webp","sizes":"(min-width: 750px) 750px, 100vw"}]},"width":750,"height":423}}},"date":"September 2022"}}},{"node":{"id":"e330b914-530e-52a0-9f17-d9a9eda50aca","frontmatter":{"languages":[],"priority":6,"dependencies":[],"slug":"docker_borg_remote","link":"https://github.com/christopher-besch/docker_borg_remote","description":"Using Borg and Docker to sync Backups.","title":"docker_borg_remote","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABmUlEQVR42m1S7Y6kIBD0MVRAHZXmowEBGWdud3Z/TC7Z93+jbfTXJZdUKtUdGroqNDezw/GlP9+zCouyq8EZ7KLxJi2Ji3sGXQddf/IlTjSsV5PO6vG9uLQqsxp7XkEz5hLEw6QujLMebhUj8aQbMSLjWox+lgFzsbFgIt5NyJjuVDpqpt2XA9OOmVD8fsd0KJcbzg0XZpiDtGH/KuGR8mt3Jfp7JEGlu0diKtNHjn+yzRv1Z4VtC80EadkeZPtmy21xevPKBzEY8tlzYEJxQQy8ihNDBeNAB5oRIhwvfP8sNpJDQFx15aX6rywNdr1sW9l1su0k6Z7JejWTNbBRblBeEHZ6U4cN0JFQfsMcAYNyXrkgjSesxg8TLaV7phg7A+t74EzPC545Fe2jckn7fCZXw9PhHw2YKS2wuRHCigmHJcw6uCOBQ5PItpMWqYF7cHswm8PszeZdOcvofaGAseHCku0lPPL7O3w8dfB1bUfDbpwNfYkrudMkMK6qpiCvwMSAtD0fbP5Mz78lPhPN08sUO2HVeI39F7+eG2b9HsHVfAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/6f7e29f23524527eadcb80896a5c8f90/0dee1/docker_borg_remote.png","srcSet":"/static/6f7e29f23524527eadcb80896a5c8f90/f0aa7/docker_borg_remote.png 188w,\n/static/6f7e29f23524527eadcb80896a5c8f90/f9574/docker_borg_remote.png 375w,\n/static/6f7e29f23524527eadcb80896a5c8f90/0dee1/docker_borg_remote.png 750w","sizes":"(min-width: 750px) 750px, 100vw"},"sources":[{"srcSet":"/static/6f7e29f23524527eadcb80896a5c8f90/d03f4/docker_borg_remote.webp 188w,\n/static/6f7e29f23524527eadcb80896a5c8f90/cf250/docker_borg_remote.webp 375w,\n/static/6f7e29f23524527eadcb80896a5c8f90/a66aa/docker_borg_remote.webp 750w","type":"image/webp","sizes":"(min-width: 750px) 750px, 100vw"}]},"width":750,"height":422}}},"date":"September 2022"}}},{"node":{"id":"887dd175-8e93-5c22-ac12-3bb8ccd12b39","frontmatter":{"languages":[],"priority":6,"dependencies":[],"slug":"docker_git_backup","link":"https://github.com/christopher-besch/docker_git_backup","description":"Backup all your Git repos with Borg and Docker.","title":"docker_git_backup","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABzUlEQVR42j2Q2Y7bMAxF8w9tk1iWLcvaJVKLt0wcTJp5KAr0pf//N1VmkAJXBAnyELw6OLODe0/hQ+kdYC/5HeBa8n2dP4ItQUcrnBmt4tYIb4ST3HnpaxSDO5yJVGKJ/mH0bUu3ayzF57+3tz9recP4e5svWB7z/QJL0qEYCMIvDkH5IMOBUNP1oSGyi7eu/BIO43VJ0+QCQElxSrZklzYDE7eeGy8DCADCzPGsDu0T9mxA6tYWLlRmSlXTqoboupe0mlLdUkVa1XWG9nXYdMy2VNfWoT7Ok7e3wazNGNnohtEx7ris0fZfGuyofE3qMCGfav/DQ+o7T+xC3FYZG1Ha4FLUAaQPGmDU3iasreaFveB6dufq5eQsWiJOjTqd1blRx5M8fyZf5ekoa1Lhl9SJVM/Vlcx9+jnYbDHO25zn5CNOa3YAcclpznx0fW959TLYqoFZNng9uufZbCzC37mIo4z7vEbtlApryVp5JWyq38utFKYgFowFEOpWWB8lV9iwPgwMaqRUdiMGnScTJLNeeK2XjiEbktV7S8P3H+Jp5+lFfjvJJ9wz6PvA8NrBRbtYlnnbSkSMOYY8c42Y98e8O4saQTpEWC/VkMd/7ChkfqX4eUAAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/5dd042425f348f19eb3c0f4669b4fec7/0dee1/docker_git_backup.png","srcSet":"/static/5dd042425f348f19eb3c0f4669b4fec7/f0aa7/docker_git_backup.png 188w,\n/static/5dd042425f348f19eb3c0f4669b4fec7/f9574/docker_git_backup.png 375w,\n/static/5dd042425f348f19eb3c0f4669b4fec7/0dee1/docker_git_backup.png 750w","sizes":"(min-width: 750px) 750px, 100vw"},"sources":[{"srcSet":"/static/5dd042425f348f19eb3c0f4669b4fec7/d03f4/docker_git_backup.webp 188w,\n/static/5dd042425f348f19eb3c0f4669b4fec7/cf250/docker_git_backup.webp 375w,\n/static/5dd042425f348f19eb3c0f4669b4fec7/a66aa/docker_git_backup.webp 750w","type":"image/webp","sizes":"(min-width: 750px) 750px, 100vw"}]},"width":750,"height":422}}},"date":"August 2022"}}},{"node":{"id":"da7c139f-f844-54d3-9645-f0e85a3087ec","frontmatter":{"languages":["typescript"],"priority":7,"dependencies":["firefox"],"slug":"bbb_autostatus","link":"https://github.com/christopher-besch/bbb_autostatus","description":"Firefox Extension Simulating Human Interaction in Video Conferences.","title":"BBB Autostatus","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABaklEQVR42n2S2U7DMBBF+///A4hC4QUKbwgksjoN3RLHCfGS1UnqcJMXhER7ZVn2yMczvuPFOI62Za3u78uiqKsK277rwk2w234pKbAez2thTqfAd19f1hmjpZIItU0dBn5A/JRRrRtjzFl4HI3vOcvlLf/OqrKY4LYmnrsJyGG/Ox52uOs8bEzge+unpzxLpeB93+m2CQOy/QoZjZWSw9Bfyuzan48Pq+i4321D5AHtubZjW6USF2qe4GEYQLm2ReNICY7Tum2J5wTEi6OjFPmlN6Oq6LCf4OhQSD70PZI71qfvOjQ+Sv4Nw405nSt7/Hh/u7m+grdojxD5aegeVnevL88pSxBBHD78D1dVxXkOqxhLshSeCYyiQI8FQyih+dQFfAKMX2HTNM2i0xqvhbdoDBxL4qip6zRNN5twhhNCCOcc1mitu1ntLHixwK0soQmNGZ3nhEopyrLM81xKqZQSQmCu/woHkPkHA2FuTLlOEvMAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/aaead84ab62c2fe90cf9a8f2484b0c08/59e57/bbb_autostatus.png","srcSet":"/static/aaead84ab62c2fe90cf9a8f2484b0c08/372d0/bbb_autostatus.png 136w,\n/static/aaead84ab62c2fe90cf9a8f2484b0c08/d8348/bbb_autostatus.png 271w,\n/static/aaead84ab62c2fe90cf9a8f2484b0c08/59e57/bbb_autostatus.png 542w","sizes":"(min-width: 542px) 542px, 100vw"},"sources":[{"srcSet":"/static/aaead84ab62c2fe90cf9a8f2484b0c08/c3c12/bbb_autostatus.webp 136w,\n/static/aaead84ab62c2fe90cf9a8f2484b0c08/67841/bbb_autostatus.webp 271w,\n/static/aaead84ab62c2fe90cf9a8f2484b0c08/89110/bbb_autostatus.webp 542w","type":"image/webp","sizes":"(min-width: 542px) 542px, 100vw"}]},"width":542,"height":305}}},"date":"May 2021"}}},{"node":{"id":"47ed664a-f0c6-51cb-aabb-9ea9e5f48ad7","frontmatter":{"languages":["typescript"],"priority":7,"dependencies":["webpack","bootstrap"],"slug":"book_page_converter","link":"https://christopher-besch.github.io/book_page_converter/public/","description":"Convert Page Numbers between Different Versions of the same Book.","title":"Book Page Converter","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABLElEQVR42q2Sy07DMBBF8wkgROyxnYedVxNB2zwEQmzZIyTED7Dh/3/gMnaaAoKC1LI4ycjKXM+9k8hVNYq6QV6USHILnWaQ2swoA0pSrhOQ4bdJAorPDhFJ0lh1HfphwHqzCfi6H0dM04i2sVhfNYHb6RptW+NSEl+mfyTyjyTLYYsChm/QjOEptVFQ5YD45hVx/4J4+wy6e4Os76G1hOKJiV0s7AUFKaRsNbMOvvaHxBarqoLIO8jNI0T3EKDtE4TrkWXJXtB/7weomlXoDxNm1sI6B8c5BsoqZEqKQPE5SFzMxGcgEhDKfLHphb3o3vLn0T8sqLAUqeelzKS7ZX3PbnEXHQqXDjT+RXRM0z8Jmh2nCvpsFpQ6TdDnmLoS0vHv41rIvJmX80vPO+f+JchTPL98AAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/2aa401fbe9cc79fdb342b5be684f994b/87706/book_page_converter.png","srcSet":"/static/2aa401fbe9cc79fdb342b5be684f994b/f80f8/book_page_converter.png 320w,\n/static/2aa401fbe9cc79fdb342b5be684f994b/9a63f/book_page_converter.png 640w,\n/static/2aa401fbe9cc79fdb342b5be684f994b/87706/book_page_converter.png 1280w","sizes":"(min-width: 1280px) 1280px, 100vw"},"sources":[{"srcSet":"/static/2aa401fbe9cc79fdb342b5be684f994b/c0bcc/book_page_converter.webp 320w,\n/static/2aa401fbe9cc79fdb342b5be684f994b/17574/book_page_converter.webp 640w,\n/static/2aa401fbe9cc79fdb342b5be684f994b/71d4d/book_page_converter.webp 1280w","type":"image/webp","sizes":"(min-width: 1280px) 1280px, 100vw"}]},"width":1280,"height":720}}},"date":"October 2021"}}},{"node":{"id":"853d8ded-24e3-5d1c-a4be-e811d31c0d95","frontmatter":{"languages":["python","typescript"],"priority":7,"dependencies":[],"slug":"jupyter_compare_view","link":"https://github.com/Octoframes/jupyter_compare_view","description":"Blend Between Multiple Images in JupyterLab.","title":"Jupyter compare_view","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAACcUlEQVR42n2TSU9TURiGu3ZgKu1tb0dQ4N6WtkDiAAShEVqppcyIDCIig8QWVEICKCCJFIMgBWoQFIwDUZMWoztETQxL9vycx0sXxATC4lmdnOe8+c77qQS5GEHQYLJmkC3byLLnIee6cDgcyDYbkiwrSDid+TiyJKQcCdFkxmi2YLJYj6AScssQdVpS0wVa6moYafEy0epjrM1Lv/8CA41uuv2F9Pd28fzFHBOTk/h815VHbGh1evQGIzrRcIgidCPqtSSlpTMxNMTnqV5ehapYCfmJ9JSzEvSzFAwwH54itvWNaDTK/PwcFRUeUtXpiEbTMUIlYbJaw/C9PpYHGgi3FfF2KEBbpZPwbTdbz7qJb26w8e49W/E4M+Ew5Z4ThRrSBJFAiYvo/Wo+jbaz2HOF/hqZkC+fP6tPWI0u8ODhI3Z3d4nFYni8104Wpmr1tHgusjZYy2KXh4VONxuDPmZqs/g+7md9JcLLyCKRSITNzU2abjSTlJJ6QkKtSJO7gA+TQZb6avg4dpevj+tY7SogXC0z+3SU12tv2NnZYW9vj57ePk6fTcag/PjxQp2RhuJsfswO83d9nvj0ILHxVr6MtDLdXs36coSfv36zvb3N/v4+wVCIU2eSjhOWoVd6qNEbyJMs3KwspaM+QPP1CmqvluC9XEBVaSGNDfV0K6k673TRfquDS4VFpKVrEhJBLx6iEsyZiAYDJlMmFksOWtGIWpmnYDQrmBAOEhisiVlpBB1qjZaUNHXi8kGRDwr+PyqdcqA3GrFYz+PIy1e2xIbd7sThdGFzOMmS7Eg2Ow6XS9kcO9mShDXzXAJLRuYR/gHUBIeYGH+vFQAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/2e29918fcd7065171abf5a9e71e3e0fa/93019/jupyter_compare_view.png","srcSet":"/static/2e29918fcd7065171abf5a9e71e3e0fa/a9b17/jupyter_compare_view.png 149w,\n/static/2e29918fcd7065171abf5a9e71e3e0fa/873d6/jupyter_compare_view.png 299w,\n/static/2e29918fcd7065171abf5a9e71e3e0fa/93019/jupyter_compare_view.png 597w","sizes":"(min-width: 597px) 597px, 100vw"},"sources":[{"srcSet":"/static/2e29918fcd7065171abf5a9e71e3e0fa/2ec87/jupyter_compare_view.webp 149w,\n/static/2e29918fcd7065171abf5a9e71e3e0fa/5b303/jupyter_compare_view.webp 299w,\n/static/2e29918fcd7065171abf5a9e71e3e0fa/faef1/jupyter_compare_view.webp 597w","type":"image/webp","sizes":"(min-width: 597px) 597px, 100vw"}]},"width":597,"height":336}}},"date":"June 2022"}}},{"node":{"id":"706b8428-0a6d-5a1f-aa07-e00dca67d519","frontmatter":{"languages":["python"],"priority":7,"dependencies":["flask","bootstrap"],"slug":"ohg_plan_parser","link":"https://github.com/christopher-besch/ohg_plan_parser","description":"Parser for the Substitution plan of the Otto-Hahn-Gymnasium Gifhorn.","title":"OHG Plan Parser","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB/UlEQVR42oVSy27TQBTN51UNXYAE++666CZSF/AHVXcVpQoClQWtVAl1BYgVom0apSnIVaNUwklIHL9mPH6MZ+zxY2K7XCeIDQuuZnHu1VydM+dM42FZyq3SueooilJW5Wj0E3C3e6WbBg38i8vz/k1/eD8sCtnv9wBf968H90PYalTL8n0PO8g0DcZYHHGEkee5nu+laUoc7LoEY5TlmQ8z4gWen4ikXpZSpmlimEZA6UoFIc5M0/T5HIYspACgwQgvykW719672Nv9uvt28Cav8pq5LEshBJAAhuUkEeGyYCJlzjmLRQzDvMg3TzY3jjaefn7W+t4ShWjA7ZXyFe1f8G8LmKbUT/xABmFGoW3keS5EbNvWfD4HtdVDVcueTeGkSaYH+n5n/+XlwcHdqxFTT3+cHnYP2zevz/QzENIowEQpoyhinMEBBngCaKastuBWV5rvHj0+ebL+fv1c+7b1YWvtaK153Nzubf9fdiKTGZ9pkTYNpzzjJjenbDqLNEPoRVX8cRsjBN5CLd0m4LCNbOISEcfIsF3kOpazkJJggm2MLcTDqI6qWCzg2YyFAQ2ggDmKOIRMKYXM0yzF8AN8yBrXOQeQtAufIoqXy7AZx9yyTFVVgQpGYN5kPNZ0zXVcFas7H3eef3nR+tQakDtLt8aT8a/JxPU8uPkb7MBLQz3lw4sAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/010debbb2895bfdad1bede28a9cad696/752b5/ohg_plan_parser.png","srcSet":"/static/010debbb2895bfdad1bede28a9cad696/06b11/ohg_plan_parser.png 109w,\n/static/010debbb2895bfdad1bede28a9cad696/d225d/ohg_plan_parser.png 219w,\n/static/010debbb2895bfdad1bede28a9cad696/752b5/ohg_plan_parser.png 437w","sizes":"(min-width: 437px) 437px, 100vw"},"sources":[{"srcSet":"/static/010debbb2895bfdad1bede28a9cad696/4be77/ohg_plan_parser.webp 109w,\n/static/010debbb2895bfdad1bede28a9cad696/4bebd/ohg_plan_parser.webp 219w,\n/static/010debbb2895bfdad1bede28a9cad696/bd60b/ohg_plan_parser.webp 437w","type":"image/webp","sizes":"(min-width: 437px) 437px, 100vw"}]},"width":437,"height":246}}},"date":"July 2018"}}},{"node":{"id":"5c6b0000-143d-520a-bbec-c67c9d219924","frontmatter":{"languages":["python"],"priority":7,"dependencies":["gephi"],"slug":"time_table_planner","link":"https://github.com/christopher-besch/time_table_planner","description":"Data Analysis and Visualization Project.","title":"Time Table Planner","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAAC00lEQVR42jWSy24bBRhG/TDAkiUP0B0SEuINYMMCJFiAEAgQO4SQogrBAoFQA20TqYQQUqc0rU18jR078W0mnvH4NjfbM/Yk49vYHt8OQyW+9f9/i3O+0FCOMvPWLH0fW9HpSBLSvTpG4ob/UlNSNIQseeGA88ounj5koPbw/SX+dMp6Nntxt91sWK9WhDYjh0pJIBKJMtRMtoMBU0VhILdYOlvC8a9J1+6DD1PHRDmUEX7qML512NpDNt6MxXzNwl0wHDqEXM3A1A1k8RqrofFOxuJp26afVJEft1l5PsupT12sYlsWeqpC7Y80QiTGu5EDMucJGvdzKOEe42lQKMsJXMtm4Qwxqg1ee6pxL9diK1yjlKpcplNYco03X7/DZx+8z6RjMciLSPunfH68h3SRw03mmNyMWAUYQm27wiyv0Nl5yG23h1dTqMezhEsq1SuB8nkGPPj76Ij8aQwCDNnCr4SffcU2KeAVytxJ7LNTTsI8KCw0D1mZHpOWiVOSGOdLJPIyrz7v0rhW6apF9tIfMq61qIpHiPIp5XqUnLTL+kpkei3xUeaEg7bI2vYCKasNarOCO+pjf/Mb/YMIg16PfkenHs6RePILXxy/jGObXLWOSVUesJ0HWmWVh/UB31+0WcfyjCQNMyUEhUt4dPkxxfwhTryMlilgXhnUTmTsgONy4uHfThjVdex8g814hXiRpRiNYuguJblLPxNDe/wnS3dMaOFvuTFM7KqCGbvECtgNCl1aR1WMjIgt9pD7Lk052GixRCfxD50AiytK/FiJU9R05mc79H//EvV5nFDvwdt41ogfYm8RLXz3YqTlxhPOIneDxxobw+bnXJPTZJ3h3nvY375CX2qDPuCT5F+c1QTWzWCzt2M0PUfIOd/FUbukMvsochrfXLLz7A0+PXyJYSAleXKCXRaZB1LG5TNuso+Y6Cp2ZB9fajGpq6wWPv/nXyYm/2M8YBggAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/6ebf595c0ce1860eeba4054c6c5cc1f5/0691c/time_table_planner.png","srcSet":"/static/6ebf595c0ce1860eeba4054c6c5cc1f5/2aa30/time_table_planner.png 285w,\n/static/6ebf595c0ce1860eeba4054c6c5cc1f5/e62cd/time_table_planner.png 570w,\n/static/6ebf595c0ce1860eeba4054c6c5cc1f5/0691c/time_table_planner.png 1139w","sizes":"(min-width: 1139px) 1139px, 100vw"},"sources":[{"srcSet":"/static/6ebf595c0ce1860eeba4054c6c5cc1f5/b343b/time_table_planner.webp 285w,\n/static/6ebf595c0ce1860eeba4054c6c5cc1f5/6375f/time_table_planner.webp 570w,\n/static/6ebf595c0ce1860eeba4054c6c5cc1f5/984aa/time_table_planner.webp 1139w","type":"image/webp","sizes":"(min-width: 1139px) 1139px, 100vw"}]},"width":1139,"height":640}}},"date":"March 2020"}}},{"node":{"id":"00a65e3b-4350-5432-9f07-eab958b7bd4c","frontmatter":{"languages":["typescript"],"priority":7,"dependencies":["bootstrap"],"slug":"who_am_i","link":"https://github.com/christopher-besch/who_am_i","description":"\"Who Am I\" Game with Your Friends as Characters.","title":"Who Am I","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42pWS2U8TURjF+2eZ+D8Yjb7Ik/oAIcH4gqgJCjFCGotRjEKwgFpCCCCFiCxuNBFLBYKRVQybdaGUlk6ns3aW/rxeDDwYEr3JyXdmvnvPzDnfDYwmkkTjP4lNrpKMvcNcXMFNZ5CrVOJ/V6B5rEBt1KSrf429x91k2p5S+DCLJ5qu4+C6Lq7nyuqI59/wPO9oQS2/i6ak0HWFnGVJ6LaNZZkCFqaopilgmBiGgS5gi/6RgulMlpSwmFcL4ssOJd+TTv82+2/2A744XdA0PMcm/glCOxNEnEY00hhaEd83WFgR77fmCDv1pEvrOKaPYRpSwLJswc1DQVs0mipPsjmfoCcO58+dpnX2FDm+0VpdzkKsj5fLcKH8Io0vjqHwlZ6GWkY6Q1Kg9951og9uSu4LdwHXKTLZfJlccpnVDpgqqyHdcgVXS5IIB9ldnWBjCN6fDfI9WEFJ2eDjQAdr491SZD4a5vPzzv1QfJ+ArhnsbG+jqArmMOR73mJHxK+msjJXy9MxXoPSOYnRNgbrKVTbRFdVKaIVCqj5/ME1CxSLRbI5RUzQYmlmiZHeQV4NjqPuqehiyoYAfgnNLOzn5gsRMXH9T26GaaHpxsHMAkXL4E7VGTYXZ4kNJ6g5cZzWa1fJpnO036hgevyZ3NheV0Wsv0PySLCa0Sd3Je+7X89gS8Nhho7IcCJ0idzWCtPReQYqyxi+HSKzk2cqXMePmTdyc7z9FluxIcmnI018Ge2SfK7vIUvRRwcZ/gLB5BjRNwUe3wAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/31a6dfc8ba3d42b8c4c0a76ae8243156/c206e/who_am_i.png","srcSet":"/static/31a6dfc8ba3d42b8c4c0a76ae8243156/c86e3/who_am_i.png 284w,\n/static/31a6dfc8ba3d42b8c4c0a76ae8243156/33bc5/who_am_i.png 569w,\n/static/31a6dfc8ba3d42b8c4c0a76ae8243156/c206e/who_am_i.png 1137w","sizes":"(min-width: 1137px) 1137px, 100vw"},"sources":[{"srcSet":"/static/31a6dfc8ba3d42b8c4c0a76ae8243156/be6c4/who_am_i.webp 284w,\n/static/31a6dfc8ba3d42b8c4c0a76ae8243156/3d74d/who_am_i.webp 569w,\n/static/31a6dfc8ba3d42b8c4c0a76ae8243156/c0cb4/who_am_i.webp 1137w","type":"image/webp","sizes":"(min-width: 1137px) 1137px, 100vw"}]},"width":1137,"height":640}}},"date":"March 2021"}}},{"node":{"id":"9ec7efcd-6eff-547c-b1db-ba631cda945b","frontmatter":{"languages":["python"],"priority":8,"dependencies":["flask","bootstrap"],"slug":"mc_royale_supervisor","link":"https://github.com/christopher-besch/mc_royale_supervisor","description":"Minecraft Battle Royale mode with Supervisor Powers through a Webinterface.","title":"MC Royale Supervisor","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB0ElEQVR42j2S227TQBCG/QZVidd7mPEevF6fUpxD4yhpSAsUigJCSFRFvYS7IvWiRXDDFbc8Am/LOIZIv0aj2f13v/3tyIcCUuNDWVWlUEiq6qY5OdHOKdQSUiGxmY2raWUrh9bQZC+kGgkFXKrU2JBb2fegjc3ynEQ7BABj8uzT/MOPy93Dtl5X1hVZURqX0Wpv7v1CjhLJ930iJOOccUEHDauYptY5AGTKCB0YOJk6mkZ7AEBtQu4Q6Spqrc28zTKFAx7GIn3CdSz1rNEvunAxd+OgEgH/sMlRBjq7x6YnuCwnf+9UEHO1W+m79+HV0rxdw+O1/X5tPm71SBywpYrFAVsxTuSCejIzAc9bebuBVcW2yt/V7QX6I2lwwKZN2jrvveoTQuOcD4ECG7CFgOysqXfzajf7/Mb/uvLfruxmIhndPLwKUk3kdM/QEzlpiOM4ll+/VH9+d/f3T8/Ps5vL/PZ1/nLhEpVGhBeTEs76kAcJqoeoEwmtl5tGFjrZaf+znb4z/kggIEb0R9TjhiollIciFGVelNRTCoOZNBJwzHEk0SM0CFS56lejRbfYbp+t1qvpbH56ulh0XbdctpMJfUb+30zwai9G4au+DvO/s45ZNDTY2I0AAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/e2c1d3c93e6c6ee28de8f535211258ea/41ea1/mc_royale_supervisor.png","srcSet":"/static/e2c1d3c93e6c6ee28de8f535211258ea/8ab74/mc_royale_supervisor.png 214w,\n/static/e2c1d3c93e6c6ee28de8f535211258ea/9f483/mc_royale_supervisor.png 428w,\n/static/e2c1d3c93e6c6ee28de8f535211258ea/41ea1/mc_royale_supervisor.png 856w","sizes":"(min-width: 856px) 856px, 100vw"},"sources":[{"srcSet":"/static/e2c1d3c93e6c6ee28de8f535211258ea/5177e/mc_royale_supervisor.webp 214w,\n/static/e2c1d3c93e6c6ee28de8f535211258ea/ae194/mc_royale_supervisor.webp 428w,\n/static/e2c1d3c93e6c6ee28de8f535211258ea/e11fc/mc_royale_supervisor.webp 856w","type":"image/webp","sizes":"(min-width: 856px) 856px, 100vw"}]},"width":856,"height":481}}},"date":"December 2019"}}},{"node":{"id":"a05a5af9-7962-52c4-9725-50ef7e3c102c","frontmatter":{"languages":["python","typescript"],"priority":8,"dependencies":["flask","webpack"],"slug":"project_omega","link":"https://github.com/christopher-besch/project_omega","description":"Article Publication Website.","title":"Project Omega","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAACDElEQVR42n1SyW4TQRD1F8RJPNNdvcxMz+KJbbxNosgiWDFbFDBEYhEIkFAuIBkuERKBE0IcuHMBPvdRPWPgkMChVF29vHr1XrfSootur4+8W8JlORKOOM1gE8c5ReTSutZRXIdZ539FS5BCbzDAldEIo/EEu3t7yLmJf0jaghSBZAhFAh1hsbFt0ZGmjm1hIDSvla4zcbQkF2leoMxzFGuW2kYomXXiHJTrQQ0OIPIKu2ONkxuEaqgxHpi6LrjxNErhjIX8DZikDv3CIYodfK340EtRZAnk6BZo+QXt2Wu8WBJ+fAhwdCCxeixw9jLAgt+t8iGqKEGgNY/MAI51yl1S65UyUz9uWpS8F0FM7oAefcPm/AwPbxO+vglwuC/x8VTg3SkDMpnznQn2bYKOB/SM4oTF542IjUjYCBvHyHj8IoshqvugJz/RXpzj2V3C9/cBjucSn18JvH0e4lqc4VNvilnkGkAvpNESRgWwzMyP6/csj2+tgSwqqNlTBMMjzCqNBzcVilxjeahw/Sqhb2McZyV2TITQa0hEENN7UIsVTFpCm8Ytz1wqXpMEBZtQslO7utFhZ1WTt0KDkO+1lWIw3bhMXMj+HLI6gbSOv0lz8Ce4M7EcZOK6mWHWap19reoJbZ0bQL/gf0bh1kUwz3TN9rKzy6L1l0V8EYxBvEFR1gVl/B9ZeNL/B/4FaEI0+0sKY2sAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/4e199f626b070295f7c3e3a7fd898e89/87706/project_omega.png","srcSet":"/static/4e199f626b070295f7c3e3a7fd898e89/f80f8/project_omega.png 320w,\n/static/4e199f626b070295f7c3e3a7fd898e89/9a63f/project_omega.png 640w,\n/static/4e199f626b070295f7c3e3a7fd898e89/87706/project_omega.png 1280w","sizes":"(min-width: 1280px) 1280px, 100vw"},"sources":[{"srcSet":"/static/4e199f626b070295f7c3e3a7fd898e89/c0bcc/project_omega.webp 320w,\n/static/4e199f626b070295f7c3e3a7fd898e89/17574/project_omega.webp 640w,\n/static/4e199f626b070295f7c3e3a7fd898e89/71d4d/project_omega.webp 1280w","type":"image/webp","sizes":"(min-width: 1280px) 1280px, 100vw"}]},"width":1280,"height":720}}},"date":"March 2021"}}},{"node":{"id":"7129211b-0f0a-572d-a253-5974ad08ac5a","frontmatter":{"languages":["python"],"priority":9,"dependencies":[],"slug":"arg_toolset","link":"https://github.com/christopher-besch/arg_toolset","description":"Toolkit aiding in solving alternate reality games.","title":"Arg Toolset","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABTUlEQVR42m2S666CQAyE9x0QRG6iIoii3ATC+z9YT74mJeTEH5OW7ky308U9Hg9ZlkXCMFREUaTxdrtpfV1XmaZJ4jiWIAjkdDoph/gL7nq9Sl3XUlWVZFmmIhomSSLP51PKslRcLheN1I/H4zbAfzhIn89H2rbVpggADai9Xi9pmkYjvPv9vnF+wUHE0vv9VotMRTOm7vteQePv9ytd18k8z9o8z3PB3R7oXFEUKmaK8/m8WUaAkB1zDriMb7jkOOKbHFBXy0zAJOSQeBBuwyIkpre1WDNqtgpywLnjEDvDMGzWILErs0vELtHE+3UAzrUh3u1BfN8Xz/PkcDiofYRm1SKTcqE9pq2AAdA6CuM4bnukOUJ2iwCYRTuz3OwyHVrdIQ0Z3QrWgBttdya0M9vrPocD1DJ2uTFNU7WLdSxDsBc2Do9lHP4I4j7/A+CPPseYlsGzAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/d9af869cd877cf16897b43771cccfaa7/9d14b/arg_toolset.png","srcSet":"/static/d9af869cd877cf16897b43771cccfaa7/d141e/arg_toolset.png 132w,\n/static/d9af869cd877cf16897b43771cccfaa7/9803f/arg_toolset.png 264w,\n/static/d9af869cd877cf16897b43771cccfaa7/9d14b/arg_toolset.png 527w","sizes":"(min-width: 527px) 527px, 100vw"},"sources":[{"srcSet":"/static/d9af869cd877cf16897b43771cccfaa7/f62d0/arg_toolset.webp 132w,\n/static/d9af869cd877cf16897b43771cccfaa7/441a7/arg_toolset.webp 264w,\n/static/d9af869cd877cf16897b43771cccfaa7/41ffa/arg_toolset.webp 527w","type":"image/webp","sizes":"(min-width: 527px) 527px, 100vw"}]},"width":527,"height":297}}},"date":"August 2020"}}},{"node":{"id":"2cd91929-b240-50ed-8199-6f16083bc8e0","frontmatter":{"languages":["cpp"],"priority":9,"dependencies":["godot"],"slug":"cmos_simulator","link":"https://github.com/christopher-besch/cmos_simulator","description":"Click some nMos and pMon Transistors together.","title":"cmos_simulator","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB+ElEQVR42n2SS4saQRSF52dlMTFKi7G7q8putX22Thx3IcF/4kYnPgluJrp3OwFBFFw4O92qe8GF4INRT24V6OAkmQuX7mq4X59zT91wzsGoTc7AbQssnwaPhcGFAGcclmXB6/WiUqlgNpuh2+3ieDxiMBhgOp1C1ul0wrluJCxshuDaGRjZJNi3HNhdEsF8gn5AwJCFTwSsVqsYj8doNps4HA7o9XqYTCZ/A6VCqcb1mdBZEMY9gZ0oNHELljJhcVLo86JcLitlq9VKDY5GI7RaLex2uyuoAppkzQ2byKc1fElpyCb8uMtqMGMcgtvweLxoNBp4/PWITqejBqXafr9/pe5VIbXB5B4F8q6GRDSIsGUgaumIOwwB/y3t8AeWyyWen8dqcDgcYrFY/McytWBkO6ThPu1B0vmMVCygOpPUYQQ+kL2feHr6jUKhcBmWK3hbFyAXIYT9PgjDgR3JQNdNGBQWFzY+enwoPzyoAanyvboAmWCk0EbB+Q7HccFMg/YnYNO18VHKpVJJDciEpUUZxmazUeeXl5frUJTlkAxGJ2gWTiwL09Tpu7jcwzNQ1nw+R61WU3dTPmXa5/RfLcthQWFEc4jHc+8CZRjFYhHtdhv1el2B1+v1G8uM0bCNjPsVkUiKzsY/gdKibGl3v99ju92q97PlP1gnYQxM37BYAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b1db4520aec38adb87983526a2e24dc5/252d5/cmos_simulator.png","srcSet":"/static/b1db4520aec38adb87983526a2e24dc5/cb1c8/cmos_simulator.png 269w,\n/static/b1db4520aec38adb87983526a2e24dc5/16840/cmos_simulator.png 539w,\n/static/b1db4520aec38adb87983526a2e24dc5/252d5/cmos_simulator.png 1077w","sizes":"(min-width: 1077px) 1077px, 100vw"},"sources":[{"srcSet":"/static/b1db4520aec38adb87983526a2e24dc5/bb587/cmos_simulator.webp 269w,\n/static/b1db4520aec38adb87983526a2e24dc5/4bca7/cmos_simulator.webp 539w,\n/static/b1db4520aec38adb87983526a2e24dc5/2d602/cmos_simulator.webp 1077w","type":"image/webp","sizes":"(min-width: 1077px) 1077px, 100vw"}]},"width":1077,"height":606}}},"date":"May 2023"}}},{"node":{"id":"682154b4-9546-5b1b-b9e0-e98bef0a0a36","frontmatter":{"languages":["python"],"priority":9,"dependencies":["docker","minecraft"],"slug":"docker_minecraft_screenshooter","link":"https://github.com/christopher-besch/docker_minecraft_screenshooter","description":"Record Minecraft Timelapse videos.","title":"docker_minecraft screenshooter","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAACjUlEQVR42iWOTW/SAACGqy7TgxsbhQ4YA+YGK6wtLZS2lJaWfkFb2tGWMTacH9N9GJ0bcFX/gO4PGI8evLhk8eBMvHjwoFHjwcX4AzzqxUQTPSDG5M17e5/3AV5+GRy9//X07Y8XJ4PHr74evvv5/NPg2cffT15/O/rwp3f/Yf/g0fHJ4Pjz4PDN9+2tzbqu5AjU0GVJKAG3HxxIl3XKY7zeBizPFZc5d3/H2LmEWwi9zEbI8RlqSrxoNPpXNvq9tWaDJnGxXLQMNYcjQJg6E6JGIWLUj52Ki+ORwjkofxoiR4KLZ6HMSCg3FsbPw2yM4hYbtmIbGkXizlKNoQiWyQNxHkwI/kTZn+ADcW4ySvsi1ESyBCFEAM8GoukxVRXatnptiV1f80osZRiKLPMMlXOsGpAgJxKYL8b6EtzkLD6ZIqZoOUQrsbyazrBQOh+QbWFztXijWbIbtiDwZl2n6YJdr5k1BUhVwFlmYl4Gk+wkpaXanZan4lUeZasEVoxgfLjS5rZWq20Nq0iVpmtWRE7Xa1a9qikiMMP5povjc5K/ZCPrV9sKlSktRlsrDl6OwwWwtTL8M1sSctPKODIhi5xp6pZtaWqlpklAjPFdUMAFGVItvuU2HYm5vtoqa+QCD/IavNJe9iR81870m9k9B+momXpNUNWKqkrDAHA1gJcDuBC+QIFJMlTSSEkvEsUIzAdba/q9u3c6GtJ10Z6X7XpY10O3jHRHSbli2iyjQFLzs3RgHvPHs/4UC8FCEBaDSDWKCKGyRNmm3pGTew7adbNdFxv2UKHfRLuNzC0zBaASmCXBBOGfJ8EkE4S5ECpPo+o0Volghbhlm73dne1GYd9But7//T9Eb2jhon8BCT+yvCMA7T4AAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/918bfbc61528540e93979b38c00bffea/afa5c/docker_minecraft_screenshooter.png","srcSet":"/static/918bfbc61528540e93979b38c00bffea/2fe1e/docker_minecraft_screenshooter.png 480w,\n/static/918bfbc61528540e93979b38c00bffea/9bec7/docker_minecraft_screenshooter.png 960w,\n/static/918bfbc61528540e93979b38c00bffea/afa5c/docker_minecraft_screenshooter.png 1920w","sizes":"(min-width: 1920px) 1920px, 100vw"},"sources":[{"srcSet":"/static/918bfbc61528540e93979b38c00bffea/3a3a2/docker_minecraft_screenshooter.webp 480w,\n/static/918bfbc61528540e93979b38c00bffea/bde8a/docker_minecraft_screenshooter.webp 960w,\n/static/918bfbc61528540e93979b38c00bffea/c512e/docker_minecraft_screenshooter.webp 1920w","type":"image/webp","sizes":"(min-width: 1920px) 1920px, 100vw"}]},"width":1920,"height":1080}}},"date":"March 2023"}}},{"node":{"id":"1d1c76e2-efb0-523c-af84-b0f2c4f87211","frontmatter":{"languages":["cpp"],"priority":9,"dependencies":["glm","godot"],"slug":"glome_projection","link":"https://github.com/christopher-besch/glome_projection","description":"Interactively Project 4D Sphere onto 2D Screen.","title":"glome_projection","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABKUlEQVR42lWS6U4CMRRGDyiKEUHBBQfEhVGUCLj/cI8a9QWM7/8m3jnjEGia26btt9xvBujBDuzDBXzCA2xBBdZhF/bgFurMj0toukmgDR0puvAM3zCBDWj4JoVzKOWwfAnA2E0otKBmDYoDOIEvePQwbjcFJzPYbFxZw2FVq9uwpmC868O1sy5pnAxhcVa8WVC8FN2+W3t2Gy7uzGJV8YFmp9io5VjeVJiYQjT8q+eOFKdwo3jD5I5hAZbyWcpqRjnUZ7w+M4gA35tfImO3SGRoX6j533xqSDEPYeSLkebz/Afy1uyxP+88G7lCokKqeKi9Cm6bSJhfMchcYw7cKvrpKRvgJ/gowGOvqn6zxK9Ynv1buvIdeZea8I8sdcEj3S4beEvqyhT5BwVfFxtLtlefAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/311e9ddcb1e37c3b3a82f909b721b43f/afa5c/glome_projection.png","srcSet":"/static/311e9ddcb1e37c3b3a82f909b721b43f/2fe1e/glome_projection.png 480w,\n/static/311e9ddcb1e37c3b3a82f909b721b43f/9bec7/glome_projection.png 960w,\n/static/311e9ddcb1e37c3b3a82f909b721b43f/afa5c/glome_projection.png 1920w","sizes":"(min-width: 1920px) 1920px, 100vw"},"sources":[{"srcSet":"/static/311e9ddcb1e37c3b3a82f909b721b43f/3a3a2/glome_projection.webp 480w,\n/static/311e9ddcb1e37c3b3a82f909b721b43f/bde8a/glome_projection.webp 960w,\n/static/311e9ddcb1e37c3b3a82f909b721b43f/c512e/glome_projection.webp 1920w","type":"image/webp","sizes":"(min-width: 1920px) 1920px, 100vw"}]},"width":1920,"height":1080}}},"date":"January 2023"}}},{"node":{"id":"b4c72d3d-c69e-521e-ae22-a29ff7a64c53","frontmatter":{"languages":["python"],"priority":9,"dependencies":["ffmpeg","youtube-dl"],"slug":"lofi_girl_downloader","link":"https://github.com/christopher-besch/lofi_girl_downloader","description":"Download and order all music from Lofi Girl.","title":"Lofi Girl Downloader","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABPklEQVR42l3SV5bCQAxEUYMxJsxg4Nhgcg77X+FcWpP1oSM3raonNdnhcNhsNqvVar1eN02z3+8Xi4Xi7StGo5E8Ho/fU5Rl2ev1ut1uJm632+l0Oh6P8na7vd/vbduS2+12bQpaFJ3IPufzeVVVtKhkl8vler3qfD6ffqaCJXL45HleFEWZot/vq+NEnXFgCNttJmom4blcLjG7JA+HQ26dTif7HbCDWSYB2/Ak4NEybV3XTQq0RYpAeDVjRq7z8XgwpwL+fD47mU6n7v1bm7af5tg2SG6xm1i722b+zrBD4g8258AWVEwRY9cpdJpcGwqKk8lEzVYxGAxeM+vnDzuAAx5LPKyraAMhXtjaLPz11MEpbIuVT1YKg+mfzWY6edofz+jJU3xix6q9M0/Lk70fucCGRwKnOv4bsQK9H5rmMIWxkW/CAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b400baaa5c2bdb1e044a962fc2c88517/f3b86/lofi_girl_downloader.png","srcSet":"/static/b400baaa5c2bdb1e044a962fc2c88517/ece18/lofi_girl_downloader.png 207w,\n/static/b400baaa5c2bdb1e044a962fc2c88517/c9837/lofi_girl_downloader.png 415w,\n/static/b400baaa5c2bdb1e044a962fc2c88517/f3b86/lofi_girl_downloader.png 829w","sizes":"(min-width: 829px) 829px, 100vw"},"sources":[{"srcSet":"/static/b400baaa5c2bdb1e044a962fc2c88517/068c1/lofi_girl_downloader.webp 207w,\n/static/b400baaa5c2bdb1e044a962fc2c88517/74295/lofi_girl_downloader.webp 415w,\n/static/b400baaa5c2bdb1e044a962fc2c88517/741ae/lofi_girl_downloader.webp 829w","type":"image/webp","sizes":"(min-width: 829px) 829px, 100vw"}]},"width":829,"height":467}}},"date":"August 2021"}}},{"node":{"id":"becaac7b-3c8d-5865-8e60-2aec2e134b50","frontmatter":{"languages":["typescript"],"priority":9,"dependencies":["gatsby","cors_anywhere","react-big-calendar"],"slug":"therapy_search","link":"https://github.com/christopher-besch/therapy_search","description":"Compute Call Times into a Calendar.","title":"therapy_search","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAACtElEQVR42m2SyU8TcRSA5z8xnvWi8eISE6+evJiYuCTggkgIKCBRBFeiuLBrUQQXqlCLUEAoIlCULkAtHTq0FApuQFtkaSlQcMvnb0ZO6uHLm5d5+eW97z1pYW6OD8E5RmfiBGZWCHyNMz4bZ0x8+8PLKFMxPJMxhgTK9BIjoWW8wSV8IvpVwita7lHrBNK3eAx9l8K+gtccLOokodzC4ZIuUip7OaF7R/ojO9n6frJr+jj/bIArRhfXG2UuGQe5Wj9I/ks3uXXvOfPEQdbTPqTv4kFdq5utWY3syjGxM6dJxCYSyiwcvdtDpihMrrSR9sjB2Zp+Tj6w0uicpFWexjwUot0Tosc/y/tPUayBeaS1pQgFRgcbk5+z+4KJTWkGtmYaKTDJPH0XIPGehQ1JerZkvGBbVj2b0w3kNwxS0qpw2eAk+X4P1+pdVHb50XX4kFZiEZoco6IDG5eNTgqaZG42y1R1+yl/PSyKvJS0KTzoGuG5bYJa+wdKzQqFr4a41ewmp7ZfjO3ionj8douMFF+K0jYQ4KzeyZ0WBYvvK93eGV65pzE4PtGhhOmbiGi56lAdO73azvF7b0mrtpH60Cpym+b8zGMH0nIsikX+SFn7COVmL/tvv2FPXgtHSrvZm2/mQOEbDhV3ki2E19k/ou+d0LyZh4K0CzqUEJ3DYdHIjPAaVDtc1Dq8ZHSTV+dk+zkTO86bOC22myEWom2yQaa4dVh4GqPM7BMj+ygSuRp1HX6K27zcMHmELg9SZGGe8el5XJ8XcX+JIot7Gxb3NhX9Tij2k8jaL74Bsys/xOgLGqPr9/rnZlcZE9Gv3q1AWhUOTfZRMmuc5BpcmsvUKgdJ960axyp6SdT1crzCSkqVXUM9o785tY5wuIg8EabFLZx4gpqfNnFjqo9/EIvR+N+/dX4DLBO43njKsuEAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/94a34e571c20f8d09ace3b0ab1c8cbc3/13309/therapy_search.png","srcSet":"/static/94a34e571c20f8d09ace3b0ab1c8cbc3/c475f/therapy_search.png 267w,\n/static/94a34e571c20f8d09ace3b0ab1c8cbc3/94713/therapy_search.png 534w,\n/static/94a34e571c20f8d09ace3b0ab1c8cbc3/13309/therapy_search.png 1068w","sizes":"(min-width: 1068px) 1068px, 100vw"},"sources":[{"srcSet":"/static/94a34e571c20f8d09ace3b0ab1c8cbc3/37b30/therapy_search.webp 267w,\n/static/94a34e571c20f8d09ace3b0ab1c8cbc3/788c4/therapy_search.webp 534w,\n/static/94a34e571c20f8d09ace3b0ab1c8cbc3/d158a/therapy_search.webp 1068w","type":"image/webp","sizes":"(min-width: 1068px) 1068px, 100vw"}]},"width":1068,"height":600}}},"date":"August 2022"}}},{"node":{"id":"b5e35dbf-f008-5c5b-a036-71b512291d78","frontmatter":{"languages":["python"],"priority":21,"dependencies":[],"slug":"technik3_plan","link":"https://github.com/christopher-besch/technik3-plan","description":"Plan a School Event.","title":"Technik³ Plan","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABSElEQVR42iXR6W7CQAwE4H3/J6xUtQUBSTiz5IQEpH6s/WMztsfjI+nr+6euj23bnk6n3W53PB5vH2t/f/9Y1/VwXdfb7Rbhcrns9/uqqgXbNqd1XXJum6aRm+cZQJXxHg4HMiJVVU3TRBeWejwe1+sVSKLn87nrumEY7vc7LKdD3/fjOAZgdHFEEJ7PJyEgzYXaFlMvRC6EuYA3upFWbxzF+2IpxIJhVEJyMBJsbG0RYhe0zWZD0SJWSMMw+pAgHNcyIbagl6tAQxdRDFAJ5qe4rpuy2JBzJiEdncnrqSaKKQYBeVmWmCtJr+v6KIbh5SqIO9k/MEVZLvx6vZZixh6snovpYBiuaW1F14R+vgjRz58tHGWhlTSLgzFT3eL356xAnAQeFxWOixhNPbk0zfOtXA/bVDbR/F5MDXZciISBNRB8v9/R/B/CzWj/TJl9EAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/faa3120c358f8722a4cf8d351c7ad243/380c0/technik3_plan.png","srcSet":"/static/faa3120c358f8722a4cf8d351c7ad243/ccf6a/technik3_plan.png 178w,\n/static/faa3120c358f8722a4cf8d351c7ad243/d4ef9/technik3_plan.png 355w,\n/static/faa3120c358f8722a4cf8d351c7ad243/380c0/technik3_plan.png 710w","sizes":"(min-width: 710px) 710px, 100vw"},"sources":[{"srcSet":"/static/faa3120c358f8722a4cf8d351c7ad243/744a3/technik3_plan.webp 178w,\n/static/faa3120c358f8722a4cf8d351c7ad243/7d728/technik3_plan.webp 355w,\n/static/faa3120c358f8722a4cf8d351c7ad243/09b79/technik3_plan.webp 710w","type":"image/webp","sizes":"(min-width: 710px) 710px, 100vw"}]},"width":710,"height":400}}},"date":"February 2019"}}},{"node":{"id":"b3b0a78c-e001-514a-a073-261c08a75a40","frontmatter":{"languages":["typescript"],"priority":31,"dependencies":["gatsby"],"slug":"homepage","link":"https://github.com/christopher-besch/homepage","description":"This Homepage.","title":"Homepage","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAAC/ElEQVR42h2TXWhbZRjHc+Mq22q2tixr89nk5OQk5+Sck69zkpxkaZdt6TbEtixFlFXtKhMZ4pS1Ll3XshUvnFMEZTimKDLEOb3Y1fCmiODGGNONMlDBXQji54XzzpufT3LxwPO+vO//z/P7v6/v8LPzdDpLnFo6xfLaOT745AqKqrEjsLNX/m3b2Tkc4ImZY8wePU9nbY3VxbO88Nwr+IdH8IdCbB0com/zFkYio/imDs1gWRaBkSCnV1a4fed7wrE4wWCIgYFB/P5tRGIxDs/NcXp1lYUzZ3nryKscm36eoUiEUGyUoUCARzZtIhyN4ys4ZSrVCiXXpT3TZnJqCsO0e3uGmcUtu+zdN4FpF6h4dbJZC9erUhsfx87l8aQvOSW8mke13hBBt0bR9XCqdcxciXhKp1Sp40jpVgFDhDTDRs1kiSoacTVNNKEymsz0zuWdCmkx0XQTVbfwOc0Gu1sTjDdbNFsHaOyZIGWYROKKjJ4gGI6JQIrJ9iyLCx1OdJZZWjnDU7NHUDRDjCzi6RyxpEbazOObfLpNZ7nD4msLdE6eZH7+qAiNsmXrZvr7+3m0r4/Htg9w9Ytr/PvXH/z59y/Af3x+9UsGdwwLtwShRJYh6bvGvlp9N60D+6nUasKqxbSEpKZ18oUCqpZGVVOCw6M9Nc2Lz8xx6OBBlk4c56WXj5MSDF6tLlOEhd8umvv247MKJSw7JwFYAt4WFgZWvihcXXKFIna+0AspI2XYFsl0hrQg6Z7xdgmuPU1cMWyMjVEqV/HptiPM7B74hLBQhIlhd03KGDkHq1hGl7XrjVEf39sLolCukXM8imVJPe9iSmVMCS8rDLvpxCSASMrEscNER8K88967fHX7Ore+u8tvv/7O5c+ucOH9i/z04w9sbGzwz8OHXPrwI4KRKIqioAmaYDBIUtO7gpKSkiJZavDk4znKMvLr597m6zvfcOPmLe7eu8/Hlz/ljTfPc/PGt6yvr/PzgwdcuHhJ7iXlU9joelbeZI68TPM/0daVA+bTPIwAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/b95e29677cb3c79ceb36176372272f18/87706/homepage.png","srcSet":"/static/b95e29677cb3c79ceb36176372272f18/f80f8/homepage.png 320w,\n/static/b95e29677cb3c79ceb36176372272f18/9a63f/homepage.png 640w,\n/static/b95e29677cb3c79ceb36176372272f18/87706/homepage.png 1280w","sizes":"(min-width: 1280px) 1280px, 100vw"},"sources":[{"srcSet":"/static/b95e29677cb3c79ceb36176372272f18/c0bcc/homepage.webp 320w,\n/static/b95e29677cb3c79ceb36176372272f18/17574/homepage.webp 640w,\n/static/b95e29677cb3c79ceb36176372272f18/71d4d/homepage.webp 1280w","type":"image/webp","sizes":"(min-width: 1280px) 1280px, 100vw"}]},"width":1280,"height":720}}},"date":"December 2021"}}},{"node":{"id":"a9f19df4-0623-5e91-a9e1-307d9c208b7f","frontmatter":{"languages":["cpp"],"priority":32,"dependencies":[],"slug":"bwinf_39_round2","link":"https://github.com/christopher-besch/bwinf_39_round2","description":"Coding Competition.","title":"BwInf 39 Round 2","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABK0lEQVR42lVS7ZKDIAzk/Z+wdlqvM53pFeupBcKHELxALOftj8y6bpIFFdsB3vt5nrXSAPCuADBMdAUi7tacqQjmWJFSrmIzZMRMItGDgqk6SzM/c9Ns9GLfbVY1b9MyYXAHcYuI8zRuGcVfEnqdUWpJ9RggWrvKn/I2YQuclneclEgptUhUn1r66I/N2fssB/wY9jVgk3yV2E0NKUgjOWHzgVNGlc37mupdxzEpEG0n+Z9q9MmzwqIL8akHOki7rXI1AIsa9wtzzllrocDywcjEojGGSAkVgquwFeCs875cGHxAX3JdV05YJllLCvXzL/Bd8Xg8hmG43+9SSkFqjJEqzWZC/cSJUDMpzFmk2nSaLr4q+r6/3W6XClbO5/PpdLr8R7N1XXe9Xn8B22Z9MJvbQvYAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/19bb00250071e5e6256839013240dd1f/721bf/bwinf_39_round2.png","srcSet":"/static/19bb00250071e5e6256839013240dd1f/822d2/bwinf_39_round2.png 211w,\n/static/19bb00250071e5e6256839013240dd1f/7f025/bwinf_39_round2.png 422w,\n/static/19bb00250071e5e6256839013240dd1f/721bf/bwinf_39_round2.png 843w","sizes":"(min-width: 843px) 843px, 100vw"},"sources":[{"srcSet":"/static/19bb00250071e5e6256839013240dd1f/36c97/bwinf_39_round2.webp 211w,\n/static/19bb00250071e5e6256839013240dd1f/ca09e/bwinf_39_round2.webp 422w,\n/static/19bb00250071e5e6256839013240dd1f/f5388/bwinf_39_round2.webp 843w","type":"image/webp","sizes":"(min-width: 843px) 843px, 100vw"}]},"width":843,"height":474}}},"date":"December 2020"}}},{"node":{"id":"a8c27062-4837-548b-a7bd-68445362f3c6","frontmatter":{"languages":["cpp"],"priority":32,"dependencies":[],"slug":"bwinf_40_round1","link":"https://github.com/yves147/bwinf40","description":"Coding Competition.","title":"BwInf 40 Round 1","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA/0lEQVR42m2RWQ6DQAxD5/63ZBESYmfYaaGvY5QilXwgJxPHTnDrus7zfJ5n27be+3Ec+76n4kNQpMKXhm3b7PsK4YZhmKbpOI6iKKBVVQVYloUiz+8QgGcyIjD3fS/Lkip8pAA4oshoMOB8iq8yZFrTNCVvmkZGwABSm0snsvJykVlM5DiOtbnU5JBXI7MRbVhjKHyeHsi6nwUjuIKRu67jIoC6rh2TWJ0kSRLtDJZtI/8rwyd1nAeEjTzPtRjpEUJkRiMiUwxSA4D0ezB80pFlGR240rUtmKtFOB7KrEkKIL3+Mx22M+S7soXZ/pGZpH8TRREj9Pb4V5HB4F35A+Nyfyvs76hkAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/a1ce44f6ee62cb4c329694ea10a70535/372ef/bwinf_40_round1.png","srcSet":"/static/a1ce44f6ee62cb4c329694ea10a70535/ec668/bwinf_40_round1.png 183w,\n/static/a1ce44f6ee62cb4c329694ea10a70535/d8edb/bwinf_40_round1.png 366w,\n/static/a1ce44f6ee62cb4c329694ea10a70535/372ef/bwinf_40_round1.png 731w","sizes":"(min-width: 731px) 731px, 100vw"},"sources":[{"srcSet":"/static/a1ce44f6ee62cb4c329694ea10a70535/5ba27/bwinf_40_round1.webp 183w,\n/static/a1ce44f6ee62cb4c329694ea10a70535/cd823/bwinf_40_round1.webp 366w,\n/static/a1ce44f6ee62cb4c329694ea10a70535/b87cd/bwinf_40_round1.webp 731w","type":"image/webp","sizes":"(min-width: 731px) 731px, 100vw"}]},"width":731,"height":411}}},"date":"August 2021"}}},{"node":{"id":"b20898a3-5f60-559e-bbb1-0325a0fa22e7","frontmatter":{"languages":["typescript"],"priority":32,"dependencies":["webpack"],"slug":"project_orange","link":"https://github.com/Science-Camp-Softwareentwicklung-02-22/TeamOrange","description":"Top-Down Shooter in a Week","title":"Project Orange","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAC4jAAAuIwF4pT92AAAB6klEQVR42oWSS09TURSF93neFtIHWqHUS8VEGDggYDRKWisOTAjhnVDEQDACCSFh4liLgo/SgCYSExL+A79CB8YJE3/PYp+eC1xAwmAPzt17fXetfQ4REXxJkLRcSdi2IsKheRQqr9BeriL7YAS5R+O4VZ5BsreE/OAU2u70sUZ7jZA448SAQgXcNOgtVjA38R2L01zDu3j9/AtWx/bQWDnE9ON1DPbPI5EOeZbnpbkC2PzITWqBtTkYnUUmcRc/V/bxZ/s3/u0f4W/jF+53PIG2NyBNCqQSrFOsEZeBUgp05g3CrgBBwMNBOzKZIsYeVjFRmsObF6voKQywo1YI62BJ784lEwIiDrSG8LJK2NpU2KhZvF1L49lACClSzWHnwP1QKt6XbmGYW42OUgkoyYZEDPi0RNjZIdRqhI13Eo2vBgujGpYsLDtxu9UmgFImAp3E9FEvAWdnCNt1hjHw43tC/QNhfUkhwbcYMEQJ78JotxoPOCl3tvxdyxiwUiZ82yVscuQfW1nsMXxy3A9YdpPLdiCfu3m6JxErd9YXHRojMVuVqH9SOPicxPKSRDrl9qOaQ523e9DVfc9DxLkb/X9kL9Qo5DXCUHEM7R9tVIr7mi9FsUi7F3E9MIoifPOiAx+dYZHIQdUVwGO8DxRGOMZEcAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/bd189e0525155225c9b2b33a04628548/a7193/project_orange.png","srcSet":"/static/bd189e0525155225c9b2b33a04628548/c9e85/project_orange.png 367w,\n/static/bd189e0525155225c9b2b33a04628548/8bc6d/project_orange.png 735w,\n/static/bd189e0525155225c9b2b33a04628548/a7193/project_orange.png 1469w","sizes":"(min-width: 1469px) 1469px, 100vw"},"sources":[{"srcSet":"/static/bd189e0525155225c9b2b33a04628548/0b8bd/project_orange.webp 367w,\n/static/bd189e0525155225c9b2b33a04628548/0fe8f/project_orange.webp 735w,\n/static/bd189e0525155225c9b2b33a04628548/1f94c/project_orange.webp 1469w","type":"image/webp","sizes":"(min-width: 1469px) 1469px, 100vw"}]},"width":1469,"height":826}}},"date":"February 2022"}}},{"node":{"id":"406da497-60f2-5a90-aed2-d65c3e5f0e54","frontmatter":{"languages":["typescript"],"priority":32,"dependencies":["gatsby"],"slug":"quote_rater","link":"https://github.com/christopher-besch/quote_rater","description":"Rate Quotes to Order them.","title":"Quote Rater","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB30lEQVR42m2QfWvTUBjF82FUNiVpm/eb96Rt0jXp2oQ0SZOmrd262Y5uOFT0jykKQ0T9Rxm+bus6t0zoN5plhdLv4XWKjHXw4+HAPee5hwdRdau9vuFFrbC5stbbWnZr9zu91Qf9TrcPp2V7BFBITiGAPA8iZZf6D590elsw093cdoOGZfvttY1uf7vT29QtB2clTskDOc9KuWsgvGrIuSJ84xSdEbMwaXvRshOUbL/kBJVq6Ph16GEETVANXtGvguhmZansOkFcqUaw87f9wfn5r9lsNh6PLy4m0+l0MpnsvnknaAVY4Vp/5PGznUdPdzSjlCuWDcvWCqXnL3eTn6P9wyFcdHj0A87jkzN4FIzkKF6F+f8gL169hih5EzZHSS5NC9CEEgBqjOJR4lITIMNIV2P/wqbtBXE7bK46fqwalpw3xWwBVvrT8NLx97ebr/32/YfkbHQ0PD1NRsPjZDBMDgYne5++f9z78vnrQb21fg8HtJCleG0exCy7tXrT9SPHC6u1uBrEXq3hhY0gakWNFU0vpkiwiBELKD4PgmboNMWmSYDhUIAUwWYogOJ0imRTBEOyAgXEO3ex24voPAhO80BQaE5iBYXhZU7SgKjSnMjLGivIUMMVtxbQG/kNQbvKNyMkz3AAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/14b1f3f938711f94880e5b0952b6d916/fec1d/quote_rater.png","srcSet":"/static/14b1f3f938711f94880e5b0952b6d916/4a3eb/quote_rater.png 181w,\n/static/14b1f3f938711f94880e5b0952b6d916/f9f2a/quote_rater.png 361w,\n/static/14b1f3f938711f94880e5b0952b6d916/fec1d/quote_rater.png 722w","sizes":"(min-width: 722px) 722px, 100vw"},"sources":[{"srcSet":"/static/14b1f3f938711f94880e5b0952b6d916/f6540/quote_rater.webp 181w,\n/static/14b1f3f938711f94880e5b0952b6d916/9a7e4/quote_rater.webp 361w,\n/static/14b1f3f938711f94880e5b0952b6d916/ca151/quote_rater.webp 722w","type":"image/webp","sizes":"(min-width: 722px) 722px, 100vw"}]},"width":722,"height":406}}},"date":"January 2022"}}},{"node":{"id":"5174106e-4bb8-5300-b455-253fb3796a88","frontmatter":{"languages":["python"],"priority":33,"dependencies":[],"slug":"bwinf_39_round1","link":"https://github.com/christopher-besch/bwinf_39_round1","description":"Coding Competition.","title":"BwInf 39 Round 1","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA/ElEQVR42m2S1w7DMAwD+/+fGWTD2c5ePZitmwbRE0vpTMX163SVZVkYhnVdx3EcRVFVVYggCHCSJEEYYxiglaYprW3boF6Cp2nq+x6rLMu2bXGMq33f4fM81zSHNk2DOI7jB6/rCs+EtXYcR3rDMCBwEJiCCeDnHZ7nmQY5HIzAQXRdxxCiKApamDjq/sHLspBMPmkIegqBQfAhPpmBB1hLsqEWAyAHeHDFuUpm4A6TRsPDPhmHQ6/JD9/sYS0mGEGydSV4dHV+6wNj8TdoSbVJ46pwtKpgxMOFcduagETrFBwl+7Wfb5tR/g8sHoYeCW9DybQQgnlC10fyBjUMf1U31Al4AAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/95e492f6b8b078f6280ffcb9c31a7eb2/ee310/bwinf_39_round1.png","srcSet":"/static/95e492f6b8b078f6280ffcb9c31a7eb2/27103/bwinf_39_round1.png 189w,\n/static/95e492f6b8b078f6280ffcb9c31a7eb2/48b82/bwinf_39_round1.png 377w,\n/static/95e492f6b8b078f6280ffcb9c31a7eb2/ee310/bwinf_39_round1.png 754w","sizes":"(min-width: 754px) 754px, 100vw"},"sources":[{"srcSet":"/static/95e492f6b8b078f6280ffcb9c31a7eb2/d03cf/bwinf_39_round1.webp 189w,\n/static/95e492f6b8b078f6280ffcb9c31a7eb2/c7b47/bwinf_39_round1.webp 377w,\n/static/95e492f6b8b078f6280ffcb9c31a7eb2/ac176/bwinf_39_round1.webp 754w","type":"image/webp","sizes":"(min-width: 754px) 754px, 100vw"}]},"width":754,"height":425}}},"date":"August 2020"}}},{"node":{"id":"c573109b-9a4d-501e-b0cd-91f7808e1288","frontmatter":{"languages":[],"priority":34,"dependencies":["blender"],"slug":"blender_models","link":"https://github.com/christopher-besch/blender_models","description":"Amateur 3D Models created with Blender.","title":"Blender Models","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABvklEQVR42m2QW4/aMBCF82/60oe+VKpUlS1ll9KmkBuEXEhiezyesEBCEki4/Pk6tNA+rPRpbNnnzPjYOLRd253a01nT3Wq/uVy666W7nNtLf6g5t9drfTrjvma7tr3pu7NRNYfmcKwPR12burkth5qKihcdr7tM0zTpnp786N2Av/8afzHL11KPbJrW2O6KXVlWalPGagvrel1UsBZmmI7mYGW5x7e/wmoQ0kdz/mHIP5np558UQ1HVu6I0JCpFRDHb2VBYSB7kHlMvAQ3CfBjDLJATm/9wkmmgvqfpLFpZIcuEojVSbgiQUqjNQlRzWI9X23FWmbD/JooXUbg8WSxTxw48Z/w89oe2P3JiK0SVg1QaAwD18E2cH91NbnHwmHSZsFOYRDjx0QqFE2IQOtPpfDKLnheRF0qptEVjgEQg9ZrkhUuJv4qDOMnSjHEpEDPodUQyTbjtZnZAU8aCDDlKpRCxN+seCEokgoEOgahII5FkX/sJgJgzgphLMwndpUwAif5O/qPQSXrDHfwf3U4Sm65olPhPFo+4/i0pSZvVG+qH54F+2jJlbiIjeBwaOtXb6jvqjs4JOmr+7+o3UgD/d1vX2VsAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/fec5ea1ede618e8a5b9b43714d665ecb/82514/blender_models.png","srcSet":"/static/fec5ea1ede618e8a5b9b43714d665ecb/aa5e8/blender_models.png 353w,\n/static/fec5ea1ede618e8a5b9b43714d665ecb/0abdc/blender_models.png 706w,\n/static/fec5ea1ede618e8a5b9b43714d665ecb/82514/blender_models.png 1411w","sizes":"(min-width: 1411px) 1411px, 100vw"},"sources":[{"srcSet":"/static/fec5ea1ede618e8a5b9b43714d665ecb/d1a36/blender_models.webp 353w,\n/static/fec5ea1ede618e8a5b9b43714d665ecb/76822/blender_models.webp 706w,\n/static/fec5ea1ede618e8a5b9b43714d665ecb/8cbe2/blender_models.webp 1411w","type":"image/webp","sizes":"(min-width: 1411px) 1411px, 100vw"}]},"width":1411,"height":794}}},"date":"May 2020"}}},{"node":{"id":"a0437b0a-4bd1-5136-95bc-f8347a2c6433","frontmatter":{"languages":["java"],"priority":35,"dependencies":[],"slug":"java_encryption","link":"https://github.com/christopher-besch/java_encryption","description":"A Funky Encryption Algorithm no one should ever use.","title":"Java Encryption","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABuUlEQVR42lVSCW6DMBDk/39r7kLShIbDHL7tYJvT0IUqqjrCaD2rYbwegrZtuRBcSiEl45xxoZRaGaWk1vKlmZCUca0VY4xSKqDFOcEYhEFrXYsQPLqqZJ6XSSIQavJ8QmgsirFAA2wRkgiZ18uPg59n7+cJ1jwHjBCx2/VhKM9nejx2YciezyZNxufT3G5D/K2+vtjjQaMovZwdwYuUngtP2dR1wSiE+9j1l4vb79XpqC+XKo5tUbSMaUKclA2jnrFBiJfS4Lb8wvsFnCchqsNxuN/Bs4mi/nRihwP4ZJ+f9Hp1j7t9PJrbra9rV9cjrmsYAZNVD+JFKbHft2HUxTErCo+xwUQQYssSZ/lIyEhpj3EvJS2KrqomQiZrfw8QLNa6LOvzfClLnSZwT64sDCW9sVLp0VhvzNQ0s2sHu9ZL1y5vBM45CEmCP2SzhUQoBWJ7r1sIjAmhtKac15Ra5/7EsIZhgGy1WpOEACVcIXxRrIGvmXPedR2FQazdJp3/iYGNouh6vX5vgCJJkizL0jQNwzCO4zzPoQYSirIsm6b5J66qCnrwA0Eb/O0G8DfGtG8AYza498l/ABSvZSyj/dM1AAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/3d1330b24531a344824d900190760ca4/b027b/java_encryption.png","srcSet":"/static/3d1330b24531a344824d900190760ca4/1f596/java_encryption.png 152w,\n/static/3d1330b24531a344824d900190760ca4/f6b65/java_encryption.png 305w,\n/static/3d1330b24531a344824d900190760ca4/b027b/java_encryption.png 609w","sizes":"(min-width: 609px) 609px, 100vw"},"sources":[{"srcSet":"/static/3d1330b24531a344824d900190760ca4/c4b59/java_encryption.webp 152w,\n/static/3d1330b24531a344824d900190760ca4/b29a5/java_encryption.webp 305w,\n/static/3d1330b24531a344824d900190760ca4/26613/java_encryption.webp 609w","type":"image/webp","sizes":"(min-width: 609px) 609px, 100vw"}]},"width":609,"height":342}}},"date":"February 2021"}}},{"node":{"id":"075a429f-cef7-5042-89f2-88593af6cc5f","frontmatter":{"languages":["java"],"priority":35,"dependencies":["sqllite","spark","maven"],"slug":"social_blog","link":"https://github.com/pascal-kuschkowitz/Inf-Proj-ProductDev","description":"A little School Project using SQLite and Java.","title":"Social Blog","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA+0lEQVR42pWS626DMAyFef+nW7dSaZU29q8jCSThEgIFzux0kSqtkM6SJSu2D/6MM2MstDHo3QA/jsEH72+xH8N77xzcMGC6XpOe4dccNTVNA60N2rYLcdd1+K9l67qGoBQCxzzH2zHHy+EV+emEj88CMf+0YKqABaM/k8vuk0pVkFIRak/YbcCODcuyUE7CWPtnHZuC3CCERK01iSvUdY1b7Yp5nnG5fEPSu6a8JdGk4BYWT8e+t5LHE9LXGdkSFp9TLIyiZSkCMuNyzUintTsh71BVVUBlrPvCaZro7x/wfj6jKL6CoKd73RRMGU/Ioo/QdwX3ziS1b7YfJ4ZfcmYkdp8AAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/e562f950599e1539c8904b96c2ab2241/87706/social_blog.png","srcSet":"/static/e562f950599e1539c8904b96c2ab2241/f80f8/social_blog.png 320w,\n/static/e562f950599e1539c8904b96c2ab2241/9a63f/social_blog.png 640w,\n/static/e562f950599e1539c8904b96c2ab2241/87706/social_blog.png 1280w","sizes":"(min-width: 1280px) 1280px, 100vw"},"sources":[{"srcSet":"/static/e562f950599e1539c8904b96c2ab2241/c0bcc/social_blog.webp 320w,\n/static/e562f950599e1539c8904b96c2ab2241/17574/social_blog.webp 640w,\n/static/e562f950599e1539c8904b96c2ab2241/71d4d/social_blog.webp 1280w","type":"image/webp","sizes":"(min-width: 1280px) 1280px, 100vw"}]},"width":1280,"height":720}}},"date":"October 2020"}}},{"node":{"id":"be675c7f-31af-5837-b780-07eff6d95a0d","frontmatter":{"languages":["python"],"priority":41,"dependencies":[],"slug":"bwinf_37_round1","link":"https://github.com/christopher-besch/bwinf_37_round1","description":"Coding Competition.","title":"BwInf 37 Round 1","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABRUlEQVR42k1SjXrCMAjsM5i0QIA2qTr95vu/344k63bVGgwHx8+iTG23dlhrB9MmIkyE77quuWO7QPEA0yJa4ORmrmpF3Eprre4wy0VGuNKhRfEp04KhS05Jhb8/n7PW6vp6v9+vFxPfbreUcsqZiItMMLOwDBOBFsRGCuENUhHZ3SU8NnNXZhS173utqMysaD2qKf5mRAc/yEhuWh5nq1ashOBRvNCGA1iIqCE7QiNtgqQgpSDjiCa50JoTvNGKW0fITrm3hriDopeQyKMdy/gBz5nurX4978/7ibYh8bzqzF5qGYd4i0DgJKfOr8dx1OYqiII60SBoAyeaXApo60BexywmOeaZ86Pu1c15W6OkfI1qTAhq6V8JwCTDG1JON6Utir2o4/YX2I1r/n+Zkbbt6KlifzB9iLw8YkmwGDIXA/zr6ge8Pz5cfrC+QAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/014908da94e0813ede327942eebbcc65/9bad6/bwinf_37_round1.png","srcSet":"/static/014908da94e0813ede327942eebbcc65/ced49/bwinf_37_round1.png 171w,\n/static/014908da94e0813ede327942eebbcc65/72dd6/bwinf_37_round1.png 343w,\n/static/014908da94e0813ede327942eebbcc65/9bad6/bwinf_37_round1.png 685w","sizes":"(min-width: 685px) 685px, 100vw"},"sources":[{"srcSet":"/static/014908da94e0813ede327942eebbcc65/8a4d2/bwinf_37_round1.webp 171w,\n/static/014908da94e0813ede327942eebbcc65/e31ae/bwinf_37_round1.webp 343w,\n/static/014908da94e0813ede327942eebbcc65/24a56/bwinf_37_round1.webp 685w","type":"image/webp","sizes":"(min-width: 685px) 685px, 100vw"}]},"width":685,"height":385}}},"date":"August 2018"}}},{"node":{"id":"a546ebe5-dfbb-5cba-a3cd-d1a5d959e7c5","frontmatter":{"languages":["java"],"priority":41,"dependencies":[],"slug":"java_sorting_algorithms","link":"https://github.com/christopher-besch/sorting_algorithms","description":"Example Implementation of Quick Sort.","title":"Java Quick Sort","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABKElEQVR42oVRi27DIAzkHwrEBD+ANOmy/f//7SBJu0qTerIcY8X2+eyWgVJKa1ar1KKmOWcKIfhPcMIsOXPmeZ5jiKEbyuBCBKY4Af0T/wK5XsyJqikR4U0poQXiNAJkwoVr2BsdRzGYgTA6iKo9gQzY3wDvh/uPNlguprUUFeFMmEcU4efUA2FQQJJQfhudrqC3c6B0N11auwNNliamcy1cK1Qg1VkFlpi7IQMte5wJmzv0QNVj21q1WgRe8vmfDy90JeMVx259MlQ0zlBoaBoh3JAzDKXjh1OhDPJAKeWMC2OymZiBtqrysaT3/tr2zRzGywHmUiA4QyfwOI26JzpjsBvPeGQcuq7ruu/7Y1t/vtf9a9nWCiulE8HmiV5dUIxDIBi3mH4ByQJAIObWcLEAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/a0a37e44a5b2abd8a730c618e8063a33/2a75c/java_quick_sort.png","srcSet":"/static/a0a37e44a5b2abd8a730c618e8063a33/0dbce/java_quick_sort.png 257w,\n/static/a0a37e44a5b2abd8a730c618e8063a33/12c30/java_quick_sort.png 513w,\n/static/a0a37e44a5b2abd8a730c618e8063a33/2a75c/java_quick_sort.png 1026w","sizes":"(min-width: 1026px) 1026px, 100vw"},"sources":[{"srcSet":"/static/a0a37e44a5b2abd8a730c618e8063a33/e43da/java_quick_sort.webp 257w,\n/static/a0a37e44a5b2abd8a730c618e8063a33/fffe3/java_quick_sort.webp 513w,\n/static/a0a37e44a5b2abd8a730c618e8063a33/51e4d/java_quick_sort.webp 1026w","type":"image/webp","sizes":"(min-width: 1026px) 1026px, 100vw"}]},"width":1026,"height":577}}},"date":"September 2020"}}},{"node":{"id":"a43853c3-0c86-5519-a03f-2a6011a3509c","frontmatter":{"languages":["python"],"priority":42,"dependencies":[],"slug":"manim","link":"https://www.manim.community","description":"A community maintained Python library for creating mathematical animations.","title":"Manim","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAB2klEQVR42q2TX09TQRDF7+fTxKifwAde8MkHjZpQElNRqNCagiZiajQkjQah1UraWiolSLFCWyy2irVAubf/7m1vpdX4+HN3oUoIJmp8ONmd2d0zM2dmtWZ1l/8Jza4bfDGrymjVdLWXvqMXrUr5zwi3Nwvks2uKzDR2eJ9ZpVz8oGxJ0kMvqLwjIX12Xad9gJ+EksDjGhYkH9lIp7jjcVPM5/jWthRJt9Vgz6rxbvUN7UaFr3aDbrOuqtC3SuyW9mEa+xVoemmTwBM/i7EIiViYyPMAeREktZQQJCtEQ0G1n/ZPsTgf5eVciHg4RCGbweGY5lzfJH39PnLZAh3LQPtc2CC5EFcPkom4IpYkg1evcFtk7hwcYMI9infsFmPDNxi57mTIMcD45DgXXVOcOOPm5Gk36ZWMqKaKlk0lef0qJiKuUVhPEwkFCD+bxf/wAXOBpwIzKmu5SnteZOh7dJ8Ld53cjPs4P3SPs6dcvPWO0jF1tJ7oUp+e6LIhHaGT9Ekde6vdMPjesljILXNpxsvl2Qn88SDrnhGK1/ox00tovxsLKfLhLiscnNX0LYKpKI+XX6CXP9Gt7dCsiM4b278I/waygr26yFrArhmYh+fwX3+EVS0fO+w/AIDi+spP065nAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/131d488121e2764ced8229bd101b9001/85cff/manim.png","srcSet":"/static/131d488121e2764ced8229bd101b9001/a25bb/manim.png 139w,\n/static/131d488121e2764ced8229bd101b9001/3035b/manim.png 279w,\n/static/131d488121e2764ced8229bd101b9001/85cff/manim.png 557w","sizes":"(min-width: 557px) 557px, 100vw"},"sources":[{"srcSet":"/static/131d488121e2764ced8229bd101b9001/082a1/manim.webp 139w,\n/static/131d488121e2764ced8229bd101b9001/0eb14/manim.webp 279w,\n/static/131d488121e2764ced8229bd101b9001/d823f/manim.webp 557w","type":"image/webp","sizes":"(min-width: 557px) 557px, 100vw"}]},"width":557,"height":313}}},"date":"September 2021"}}}]}},"pageContext":{}},"staticQueryHashes":["1995789189","2480137602"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-projects-tsx","path":"/projects/","result":{"data":{"allMdx":{"edges":[{"node":{"id":"2f5cbcb4-8ca6-5d9c-9109-d52f8a436af1","frontmatter":{"languages":["python","typescript"],"priority":0,"dependencies":["bootstrap","flask","webpack"],"slug":"manim_editor","link":"https://github.com/ManimCommunity/manim_editor","description":"Web Presenter for Mathematical Animations using Manim.","title":"Manim Editor","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAACiElEQVR42pWT20tUURTGj3O8zXgZHS9NjZQ6Q0I++ydUL4G+9ZqBU0ia0cUgydGUHgSFelGUniRKKh8adDLNEJ2ZwC5DZYYimKY5ozkXnZsz/trnBFHQQy1YrL0X3/r2t/beS9rZ2SUWixEOR9QY39vjXywRF9joLvFYRNQk1FwyuY/U2dnJwMAAjY2NVNfU0NDYwK32dtpsNlpbb6qxzdbK9eYWrlxtxmq10tR0kQf2Ke7ef8G9RxO8nHbj9wdIJBJIdrudUYcDi8WCJElcu3yJ969fMTXuYGbyOROjdtzOSR47JujuuK1isnWZ3HnymQ57gr6xDUaejTMyNsH2th/JJk7v7umhqqqKjIxMTp44zoX685ytPYO1rk7EWurOWbHW13G6+hT5+QZMJhMfP3jwf/cS9G8RCoUIBAMERZSGh4dRVJrNZvV0jUaDlJJCrqEQvSiWZVnsNaSkppEi8gpGp9OxuLio3ncotPPH3Ur9/f0MDg7+IpTlVDTCS0rLOFZZiV6vJztXT7pWR6qsUTFarZY3b98RjcbVNtfW1lVi5VGlrq4u+vr6KDdbSBPgwwVZ5OTpMRwqoaTcgvFIGQdLzeQIxdn6PLIyZKFQy6f5eVWRQrK6+pWVldWfLT8cGuKpaPloRQW6dBmLqZBioxG9wUB+QYGqzlBQSNEBI0Uin5eTRXFxMQsLC+yJliORiEq4vPyFQCCI1NJyg97eXubm5piZcTLtdOF0OnG5XLjdwkVU1krup7uYnZ3F6/Ph9frY3Nxi/duGuk4mk0gej4elpSX+15RWFYKE8HA4rCrd3xcfW5GtfMh4PK6CfvdoNEowGMQf3GFjO4bPLyYqIiZETIlS/Df7AQM0eSSgdwjeAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/512c236dd73df7d96875dc50f7db59b9/87706/manim_editor.png","srcSet":"/static/512c236dd73df7d96875dc50f7db59b9/f80f8/manim_editor.png 320w,\n/static/512c236dd73df7d96875dc50f7db59b9/9a63f/manim_editor.png 640w,\n/static/512c236dd73df7d96875dc50f7db59b9/87706/manim_editor.png 1280w","sizes":"(min-width: 1280px) 1280px, 100vw"},"sources":[{"srcSet":"/static/512c236dd73df7d96875dc50f7db59b9/c0bcc/manim_editor.webp 320w,\n/static/512c236dd73df7d96875dc50f7db59b9/17574/manim_editor.webp 640w,\n/static/512c236dd73df7d96875dc50f7db59b9/71d4d/manim_editor.webp 1280w","type":"image/webp","sizes":"(min-width: 1280px) 1280px, 100vw"}]},"width":1280,"height":720}}},"date":"September 2021"}}},{"node":{"id":"b82d984e-ae2a-59a5-b339-8b2fbb2a5816","frontmatter":{"languages":["cpp"],"priority":0,"dependencies":[],"slug":"visualizations","link":"https://github.com/christopher-besch/visualizations","description":"Visualize Graphs with Godot and C++.","title":"Visualizations","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABfElEQVR42o2T2Y6jMBRE+89GirJhYwwYLxACZFFWRZP/fzkDfhl1JzPdDyVZSD5U3br+SNOUF0mJ1hprLW3bRh0OB+q6xnuPUoq390Z9fP2gUkWSCoqqZLtpCSHQ9z2Px4Pr9UrTNGy3W+T40x8BJ610wrxKED7DV45qdDoMQ3T5fD4jcHIrhPg/UCqJSnKaX5qNSDCuoWu3lKaM8Xe7HbfbjfP5zH6/xxjzAv0MHGPYyqJtji1HpZ65FwiXoYzGlIbL5cLxeIx65/IzMJUUqsCaQDjWZEEjy3GmeYqrPaYwdF3H6XTifr/H4r7O8iVyttYMs4LjUmDynGpfs8wTFlaQZDJGn2Y5FTWdv3GoyMSK3QjbZS2DdPwuz1QLi1t7Vk6OBVUURRGLebc+Ly1LlaKTgqoIdEWP8RW9cXTKE+YBbx0++LiP37b8dxclM7Nms5iROEUYC+lXmrXMSG0WodO8f7yHESoVenSw1GtM43BZQC81qywhFfKfL+UPn0urwPWCA3kAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/3f978993862ff0e513124ce977ea3ad4/dfdb8/visualizations.png","srcSet":"/static/3f978993862ff0e513124ce977ea3ad4/1d92b/visualizations.png 438w,\n/static/3f978993862ff0e513124ce977ea3ad4/27093/visualizations.png 875w,\n/static/3f978993862ff0e513124ce977ea3ad4/dfdb8/visualizations.png 1750w","sizes":"(min-width: 1750px) 1750px, 100vw"},"sources":[{"srcSet":"/static/3f978993862ff0e513124ce977ea3ad4/0e056/visualizations.webp 438w,\n/static/3f978993862ff0e513124ce977ea3ad4/4a6ac/visualizations.webp 875w,\n/static/3f978993862ff0e513124ce977ea3ad4/ae820/visualizations.webp 1750w","type":"image/webp","sizes":"(min-width: 1750px) 1750px, 100vw"}]},"width":1750,"height":984}}},"date":"January 2023"}}},{"node":{"id":"23f69708-bb7b-5319-ba21-f76a863596b9","frontmatter":{"languages":["typescript"],"priority":1,"dependencies":[],"slug":"compare_view","link":"https://octoframes.github.io/compare_view","description":"Blend Between Multiple Images.","title":"compare_view","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAACRElEQVR42k1T60vaYRj9/aOD9nGMfVEYaw0F8UOkhAU2NnItltv8UbgaeamFJW6IYKUyI2/l/Zq3yrzlmecBYx8e3vd93nOe55zn/f2U29tbDIdDPDw8oNlswuv1olAo4O7uDp1OB6VSCTc3NxiNRmg0Gri+vkatVpM7Yu7v74XLGgyFSQKr1aoA9Xo9AoEAer2ekEiYkZgjjg3ZfJafRb/fh8Ji2WwWqVQK8XgcBoMBPp9PwCxIYrfbFQJzVMozVXOloFkxrgotCXEKIMhsNsPlcj0BZioGg8HT/v87Nnh8fMR4PJa9KGTRZCqNQr4A69oaXG43Wq0Wrq6uJDKZjMyOVmc5KuOI6Cqfz6NYLIogZd/lgf37NqzrW1Dtm7AYXuPLhk1Uzs+/gU6ng8ViwdzcHLRaLZaWlrCwsICzszOoqgqTyQSj0QiNRoPd3V0oq7rnsK0YsKM68Gf/G/z2RXxefgfnTw8q5fK0a1PUnp6eipLyNFepVJ6UURVzVFiv16EEv77AycZLHG9/gG/LAHX5FXasb2FaWZ9ay0ixdrstc6ZFFiOZY+KL88zgSNhEca4+w8WvRRw4HYiHDpC/+I30+RE+2TbhO/ajNCVzdvwSEomEKA2Hw4hEInJOJpOyZ44NldAPHc597+Fx2NCq5TDsFDDpd+De24Pb7RECI5fLSYF0Oi1WLy8v5RyNRuUzi8Vi8upKJvQR1b825INmTIZ1jHotYDLAkceNw8NDBINB6c7V7/eLff5dbEDrtMpXpzqO5x8xAAI/640YPgAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/c5c6e9ede3805430bb6858f8f3f1fa70/1ac80/compare_view.png","srcSet":"/static/c5c6e9ede3805430bb6858f8f3f1fa70/f337a/compare_view.png 439w,\n/static/c5c6e9ede3805430bb6858f8f3f1fa70/cb3b4/compare_view.png 878w,\n/static/c5c6e9ede3805430bb6858f8f3f1fa70/1ac80/compare_view.png 1756w","sizes":"(min-width: 1756px) 1756px, 100vw"},"sources":[{"srcSet":"/static/c5c6e9ede3805430bb6858f8f3f1fa70/0e84f/compare_view.webp 439w,\n/static/c5c6e9ede3805430bb6858f8f3f1fa70/09d01/compare_view.webp 878w,\n/static/c5c6e9ede3805430bb6858f8f3f1fa70/9f143/compare_view.webp 1756w","type":"image/webp","sizes":"(min-width: 1756px) 1756px, 100vw"}]},"width":1756,"height":988}}},"date":"June 2022"}}},{"node":{"id":"3664d636-ee33-5677-8eff-aa5e8e509bdd","frontmatter":{"languages":["c"],"priority":1,"dependencies":["kicad","avr","i2c","uart","spi","make"],"slug":"mold_detect","link":"https://github.com/christopher-besch/mold_detect","description":"Warn residents of mold-friendly atmosphere and log opened windows.","title":"mold_detect","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAACV0lEQVR42iXSS2sTURQH8PkcrgSleVmEQhI7U0ubNJ0kzSSTifN+3jt35t7MM4/mYaMVtYgVKVjoUvwEfgU3rqULBXGlH8Urwn9zDvzgcM5hFKygHFzs3Dt7XJ4+Deq1nXKxIqvNIDGj3BVGvYHS02Ffc080r0ejuj3Z7ipOZ2R2mM3BTiQfveUfwFYlzAz2UbWwVTDMdpha6cxDERCG/AHPGlA0QJ/G8kUaA/ZFg2fec9svanevHt5ZcVvJMtytV4uFkm7wYWbZge5F+rHQarb3IBFkV1ScE0BUFFuTZRikNrPpsOFRpStVTfsQJwbH1kqFkusKKFFdrACieESDkQzJUHd0ksFsQdpC4/r63a+f35irevmsdt9DgkMATk12t1oqloHXz05p6ZDcwamBM8sL7e1KpcU3UAIbPPfp482f3z+YE7MrGawTyGQCSKqzu7VyqQyAOFtH8QxlCxxN/Whixbni+g5JUTzHR9396w+Xt7dfGV7aHxgdSCzLVdFY49g6xRCOzi8W83X08vV6vsqjHJJMmc5RPtfCHNpIwTHtIKY9OpDM48ViilBoOhLH/cfD6Xo8WyfPX61hAB3f9GMrniBAnhhwYIcyQLJEt02x5jSXi9z3A90c7FFc/IcnKzpweLqZJzNv9Qynp9jDiglF1e0M1GOFnOPNJcWHA707mSa+jwBS9rjaPwxEisOYiGLf9qz5MvXHuo2GJr0w6PVGrc2bm89fvjOC0uzrbRWIAFtBpNEnodu2rG40Az4ZNxqHjufjPHQDyQkkOrPmCbLdNkLQs+2/5R7sNzTUtS4AAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/e3a1143657c343da032639c75f73878a/05bc9/mold_detect.png","srcSet":"/static/e3a1143657c343da032639c75f73878a/5c8e9/mold_detect.png 230w,\n/static/e3a1143657c343da032639c75f73878a/f8232/mold_detect.png 461w,\n/static/e3a1143657c343da032639c75f73878a/05bc9/mold_detect.png 921w","sizes":"(min-width: 921px) 921px, 100vw"},"sources":[{"srcSet":"/static/e3a1143657c343da032639c75f73878a/20203/mold_detect.webp 230w,\n/static/e3a1143657c343da032639c75f73878a/0f691/mold_detect.webp 461w,\n/static/e3a1143657c343da032639c75f73878a/44573/mold_detect.webp 921w","type":"image/webp","sizes":"(min-width: 921px) 921px, 100vw"}]},"width":921,"height":518}}},"date":"November 2023"}}},{"node":{"id":"b79cb258-51bd-5f73-8335-f4e933884839","frontmatter":{"languages":["rust"],"priority":2,"dependencies":["docker","tokio"],"slug":"docker_logdna","link":"https://github.com/ibm/docker_logdna","description":"IBM: Logdna logging driver Docker plugin.","title":"docker_logdna","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABiklEQVR42pVT20rDQBTM/3+BoKIifoHgrV5eREVBH2qFVtuaa7u5J9vm0s3uuJu2tJEW9MBkIbuZc2Yyq0GWEEI90SxRv5/v/b20qqogOMekmMGnBYKJQomCcVRcgFUcY+JJuCCEwHVdTKfT7YRMEqp61iPsPZo4frFw8jqCGWSgNENMcxQzjqwUyIoKnCvwGhsJf28sJQa+j/7XJwbDPkbEQZJSSbw6s/zuty3atk5KFnE9+G4IpzdEbPuIxxQsTMGkNcqOrR7yuqNYrbUkgVIeoFYE++gO9uEthvst6DvnCB+6mDCpIggRRSHSNG0SJqGHJHBrxD6BNx7BDyKU1eJvLzwTfN5QagTNGHTDhGNboNIOxuZ+aNG0xE3HQqtt4PrdwGXbREcnSOIEOdseD0X4rRswTLNeLcuubdK8NMdZ28HFB8FVz8dpe4wumaghZGRWWVyHmpbJ6d+MBLv3Axw86TIZjkzBDNo80E0IwRvx2ARVuYyTUhjK7Mb5rB5CUxTKlnX872406wd/eVMybHQ7BwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/9d1703fede1297bd9e064aad91c4f5ad/afa5c/docker_logdna.png","srcSet":"/static/9d1703fede1297bd9e064aad91c4f5ad/2fe1e/docker_logdna.png 480w,\n/static/9d1703fede1297bd9e064aad91c4f5ad/9bec7/docker_logdna.png 960w,\n/static/9d1703fede1297bd9e064aad91c4f5ad/afa5c/docker_logdna.png 1920w","sizes":"(min-width: 1920px) 1920px, 100vw"},"sources":[{"srcSet":"/static/9d1703fede1297bd9e064aad91c4f5ad/3a3a2/docker_logdna.webp 480w,\n/static/9d1703fede1297bd9e064aad91c4f5ad/bde8a/docker_logdna.webp 960w,\n/static/9d1703fede1297bd9e064aad91c4f5ad/c512e/docker_logdna.webp 1920w","type":"image/webp","sizes":"(min-width: 1920px) 1920px, 100vw"}]},"width":1920,"height":1080}}},"date":"June 2023"}}},{"node":{"id":"66175c61-d427-5209-8362-f6e58349d320","frontmatter":{"languages":["cpp","python"],"priority":2,"dependencies":["cmake","opengl","glfw","glm","imgui","pybind11","spdlog","stb"],"slug":"maki","link":"https://github.com/christopher-besch/maki","description":"Interactive and Programmatic Animation Development; or: How to Time Travel?","title":"Maki","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAACiElEQVR42iWSW2vaABiGcz0KK660tTFRY8xBo4mJMYmHJp1dtR3dRQ+wCxktq3XTlZpa6yHiqVaNtXauDAbrrgorbDA6xm7GOhi7GmPsH+yvdJHBd/u8z/vxfQDHCpI05/eHKDdNcwIVkCKzsXR69+le8nE6lXiys5dXG8lcPL6MMiGUjcIucdLhm7aRFBsBgkEJJ92Ul+Z53shhJSWTSvc7zX6tViv3W9Xmqd4aVkpqSqUEBWNlmlc2t7TkdjGVLAAulwuGIAeKghCMuujYg/VmK1+s5jVVG5a0Xv6odVActLP1Wl1ZXGKEsCjPvz7//PX679WHXwBJklYr7ECxGdhOM7S6nSu3u1o5Vxoc1rS8tqN3CvrO85bW1e+vrDCi7OGlzWT26uPPt5fXAIbhDgdCUl4zhC2txQ67xf1aTS9oJycvCrl+/Vm529RLWiPb6K0+2vAGwmxQjkQXz998evf+B4DjuNVqJUjyzvRMIrHa6fayucJxUdUrnWauXWp09WZ+qFfPTtupzDYXjgjyXW8gtLvXvrj4YpgxBEFYliXc7oWFWGa/qma0w3rlqF/RWt2jRr3R66jF8sbWQXw5BWFzpE92+/no4lq5cjIyWywWo7wZtJhByGJHUAxnWY4PCNH5uBIKS1LILwWzebJ9jPQG9pWHPpKNMGLIJ0ZGsNPpZDnO7aUpj8eJojZjDRg2m80ETkxNTo2N3UII/7fv0zc3gDGvzu0otSAqChdSABRFDbPBz0CwzY4YIAiCBmkymXAMt4DQxMQ4iIiDM+w/PHyJOKh7wqw8ghmGcVEuhvNRHsqJYUaKcTyCIIxGHMdBIGQyjdswdj0h/v5z+/jUKcfCPuMjwyPzP+v1y0hjTk+xAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/ba4ee1e4d545c4df94a90630e0d8f20a/afa5c/maki2.png","srcSet":"/static/ba4ee1e4d545c4df94a90630e0d8f20a/2fe1e/maki2.png 480w,\n/static/ba4ee1e4d545c4df94a90630e0d8f20a/9bec7/maki2.png 960w,\n/static/ba4ee1e4d545c4df94a90630e0d8f20a/afa5c/maki2.png 1920w","sizes":"(min-width: 1920px) 1920px, 100vw"},"sources":[{"srcSet":"/static/ba4ee1e4d545c4df94a90630e0d8f20a/3a3a2/maki2.webp 480w,\n/static/ba4ee1e4d545c4df94a90630e0d8f20a/bde8a/maki2.webp 960w,\n/static/ba4ee1e4d545c4df94a90630e0d8f20a/c512e/maki2.webp 1920w","type":"image/webp","sizes":"(min-width: 1920px) 1920px, 100vw"}]},"width":1920,"height":1080}}},"date":"December 2021"}}},{"node":{"id":"b804b240-53c3-5a0b-8fb3-c9c6d885fb00","frontmatter":{"languages":["cpp"],"priority":2,"dependencies":["cmake","armadillo","nlohmann_json","spdlog"],"slug":"neural_network","link":"https://github.com/christopher-besch/neural_network","description":"Experimental Deep-Learning Framework.","title":"Neural Network","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABJUlEQVR42n2Q25KDIBBEGYIoYlaCKDcjlc3//+M2ick+5NI1NdWWc2ZaGes6GgZKiZaFLwvNM61r7VqTUrW0ZkKwjxKCAwihdvDW1jIGS/cBov+CON9NfdW2vBSQtefMY+RYhCDwIZD3+7ppIufodEJnTfO43DR0PlPO6AyBQ2DjyI5H1vc1s1LscKiF8Chg8DsohFRKhiCdkylJYxpj5M+PHMfWWgH4Gf5VKaVSyrquMYTZucX7mNK9tlLwqIfBGNO27RsY2LZt55sC5D3Misr593KJMWqtp2lSCP8FRgeL6eeu6/WKXN/g+zRWYG65KT2Ez/He933/MTauYQ4rYHDBOXf3EDbiEfCIn/cWBomhnDMYwPM8w+AgYCRHEMDW2q7rXtk/KaIgNPoxJ2IAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/ffcee91a9bd7ca290169a662b05f003f/08fdf/neural_network.png","srcSet":"/static/ffcee91a9bd7ca290169a662b05f003f/8416c/neural_network.png 202w,\n/static/ffcee91a9bd7ca290169a662b05f003f/077c0/neural_network.png 405w,\n/static/ffcee91a9bd7ca290169a662b05f003f/08fdf/neural_network.png 809w","sizes":"(min-width: 809px) 809px, 100vw"},"sources":[{"srcSet":"/static/ffcee91a9bd7ca290169a662b05f003f/51e0f/neural_network.webp 202w,\n/static/ffcee91a9bd7ca290169a662b05f003f/3ea73/neural_network.webp 405w,\n/static/ffcee91a9bd7ca290169a662b05f003f/a15e1/neural_network.webp 809w","type":"image/webp","sizes":"(min-width: 809px) 809px, 100vw"}]},"width":809,"height":455}}},"date":"May 2021"}}},{"node":{"id":"273ae0c1-4f5e-52ec-82ee-934c7aa00b04","frontmatter":{"languages":["cpp"],"priority":2,"dependencies":["gcc","premake","stb"],"slug":"ray_tracer","link":"https://github.com/christopher-besch/ray_tracer","description":"Experimental Offline Ray Tracer.","title":"Ray Tracer","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAACbklEQVR42h2QXUsUUQCG52f0AUWQXRhGaHURkVCSlFEghpkm3kQq5EW56+zMmbNnznydmTkzZ77WnZ0ZdXN3tUXTLAMTIiQQoqC7IOoHdCPdddNNY/BcvDcvD+/LaXTRZFlBavX0f+2+tqPar6qLL4MkZyNMD8mzE7XcsOmELRq0bL8RpVu7X37tff/DYXOJ+tndsZ2jF/8e6/7RO7Dm194E6fb//iHe/JrjtFx31fYadtgkXiNafbH38/f+twNOIRXDJk9m6x2XPx3p2r85VHH9p15keXHuXPeq6ySI5eVpnPEk19IlmyzGo9Ntq735+YBLa92xz2E8UwDp45nYsEobbS72jxvO89xDWRuwgvHxtrU1aE7yGz0TO+fG354dqfdPRvObnEtHTOUULAMjH+9mqslcu8syBky2YgcN228q1CtG46I6lVwY3j05+OHM6PvOMSZXDVbnoBKKcgXrKdTCsh4qZizpCxpdMViCtTB/yKBLmp5pdDm5NfX6xM13pwe3z48xNbWCJsfzSJR0gHwJmQCRklCWeA0DotkxRlShVagFkkgF4GiIhsMT7vUHzoyiKK5KYk6UAwGykuQIiImyL8iBJNgyYthMFFKTSYSNeQB9UfKA4iMrKgImqgHSI93KuKJg5FoR+QC5h2XoSsCWZaZYmWKmmMSyUZWNGOtVTBKs1zQ71axMNRLVTLi5Enw2+wiUqQBNXlSKc2V+lsCSlY9HZYqIj0lF5CkvMVjUnN4h9crDsuggO9HMjLOtO1Tl5gr3JDUDCpNUBmEPEm/k54mA6HRBxPkdDADX6xupd14NO/pql+5DHkOt+g+gtVjHbV/h3wAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/b6544f8b93634adaf6395fbe71540c0f/afa5c/ray_tracer.png","srcSet":"/static/b6544f8b93634adaf6395fbe71540c0f/2fe1e/ray_tracer.png 480w,\n/static/b6544f8b93634adaf6395fbe71540c0f/9bec7/ray_tracer.png 960w,\n/static/b6544f8b93634adaf6395fbe71540c0f/afa5c/ray_tracer.png 1920w","sizes":"(min-width: 1920px) 1920px, 100vw"},"sources":[{"srcSet":"/static/b6544f8b93634adaf6395fbe71540c0f/3a3a2/ray_tracer.webp 480w,\n/static/b6544f8b93634adaf6395fbe71540c0f/bde8a/ray_tracer.webp 960w,\n/static/b6544f8b93634adaf6395fbe71540c0f/c512e/ray_tracer.webp 1920w","type":"image/webp","sizes":"(min-width: 1920px) 1920px, 100vw"}]},"width":1920,"height":1080}}},"date":"May 2021"}}},{"node":{"id":"16731b16-54ad-5922-9979-6930ab456659","frontmatter":{"languages":["python"],"priority":2,"dependencies":[],"slug":"todd_linux","link":"https://github.com/ToddLinux/ToddLinux","description":"Experimental Source-Based Linux Distribution.","title":"Todd Linux","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABEklEQVR42nWR226EMAxEQ4Eu7AJLuN/F/3/lHjwlqlR1HizbsT1jx3VdN03Tuq7YcRxfhqIosFVVYdM0/TZkWZbnOaELaNu2aZphGEYDs8qypNl7j0PDwxDHsfsL2uhflgVyOiWhuUE/r33fv2+QRBGWYkccZJNCGG9U46NZtGjG8iTlhE+D27btOI55nsUA6rrWImJWCI834Gg09RczVPu+Qy7953lipS2AK3CqJEniX3C0MYxTQY4K6vCZAiGWEbmB0i+D+hPDdW22RTlsdCKMDJqlE9lY8sySbE2UeCcqOJFAzJHCwpyEO+lIcoTw59dXwamb+Rvak/FhcxzyYZcfZg7GMVQhnYRY8syOosj9jw98WSX8g+tLRAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/7c6e90442202143b65979ed16ebad618/f95d7/todd_linux.png","srcSet":"/static/7c6e90442202143b65979ed16ebad618/5e16b/todd_linux.png 238w,\n/static/7c6e90442202143b65979ed16ebad618/2b6c8/todd_linux.png 476w,\n/static/7c6e90442202143b65979ed16ebad618/f95d7/todd_linux.png 951w","sizes":"(min-width: 951px) 951px, 100vw"},"sources":[{"srcSet":"/static/7c6e90442202143b65979ed16ebad618/7f2c6/todd_linux.webp 238w,\n/static/7c6e90442202143b65979ed16ebad618/e6364/todd_linux.webp 476w,\n/static/7c6e90442202143b65979ed16ebad618/c84fa/todd_linux.webp 951w","type":"image/webp","sizes":"(min-width: 951px) 951px, 100vw"}]},"width":951,"height":535}}},"date":"July 2021"}}},{"node":{"id":"7d7ac55e-5c7d-5250-bf97-947d034898de","frontmatter":{"languages":[],"priority":3,"dependencies":["docker"],"slug":"docker_cron","link":"https://github.com/christopher-besch/docker_cron","description":"Scheduling container tasks with docker-compose.","title":"docker_cron","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABnUlEQVR42m1R23KjMAzlH5qEm7FBso0vYMBAkja97Uyn//9JK0i6sw+dOZyRD5J9JCX12MvzqC4Dty5lmAtNyDhBbTHf40qmTFJMCWml7sqphIS+tEJcQvsaK23BX2R3dsunnT/U8GLmdxvfsDsLE9vphn61y0d3/ZL9OWVUXEDKEdcBYg9z0LcJ5qEQ6ljCaUdaIvGxaDb+EelISB4ZFRa1rtted6NQDnSPZkAToA1VYzh63c0cnbRTrTq0o3ITB/co3t4voahNf/0Kz9/g1+H2bZdP2a1lY/O6FToUjSGrW9sMs0oRJ/9s5FwxsKIdpV/QRtURTwycclGg57IHM7LGlE0rpK/AUfx/sd5Vw+p280yGwZAi7UB52s8mrHREM5p+Vj6S/x/b5eaHrvfLO3l200u4/Gls1OEKZqBfZIp6prkQC+loCqQkx7whUM/0eCZsO71Cd6ntbOKbDFc1PDN0h7zex/vgQ9HclSQHVaDKhKS957U8FuKQiUMunlK+BZm4L+lXJLRbuQbuPWstxMDQbJPfR3rHad/zr/gLfMhafpHFCjcAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/5a5012abbd37087a66d8c181e0e2ae76/0dee1/docker_cron.png","srcSet":"/static/5a5012abbd37087a66d8c181e0e2ae76/f0aa7/docker_cron.png 188w,\n/static/5a5012abbd37087a66d8c181e0e2ae76/f9574/docker_cron.png 375w,\n/static/5a5012abbd37087a66d8c181e0e2ae76/0dee1/docker_cron.png 750w","sizes":"(min-width: 750px) 750px, 100vw"},"sources":[{"srcSet":"/static/5a5012abbd37087a66d8c181e0e2ae76/d03f4/docker_cron.webp 188w,\n/static/5a5012abbd37087a66d8c181e0e2ae76/cf250/docker_cron.webp 375w,\n/static/5a5012abbd37087a66d8c181e0e2ae76/a66aa/docker_cron.webp 750w","type":"image/webp","sizes":"(min-width: 750px) 750px, 100vw"}]},"width":750,"height":422}}},"date":"August 2022"}}},{"node":{"id":"0492067a-5e9a-537a-a914-a34ff985d7a8","frontmatter":{"languages":["typescript"],"priority":4,"dependencies":[],"slug":"lake_visualizer","link":"https://github.com/christopher-besch/lake_visualizer","description":"Interactive Problem Visualizer for the 39th BwInf, 2nd round, 3rd task.","title":"Lake Visualizer","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABbElEQVR42o2Rz0vDMBTHK/4j+p8piP+JeNGDeBHP3hQZ1ZaOgXhQtjGYE2EHhU2ra2Rrs279kSYvTX1pxzyouC+PJC/9fpKXV4NTOjNrlw9Wws1mx3XOP9z7dvR5Y87ZlW3TIFBKyd/EuTBYENBrs9Zz0szp9cYta+Y1u6F300iZXa8Hvo9wlmWM4cAz/h2MMQMnDlAUxSDwj7oHh49772yEqeeGQsgojj1CQEoMLkDjYiE8zMBJgkB3fWhvnmys7a/vWjsKoHE3HRGWsZgQIlLxejsAJlRRYFRC0BAAeZ5jMk2i49bptrVVe65hmiRYrTYpbVfUh87F8KX9pPdK/xLW39MIHUs3jos7qsUsLiZv0EqSPqblTgkLXfPcpREJK+sS+ym8MQSYS7mAlRRTUZw5PiXwJ1SWU52JvfU4x0TDuYQwE/0gp5PqLf8LUFLiew1cYNOVWo0rJQEEpQjqhiGMPVNqdVrCeIw//AubHm8gk7c5+gAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/4e6a8d52902f88b218b8f6ee5d511490/aaf42/lake_visualizer.png","srcSet":"/static/4e6a8d52902f88b218b8f6ee5d511490/822d2/lake_visualizer.png 211w,\n/static/4e6a8d52902f88b218b8f6ee5d511490/9dbfb/lake_visualizer.png 421w,\n/static/4e6a8d52902f88b218b8f6ee5d511490/aaf42/lake_visualizer.png 842w","sizes":"(min-width: 842px) 842px, 100vw"},"sources":[{"srcSet":"/static/4e6a8d52902f88b218b8f6ee5d511490/36c97/lake_visualizer.webp 211w,\n/static/4e6a8d52902f88b218b8f6ee5d511490/6fd1d/lake_visualizer.webp 421w,\n/static/4e6a8d52902f88b218b8f6ee5d511490/d6fa7/lake_visualizer.webp 842w","type":"image/webp","sizes":"(min-width: 842px) 842px, 100vw"}]},"width":842,"height":474}}},"date":"April 2021"}}},{"node":{"id":"e10fa48d-7760-559b-821d-6daaf9a541fb","frontmatter":{"languages":["cpp"],"priority":4,"dependencies":["emscripten","cmake","sdl","armadillo","spdlog"],"slug":"lynton","link":"https://github.com/christopher-besch/lynton","description":"Experimental Game Engine.","title":"Lynton","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABhUlEQVR42m1SOZIVMQzts5FBQkBAMEORDBT9be2y5Xb3h0mpIuUAxFwS9TDAD1Dk7ekt8vLm+9u7b++YRGIzLrTCh1B31qbWwg1IaEXThqKlP7Y4BkgbHA/7WF78fPnqx2tBRdZ8ow5C1cBFKlQjCt4r+7Wsk1gwJGnIkJgRdbn/+v7TXDHPZut85VqGc5NRBGZ38EBKlDFbRwtKfUAkzCwii1VTlGzVrBvTWgskg5w0jXVjzbuN0PgBWO2jBlsy8VMt2eX3kpKBCTXmsKPvZ+fNjs9r39StpYtKlRh7SRXyDOabyjMbwZ7VEyGeZiDdUXZWuyh5kVbk/+D0dhmpWjwJEqTYZfhkDBt99pRMCjfPb8DEcNVycHDTDij1izdU19nTgT75ypxdVOgv87PnU1oay0llWKj1VJpTI6CK5y0bq+fe/iBPsII1xGSrvXk03ND6GFs0IFgZbVsPdbKZDiTHov+yPtNGBzuBbIHipUOY9ZIfLJxkmO/Driw+90tmnineeP4FmLcjrLxJjGIAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/58a7108179147732c801c94288cd76d1/92a30/lynton.png","srcSet":"/static/58a7108179147732c801c94288cd76d1/0525f/lynton.png 249w,\n/static/58a7108179147732c801c94288cd76d1/a9baa/lynton.png 498w,\n/static/58a7108179147732c801c94288cd76d1/92a30/lynton.png 995w","sizes":"(min-width: 995px) 995px, 100vw"},"sources":[{"srcSet":"/static/58a7108179147732c801c94288cd76d1/ec4ed/lynton.webp 249w,\n/static/58a7108179147732c801c94288cd76d1/81a8d/lynton.webp 498w,\n/static/58a7108179147732c801c94288cd76d1/ec251/lynton.webp 995w","type":"image/webp","sizes":"(min-width: 995px) 995px, 100vw"}]},"width":995,"height":560}}},"date":"May 2021"}}},{"node":{"id":"d000ef96-1be3-5e1c-bbf9-cbfd81167f83","frontmatter":{"languages":[],"priority":5,"dependencies":["docker"],"slug":"docker_setups","link":"https://github.com/christopher-besch/docker_setups","description":"My Docker Deployments.","title":"Docker Setups","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABHElEQVR42m2S2Y6DMAxF2UFCIPZ9p2wS//99PWpS2jKTh6j4+vjaTpVt287zjKJIURRVVZU/R9f1aZqKoljXNQzDn7RlWYZhyLIsSZKyLOu69jzvBrdtS3wcx6ZpRKbUILuuo7Dv+0EQIFiW9Q3jA/N4H/xBpH/9Onmea5pm27Zpmre2SSKBzimBOWRVVVLDFo3J0Y7jQKPPb5iiSMBI8zzzg3ypUYxRKYZGV2iGYdycSej7HhuS4VmB1PgQGBksj7HJ2/f9Wts1syB/4O514IGx5c2Y3HGcq3napi9IMbnI/GybYmiu68ZxDHZbGDBWYMKW7mhNbpso30TB/v2TEMRZeOLBark/T0UleEKGaVzAdYu2IcVTcadpKtKeI4QrwQQ/6pcAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/404869fb5128fea2f3cd631ada4dcc63/d0df2/docker_setups.png","srcSet":"/static/404869fb5128fea2f3cd631ada4dcc63/f0aa7/docker_setups.png 188w,\n/static/404869fb5128fea2f3cd631ada4dcc63/f9574/docker_setups.png 375w,\n/static/404869fb5128fea2f3cd631ada4dcc63/d0df2/docker_setups.png 750w","sizes":"(min-width: 750px) 750px, 100vw"},"sources":[{"srcSet":"/static/404869fb5128fea2f3cd631ada4dcc63/d03f4/docker_setups.webp 188w,\n/static/404869fb5128fea2f3cd631ada4dcc63/cf250/docker_setups.webp 375w,\n/static/404869fb5128fea2f3cd631ada4dcc63/b9516/docker_setups.webp 750w","type":"image/webp","sizes":"(min-width: 750px) 750px, 100vw"}]},"width":750,"height":421}}},"date":"July 2022"}}},{"node":{"id":"1ee8a684-1e2e-5e14-bfbb-937cac375c4b","frontmatter":{"languages":["cpp"],"priority":6,"dependencies":["gcc","premake"],"slug":"cryptography","link":"https://github.com/christopher-besch/cryptography","description":"Cryptography Cracking Tool.","title":"Cryptography","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA7UlEQVR42sWQ3Y6DIBCFEVNEWOVnpQWxxdr2/V9xTyGSJu1e7NV+EjNzmDHnSIzXelY2GuF6yqjoBeCc9y+gpZQ2b5Dtuj1uj/t2X9M1znFZljmDIoQQY6wtOO+klCCSKk3TZK3VmXEcVabWwzDgPWZKIaUkWmn11DGkjLFlH3dluus6pDDGfGWgl1sAnUjXSy8GLzt3aLsWmfHwnZr5mfCdtCacy3pZzst3xjmHCG6niMVLBS2MkDnEcAr+GE7O4w/B9usn7A4WMM0YQ1QYhh0kIlIjE+eKc81a1jbkk71fYaTh+QhCD/SPy//FD5DPGrh7pv2mAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/a2fa82a75935e0858c6e4f4033465c43/a60e4/cryptography.png","srcSet":"/static/a2fa82a75935e0858c6e4f4033465c43/13d7a/cryptography.png 253w,\n/static/a2fa82a75935e0858c6e4f4033465c43/b09f4/cryptography.png 506w,\n/static/a2fa82a75935e0858c6e4f4033465c43/a60e4/cryptography.png 1012w","sizes":"(min-width: 1012px) 1012px, 100vw"},"sources":[{"srcSet":"/static/a2fa82a75935e0858c6e4f4033465c43/69402/cryptography.webp 253w,\n/static/a2fa82a75935e0858c6e4f4033465c43/29a8e/cryptography.webp 506w,\n/static/a2fa82a75935e0858c6e4f4033465c43/3a892/cryptography.webp 1012w","type":"image/webp","sizes":"(min-width: 1012px) 1012px, 100vw"}]},"width":1012,"height":569}}},"date":"December 2020"}}},{"node":{"id":"0561a320-4e01-507c-90d8-11dc7d6fd7ff","frontmatter":{"languages":[],"priority":6,"dependencies":["docker","borg"],"slug":"docker_borg_backup","link":"https://github.com/christopher-besch/docker_borg_backup","description":"Schedule Borg Backup with Docker-Compose and docker_cron.","title":"docker_borg_backup","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABlElEQVR42l1SCY7bMAz0H1pvfEiWRN2XLZ9xtugFtP//UolkWyQFBgQpaDgjUhUvCbZRn0XfZnvb7XWnKhMZqc4EQi8QjsiEuFD11sMzqroVxDn3c5PzyP0q86HGU4TtHlfmFoi7yieWHbN1J17Ibx20XLEU7bEO0jdEIqiwDYGWKiYDEa5jpm7ZiyyRFyIrzLAf6vfMq7S7+Ysp73Y6/fbNTCf4Gckt1XUHHzefUD06XahkOuu4qbDKsIAvJh92vIKbCHjlyyDjIANTiesk7Ah24ib/JaNV8DpfUVlPt7B+Bb/F48egYjOoh/MWMeiOW8wf8W67FZdeURHAFB0XFRabd+mKHw8TF+mLCrOJK+rjoU0rKuuw4M37wIQegh984GOCMBLu0KGwGb1QGTBH5xQCllxnYTIRmCQ8r/DdnTRDDKoUu8/Cxp4ZHHvPLXomjygckpHWUPWpYUj53HLEh+26ERRSPn7Z8j7efsf9u4wbDombCQUfj8QWzes/qZ5X10Nome2Ex9hQfR+kwiX9281/P+wPEFtbXIxxW1gAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/ceaebabb03fc010dde3f8c6c76ffa5e8/02437/docker_borg_backup.png","srcSet":"/static/ceaebabb03fc010dde3f8c6c76ffa5e8/f0aa7/docker_borg_backup.png 188w,\n/static/ceaebabb03fc010dde3f8c6c76ffa5e8/5bee0/docker_borg_backup.png 375w,\n/static/ceaebabb03fc010dde3f8c6c76ffa5e8/02437/docker_borg_backup.png 750w","sizes":"(min-width: 750px) 750px, 100vw"},"sources":[{"srcSet":"/static/ceaebabb03fc010dde3f8c6c76ffa5e8/d03f4/docker_borg_backup.webp 188w,\n/static/ceaebabb03fc010dde3f8c6c76ffa5e8/1e940/docker_borg_backup.webp 375w,\n/static/ceaebabb03fc010dde3f8c6c76ffa5e8/06597/docker_borg_backup.webp 750w","type":"image/webp","sizes":"(min-width: 750px) 750px, 100vw"}]},"width":750,"height":423}}},"date":"September 2022"}}},{"node":{"id":"e330b914-530e-52a0-9f17-d9a9eda50aca","frontmatter":{"languages":[],"priority":6,"dependencies":["docker","borg"],"slug":"docker_borg_remote","link":"https://github.com/christopher-besch/docker_borg_remote","description":"Using Borg and Docker to sync Backups.","title":"docker_borg_remote","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABmUlEQVR42m1S7Y6kIBD0MVRAHZXmowEBGWdud3Z/TC7Z93+jbfTXJZdUKtUdGroqNDezw/GlP9+zCouyq8EZ7KLxJi2Ji3sGXQddf/IlTjSsV5PO6vG9uLQqsxp7XkEz5hLEw6QujLMebhUj8aQbMSLjWox+lgFzsbFgIt5NyJjuVDpqpt2XA9OOmVD8fsd0KJcbzg0XZpiDtGH/KuGR8mt3Jfp7JEGlu0diKtNHjn+yzRv1Z4VtC80EadkeZPtmy21xevPKBzEY8tlzYEJxQQy8ihNDBeNAB5oRIhwvfP8sNpJDQFx15aX6rywNdr1sW9l1su0k6Z7JejWTNbBRblBeEHZ6U4cN0JFQfsMcAYNyXrkgjSesxg8TLaV7phg7A+t74EzPC545Fe2jckn7fCZXw9PhHw2YKS2wuRHCigmHJcw6uCOBQ5PItpMWqYF7cHswm8PszeZdOcvofaGAseHCku0lPPL7O3w8dfB1bUfDbpwNfYkrudMkMK6qpiCvwMSAtD0fbP5Mz78lPhPN08sUO2HVeI39F7+eG2b9HsHVfAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/6f7e29f23524527eadcb80896a5c8f90/0dee1/docker_borg_remote.png","srcSet":"/static/6f7e29f23524527eadcb80896a5c8f90/f0aa7/docker_borg_remote.png 188w,\n/static/6f7e29f23524527eadcb80896a5c8f90/f9574/docker_borg_remote.png 375w,\n/static/6f7e29f23524527eadcb80896a5c8f90/0dee1/docker_borg_remote.png 750w","sizes":"(min-width: 750px) 750px, 100vw"},"sources":[{"srcSet":"/static/6f7e29f23524527eadcb80896a5c8f90/d03f4/docker_borg_remote.webp 188w,\n/static/6f7e29f23524527eadcb80896a5c8f90/cf250/docker_borg_remote.webp 375w,\n/static/6f7e29f23524527eadcb80896a5c8f90/a66aa/docker_borg_remote.webp 750w","type":"image/webp","sizes":"(min-width: 750px) 750px, 100vw"}]},"width":750,"height":422}}},"date":"September 2022"}}},{"node":{"id":"887dd175-8e93-5c22-ac12-3bb8ccd12b39","frontmatter":{"languages":[],"priority":6,"dependencies":["docker"],"slug":"docker_git_backup","link":"https://github.com/christopher-besch/docker_git_backup","description":"Backup all your Git repos with Borg and Docker.","title":"docker_git_backup","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABzUlEQVR42j2Q2Y7bMAxF8w9tk1iWLcvaJVKLt0wcTJp5KAr0pf//N1VmkAJXBAnyELw6OLODe0/hQ+kdYC/5HeBa8n2dP4ItQUcrnBmt4tYIb4ST3HnpaxSDO5yJVGKJ/mH0bUu3ayzF57+3tz9recP4e5svWB7z/QJL0qEYCMIvDkH5IMOBUNP1oSGyi7eu/BIO43VJ0+QCQElxSrZklzYDE7eeGy8DCADCzPGsDu0T9mxA6tYWLlRmSlXTqoboupe0mlLdUkVa1XWG9nXYdMy2VNfWoT7Ok7e3wazNGNnohtEx7ris0fZfGuyofE3qMCGfav/DQ+o7T+xC3FYZG1Ha4FLUAaQPGmDU3iasreaFveB6dufq5eQsWiJOjTqd1blRx5M8fyZf5ekoa1Lhl9SJVM/Vlcx9+jnYbDHO25zn5CNOa3YAcclpznx0fW959TLYqoFZNng9uufZbCzC37mIo4z7vEbtlApryVp5JWyq38utFKYgFowFEOpWWB8lV9iwPgwMaqRUdiMGnScTJLNeeK2XjiEbktV7S8P3H+Jp5+lFfjvJJ9wz6PvA8NrBRbtYlnnbSkSMOYY8c42Y98e8O4saQTpEWC/VkMd/7ChkfqX4eUAAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/5dd042425f348f19eb3c0f4669b4fec7/0dee1/docker_git_backup.png","srcSet":"/static/5dd042425f348f19eb3c0f4669b4fec7/f0aa7/docker_git_backup.png 188w,\n/static/5dd042425f348f19eb3c0f4669b4fec7/f9574/docker_git_backup.png 375w,\n/static/5dd042425f348f19eb3c0f4669b4fec7/0dee1/docker_git_backup.png 750w","sizes":"(min-width: 750px) 750px, 100vw"},"sources":[{"srcSet":"/static/5dd042425f348f19eb3c0f4669b4fec7/d03f4/docker_git_backup.webp 188w,\n/static/5dd042425f348f19eb3c0f4669b4fec7/cf250/docker_git_backup.webp 375w,\n/static/5dd042425f348f19eb3c0f4669b4fec7/a66aa/docker_git_backup.webp 750w","type":"image/webp","sizes":"(min-width: 750px) 750px, 100vw"}]},"width":750,"height":422}}},"date":"August 2022"}}},{"node":{"id":"da7c139f-f844-54d3-9645-f0e85a3087ec","frontmatter":{"languages":["typescript"],"priority":7,"dependencies":["firefox"],"slug":"bbb_autostatus","link":"https://github.com/christopher-besch/bbb_autostatus","description":"Firefox Extension Simulating Human Interaction in Video Conferences.","title":"BBB Autostatus","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABaklEQVR42n2S2U7DMBBF+///A4hC4QUKbwgksjoN3RLHCfGS1UnqcJMXhER7ZVn2yMczvuPFOI62Za3u78uiqKsK277rwk2w234pKbAez2thTqfAd19f1hmjpZIItU0dBn5A/JRRrRtjzFl4HI3vOcvlLf/OqrKY4LYmnrsJyGG/Ox52uOs8bEzge+unpzxLpeB93+m2CQOy/QoZjZWSw9Bfyuzan48Pq+i4321D5AHtubZjW6USF2qe4GEYQLm2ReNICY7Tum2J5wTEi6OjFPmlN6Oq6LCf4OhQSD70PZI71qfvOjQ+Sv4Nw405nSt7/Hh/u7m+grdojxD5aegeVnevL88pSxBBHD78D1dVxXkOqxhLshSeCYyiQI8FQyih+dQFfAKMX2HTNM2i0xqvhbdoDBxL4qip6zRNN5twhhNCCOcc1mitu1ntLHixwK0soQmNGZ3nhEopyrLM81xKqZQSQmCu/woHkPkHA2FuTLlOEvMAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/aaead84ab62c2fe90cf9a8f2484b0c08/59e57/bbb_autostatus.png","srcSet":"/static/aaead84ab62c2fe90cf9a8f2484b0c08/372d0/bbb_autostatus.png 136w,\n/static/aaead84ab62c2fe90cf9a8f2484b0c08/d8348/bbb_autostatus.png 271w,\n/static/aaead84ab62c2fe90cf9a8f2484b0c08/59e57/bbb_autostatus.png 542w","sizes":"(min-width: 542px) 542px, 100vw"},"sources":[{"srcSet":"/static/aaead84ab62c2fe90cf9a8f2484b0c08/c3c12/bbb_autostatus.webp 136w,\n/static/aaead84ab62c2fe90cf9a8f2484b0c08/67841/bbb_autostatus.webp 271w,\n/static/aaead84ab62c2fe90cf9a8f2484b0c08/89110/bbb_autostatus.webp 542w","type":"image/webp","sizes":"(min-width: 542px) 542px, 100vw"}]},"width":542,"height":305}}},"date":"May 2021"}}},{"node":{"id":"47ed664a-f0c6-51cb-aabb-9ea9e5f48ad7","frontmatter":{"languages":["typescript"],"priority":7,"dependencies":["webpack","bootstrap"],"slug":"book_page_converter","link":"https://christopher-besch.github.io/book_page_converter/public/","description":"Convert Page Numbers between Different Versions of the same Book.","title":"Book Page Converter","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABLElEQVR42q2Sy07DMBBF8wkgROyxnYedVxNB2zwEQmzZIyTED7Dh/3/gMnaaAoKC1LI4ycjKXM+9k8hVNYq6QV6USHILnWaQ2swoA0pSrhOQ4bdJAorPDhFJ0lh1HfphwHqzCfi6H0dM04i2sVhfNYHb6RptW+NSEl+mfyTyjyTLYYsChm/QjOEptVFQ5YD45hVx/4J4+wy6e4Os76G1hOKJiV0s7AUFKaRsNbMOvvaHxBarqoLIO8jNI0T3EKDtE4TrkWXJXtB/7weomlXoDxNm1sI6B8c5BsoqZEqKQPE5SFzMxGcgEhDKfLHphb3o3vLn0T8sqLAUqeelzKS7ZX3PbnEXHQqXDjT+RXRM0z8Jmh2nCvpsFpQ6TdDnmLoS0vHv41rIvJmX80vPO+f+JchTPL98AAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/2aa401fbe9cc79fdb342b5be684f994b/87706/book_page_converter.png","srcSet":"/static/2aa401fbe9cc79fdb342b5be684f994b/f80f8/book_page_converter.png 320w,\n/static/2aa401fbe9cc79fdb342b5be684f994b/9a63f/book_page_converter.png 640w,\n/static/2aa401fbe9cc79fdb342b5be684f994b/87706/book_page_converter.png 1280w","sizes":"(min-width: 1280px) 1280px, 100vw"},"sources":[{"srcSet":"/static/2aa401fbe9cc79fdb342b5be684f994b/c0bcc/book_page_converter.webp 320w,\n/static/2aa401fbe9cc79fdb342b5be684f994b/17574/book_page_converter.webp 640w,\n/static/2aa401fbe9cc79fdb342b5be684f994b/71d4d/book_page_converter.webp 1280w","type":"image/webp","sizes":"(min-width: 1280px) 1280px, 100vw"}]},"width":1280,"height":720}}},"date":"October 2021"}}},{"node":{"id":"853d8ded-24e3-5d1c-a4be-e811d31c0d95","frontmatter":{"languages":["python","typescript"],"priority":7,"dependencies":[],"slug":"jupyter_compare_view","link":"https://github.com/Octoframes/jupyter_compare_view","description":"Blend Between Multiple Images in JupyterLab.","title":"Jupyter compare_view","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAACcUlEQVR42n2TSU9TURiGu3ZgKu1tb0dQ4N6WtkDiAAShEVqppcyIDCIig8QWVEICKCCJFIMgBWoQFIwDUZMWoztETQxL9vycx0sXxATC4lmdnOe8+c77qQS5GEHQYLJmkC3byLLnIee6cDgcyDYbkiwrSDid+TiyJKQcCdFkxmi2YLJYj6AScssQdVpS0wVa6moYafEy0epjrM1Lv/8CA41uuv2F9Pd28fzFHBOTk/h815VHbGh1evQGIzrRcIgidCPqtSSlpTMxNMTnqV5ehapYCfmJ9JSzEvSzFAwwH54itvWNaDTK/PwcFRUeUtXpiEbTMUIlYbJaw/C9PpYHGgi3FfF2KEBbpZPwbTdbz7qJb26w8e49W/E4M+Ew5Z4ThRrSBJFAiYvo/Wo+jbaz2HOF/hqZkC+fP6tPWI0u8ODhI3Z3d4nFYni8104Wpmr1tHgusjZYy2KXh4VONxuDPmZqs/g+7md9JcLLyCKRSITNzU2abjSTlJJ6QkKtSJO7gA+TQZb6avg4dpevj+tY7SogXC0z+3SU12tv2NnZYW9vj57ePk6fTcag/PjxQp2RhuJsfswO83d9nvj0ILHxVr6MtDLdXs36coSfv36zvb3N/v4+wVCIU2eSjhOWoVd6qNEbyJMs3KwspaM+QPP1CmqvluC9XEBVaSGNDfV0K6k673TRfquDS4VFpKVrEhJBLx6iEsyZiAYDJlMmFksOWtGIWpmnYDQrmBAOEhisiVlpBB1qjZaUNHXi8kGRDwr+PyqdcqA3GrFYz+PIy1e2xIbd7sThdGFzOMmS7Eg2Ow6XS9kcO9mShDXzXAJLRuYR/gHUBIeYGH+vFQAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/2e29918fcd7065171abf5a9e71e3e0fa/93019/jupyter_compare_view.png","srcSet":"/static/2e29918fcd7065171abf5a9e71e3e0fa/a9b17/jupyter_compare_view.png 149w,\n/static/2e29918fcd7065171abf5a9e71e3e0fa/873d6/jupyter_compare_view.png 299w,\n/static/2e29918fcd7065171abf5a9e71e3e0fa/93019/jupyter_compare_view.png 597w","sizes":"(min-width: 597px) 597px, 100vw"},"sources":[{"srcSet":"/static/2e29918fcd7065171abf5a9e71e3e0fa/2ec87/jupyter_compare_view.webp 149w,\n/static/2e29918fcd7065171abf5a9e71e3e0fa/5b303/jupyter_compare_view.webp 299w,\n/static/2e29918fcd7065171abf5a9e71e3e0fa/faef1/jupyter_compare_view.webp 597w","type":"image/webp","sizes":"(min-width: 597px) 597px, 100vw"}]},"width":597,"height":336}}},"date":"June 2022"}}},{"node":{"id":"706b8428-0a6d-5a1f-aa07-e00dca67d519","frontmatter":{"languages":["python"],"priority":7,"dependencies":["flask","bootstrap"],"slug":"ohg_plan_parser","link":"https://github.com/christopher-besch/ohg_plan_parser","description":"Parser for the Substitution plan of the Otto-Hahn-Gymnasium Gifhorn.","title":"OHG Plan Parser","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB/UlEQVR42oVSy27TQBTN51UNXYAE++666CZSF/AHVXcVpQoClQWtVAl1BYgVom0apSnIVaNUwklIHL9mPH6MZ+zxY2K7XCeIDQuuZnHu1VydM+dM42FZyq3SueooilJW5Wj0E3C3e6WbBg38i8vz/k1/eD8sCtnv9wBf968H90PYalTL8n0PO8g0DcZYHHGEkee5nu+laUoc7LoEY5TlmQ8z4gWen4ikXpZSpmlimEZA6UoFIc5M0/T5HIYspACgwQgvykW719672Nv9uvt28Cav8pq5LEshBJAAhuUkEeGyYCJlzjmLRQzDvMg3TzY3jjaefn7W+t4ShWjA7ZXyFe1f8G8LmKbUT/xABmFGoW3keS5EbNvWfD4HtdVDVcueTeGkSaYH+n5n/+XlwcHdqxFTT3+cHnYP2zevz/QzENIowEQpoyhinMEBBngCaKastuBWV5rvHj0+ebL+fv1c+7b1YWvtaK153Nzubf9fdiKTGZ9pkTYNpzzjJjenbDqLNEPoRVX8cRsjBN5CLd0m4LCNbOISEcfIsF3kOpazkJJggm2MLcTDqI6qWCzg2YyFAQ2ggDmKOIRMKYXM0yzF8AN8yBrXOQeQtAufIoqXy7AZx9yyTFVVgQpGYN5kPNZ0zXVcFas7H3eef3nR+tQakDtLt8aT8a/JxPU8uPkb7MBLQz3lw4sAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/010debbb2895bfdad1bede28a9cad696/752b5/ohg_plan_parser.png","srcSet":"/static/010debbb2895bfdad1bede28a9cad696/06b11/ohg_plan_parser.png 109w,\n/static/010debbb2895bfdad1bede28a9cad696/d225d/ohg_plan_parser.png 219w,\n/static/010debbb2895bfdad1bede28a9cad696/752b5/ohg_plan_parser.png 437w","sizes":"(min-width: 437px) 437px, 100vw"},"sources":[{"srcSet":"/static/010debbb2895bfdad1bede28a9cad696/4be77/ohg_plan_parser.webp 109w,\n/static/010debbb2895bfdad1bede28a9cad696/4bebd/ohg_plan_parser.webp 219w,\n/static/010debbb2895bfdad1bede28a9cad696/bd60b/ohg_plan_parser.webp 437w","type":"image/webp","sizes":"(min-width: 437px) 437px, 100vw"}]},"width":437,"height":246}}},"date":"July 2018"}}},{"node":{"id":"5c6b0000-143d-520a-bbec-c67c9d219924","frontmatter":{"languages":["python"],"priority":7,"dependencies":["gephi"],"slug":"time_table_planner","link":"https://github.com/christopher-besch/time_table_planner","description":"Data Analysis and Visualization Project.","title":"Time Table Planner","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAAC00lEQVR42jWSy24bBRhG/TDAkiUP0B0SEuINYMMCJFiAEAgQO4SQogrBAoFQA20TqYQQUqc0rU18jR078W0mnvH4NjfbM/Yk49vYHt8OQyW+9f9/i3O+0FCOMvPWLH0fW9HpSBLSvTpG4ob/UlNSNIQseeGA88ounj5koPbw/SX+dMp6Nntxt91sWK9WhDYjh0pJIBKJMtRMtoMBU0VhILdYOlvC8a9J1+6DD1PHRDmUEX7qML512NpDNt6MxXzNwl0wHDqEXM3A1A1k8RqrofFOxuJp26afVJEft1l5PsupT12sYlsWeqpC7Y80QiTGu5EDMucJGvdzKOEe42lQKMsJXMtm4Qwxqg1ee6pxL9diK1yjlKpcplNYco03X7/DZx+8z6RjMciLSPunfH68h3SRw03mmNyMWAUYQm27wiyv0Nl5yG23h1dTqMezhEsq1SuB8nkGPPj76Ij8aQwCDNnCr4SffcU2KeAVytxJ7LNTTsI8KCw0D1mZHpOWiVOSGOdLJPIyrz7v0rhW6apF9tIfMq61qIpHiPIp5XqUnLTL+kpkei3xUeaEg7bI2vYCKasNarOCO+pjf/Mb/YMIg16PfkenHs6RePILXxy/jGObXLWOSVUesJ0HWmWVh/UB31+0WcfyjCQNMyUEhUt4dPkxxfwhTryMlilgXhnUTmTsgONy4uHfThjVdex8g814hXiRpRiNYuguJblLPxNDe/wnS3dMaOFvuTFM7KqCGbvECtgNCl1aR1WMjIgt9pD7Lk052GixRCfxD50AiytK/FiJU9R05mc79H//EvV5nFDvwdt41ogfYm8RLXz3YqTlxhPOIneDxxobw+bnXJPTZJ3h3nvY375CX2qDPuCT5F+c1QTWzWCzt2M0PUfIOd/FUbukMvsochrfXLLz7A0+PXyJYSAleXKCXRaZB1LG5TNuso+Y6Cp2ZB9fajGpq6wWPv/nXyYm/2M8YBggAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/6ebf595c0ce1860eeba4054c6c5cc1f5/0691c/time_table_planner.png","srcSet":"/static/6ebf595c0ce1860eeba4054c6c5cc1f5/2aa30/time_table_planner.png 285w,\n/static/6ebf595c0ce1860eeba4054c6c5cc1f5/e62cd/time_table_planner.png 570w,\n/static/6ebf595c0ce1860eeba4054c6c5cc1f5/0691c/time_table_planner.png 1139w","sizes":"(min-width: 1139px) 1139px, 100vw"},"sources":[{"srcSet":"/static/6ebf595c0ce1860eeba4054c6c5cc1f5/b343b/time_table_planner.webp 285w,\n/static/6ebf595c0ce1860eeba4054c6c5cc1f5/6375f/time_table_planner.webp 570w,\n/static/6ebf595c0ce1860eeba4054c6c5cc1f5/984aa/time_table_planner.webp 1139w","type":"image/webp","sizes":"(min-width: 1139px) 1139px, 100vw"}]},"width":1139,"height":640}}},"date":"March 2020"}}},{"node":{"id":"00a65e3b-4350-5432-9f07-eab958b7bd4c","frontmatter":{"languages":["typescript"],"priority":7,"dependencies":["bootstrap"],"slug":"who_am_i","link":"https://github.com/christopher-besch/who_am_i","description":"\"Who Am I\" Game with Your Friends as Characters.","title":"Who Am I","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42pWS2U8TURjF+2eZ+D8Yjb7Ik/oAIcH4gqgJCjFCGotRjEKwgFpCCCCFiCxuNBFLBYKRVQybdaGUlk6ns3aW/rxeDDwYEr3JyXdmvnvPzDnfDYwmkkTjP4lNrpKMvcNcXMFNZ5CrVOJ/V6B5rEBt1KSrf429x91k2p5S+DCLJ5qu4+C6Lq7nyuqI59/wPO9oQS2/i6ak0HWFnGVJ6LaNZZkCFqaopilgmBiGgS5gi/6RgulMlpSwmFcL4ssOJd+TTv82+2/2A744XdA0PMcm/glCOxNEnEY00hhaEd83WFgR77fmCDv1pEvrOKaPYRpSwLJswc1DQVs0mipPsjmfoCcO58+dpnX2FDm+0VpdzkKsj5fLcKH8Io0vjqHwlZ6GWkY6Q1Kg9951og9uSu4LdwHXKTLZfJlccpnVDpgqqyHdcgVXS5IIB9ldnWBjCN6fDfI9WEFJ2eDjQAdr491SZD4a5vPzzv1QfJ+ArhnsbG+jqArmMOR73mJHxK+msjJXy9MxXoPSOYnRNgbrKVTbRFdVKaIVCqj5/ME1CxSLRbI5RUzQYmlmiZHeQV4NjqPuqehiyoYAfgnNLOzn5gsRMXH9T26GaaHpxsHMAkXL4E7VGTYXZ4kNJ6g5cZzWa1fJpnO036hgevyZ3NheV0Wsv0PySLCa0Sd3Je+7X89gS8Nhho7IcCJ0idzWCtPReQYqyxi+HSKzk2cqXMePmTdyc7z9FluxIcmnI018Ge2SfK7vIUvRRwcZ/gLB5BjRNwUe3wAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/31a6dfc8ba3d42b8c4c0a76ae8243156/c206e/who_am_i.png","srcSet":"/static/31a6dfc8ba3d42b8c4c0a76ae8243156/c86e3/who_am_i.png 284w,\n/static/31a6dfc8ba3d42b8c4c0a76ae8243156/33bc5/who_am_i.png 569w,\n/static/31a6dfc8ba3d42b8c4c0a76ae8243156/c206e/who_am_i.png 1137w","sizes":"(min-width: 1137px) 1137px, 100vw"},"sources":[{"srcSet":"/static/31a6dfc8ba3d42b8c4c0a76ae8243156/be6c4/who_am_i.webp 284w,\n/static/31a6dfc8ba3d42b8c4c0a76ae8243156/3d74d/who_am_i.webp 569w,\n/static/31a6dfc8ba3d42b8c4c0a76ae8243156/c0cb4/who_am_i.webp 1137w","type":"image/webp","sizes":"(min-width: 1137px) 1137px, 100vw"}]},"width":1137,"height":640}}},"date":"March 2021"}}},{"node":{"id":"9ec7efcd-6eff-547c-b1db-ba631cda945b","frontmatter":{"languages":["python"],"priority":8,"dependencies":["flask","bootstrap"],"slug":"mc_royale_supervisor","link":"https://github.com/christopher-besch/mc_royale_supervisor","description":"Minecraft Battle Royale mode with Supervisor Powers through a Webinterface.","title":"MC Royale Supervisor","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB0ElEQVR42j2S227TQBCG/QZVidd7mPEevF6fUpxD4yhpSAsUigJCSFRFvYS7IvWiRXDDFbc8Am/LOIZIv0aj2f13v/3tyIcCUuNDWVWlUEiq6qY5OdHOKdQSUiGxmY2raWUrh9bQZC+kGgkFXKrU2JBb2fegjc3ynEQ7BABj8uzT/MOPy93Dtl5X1hVZURqX0Wpv7v1CjhLJ930iJOOccUEHDauYptY5AGTKCB0YOJk6mkZ7AEBtQu4Q6Spqrc28zTKFAx7GIn3CdSz1rNEvunAxd+OgEgH/sMlRBjq7x6YnuCwnf+9UEHO1W+m79+HV0rxdw+O1/X5tPm71SBywpYrFAVsxTuSCejIzAc9bebuBVcW2yt/V7QX6I2lwwKZN2jrvveoTQuOcD4ECG7CFgOysqXfzajf7/Mb/uvLfruxmIhndPLwKUk3kdM/QEzlpiOM4ll+/VH9+d/f3T8/Ps5vL/PZ1/nLhEpVGhBeTEs76kAcJqoeoEwmtl5tGFjrZaf+znb4z/kggIEb0R9TjhiollIciFGVelNRTCoOZNBJwzHEk0SM0CFS56lejRbfYbp+t1qvpbH56ulh0XbdctpMJfUb+30zwai9G4au+DvO/s45ZNDTY2I0AAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/e2c1d3c93e6c6ee28de8f535211258ea/41ea1/mc_royale_supervisor.png","srcSet":"/static/e2c1d3c93e6c6ee28de8f535211258ea/8ab74/mc_royale_supervisor.png 214w,\n/static/e2c1d3c93e6c6ee28de8f535211258ea/9f483/mc_royale_supervisor.png 428w,\n/static/e2c1d3c93e6c6ee28de8f535211258ea/41ea1/mc_royale_supervisor.png 856w","sizes":"(min-width: 856px) 856px, 100vw"},"sources":[{"srcSet":"/static/e2c1d3c93e6c6ee28de8f535211258ea/5177e/mc_royale_supervisor.webp 214w,\n/static/e2c1d3c93e6c6ee28de8f535211258ea/ae194/mc_royale_supervisor.webp 428w,\n/static/e2c1d3c93e6c6ee28de8f535211258ea/e11fc/mc_royale_supervisor.webp 856w","type":"image/webp","sizes":"(min-width: 856px) 856px, 100vw"}]},"width":856,"height":481}}},"date":"December 2019"}}},{"node":{"id":"a05a5af9-7962-52c4-9725-50ef7e3c102c","frontmatter":{"languages":["python","typescript"],"priority":8,"dependencies":["flask","webpack"],"slug":"project_omega","link":"https://github.com/christopher-besch/project_omega","description":"Article Publication Website.","title":"Project Omega","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAACDElEQVR42n1SyW4TQRD1F8RJPNNdvcxMz+KJbbxNosgiWDFbFDBEYhEIkFAuIBkuERKBE0IcuHMBPvdRPWPgkMChVF29vHr1XrfSootur4+8W8JlORKOOM1gE8c5ReTSutZRXIdZ539FS5BCbzDAldEIo/EEu3t7yLmJf0jaghSBZAhFAh1hsbFt0ZGmjm1hIDSvla4zcbQkF2leoMxzFGuW2kYomXXiHJTrQQ0OIPIKu2ONkxuEaqgxHpi6LrjxNErhjIX8DZikDv3CIYodfK340EtRZAnk6BZo+QXt2Wu8WBJ+fAhwdCCxeixw9jLAgt+t8iGqKEGgNY/MAI51yl1S65UyUz9uWpS8F0FM7oAefcPm/AwPbxO+vglwuC/x8VTg3SkDMpnznQn2bYKOB/SM4oTF542IjUjYCBvHyHj8IoshqvugJz/RXpzj2V3C9/cBjucSn18JvH0e4lqc4VNvilnkGkAvpNESRgWwzMyP6/csj2+tgSwqqNlTBMMjzCqNBzcVilxjeahw/Sqhb2McZyV2TITQa0hEENN7UIsVTFpCm8Ytz1wqXpMEBZtQslO7utFhZ1WTt0KDkO+1lWIw3bhMXMj+HLI6gbSOv0lz8Ce4M7EcZOK6mWHWap19reoJbZ0bQL/gf0bh1kUwz3TN9rKzy6L1l0V8EYxBvEFR1gVl/B9ZeNL/B/4FaEI0+0sKY2sAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/4e199f626b070295f7c3e3a7fd898e89/87706/project_omega.png","srcSet":"/static/4e199f626b070295f7c3e3a7fd898e89/f80f8/project_omega.png 320w,\n/static/4e199f626b070295f7c3e3a7fd898e89/9a63f/project_omega.png 640w,\n/static/4e199f626b070295f7c3e3a7fd898e89/87706/project_omega.png 1280w","sizes":"(min-width: 1280px) 1280px, 100vw"},"sources":[{"srcSet":"/static/4e199f626b070295f7c3e3a7fd898e89/c0bcc/project_omega.webp 320w,\n/static/4e199f626b070295f7c3e3a7fd898e89/17574/project_omega.webp 640w,\n/static/4e199f626b070295f7c3e3a7fd898e89/71d4d/project_omega.webp 1280w","type":"image/webp","sizes":"(min-width: 1280px) 1280px, 100vw"}]},"width":1280,"height":720}}},"date":"March 2021"}}},{"node":{"id":"7129211b-0f0a-572d-a253-5974ad08ac5a","frontmatter":{"languages":["python"],"priority":9,"dependencies":[],"slug":"arg_toolset","link":"https://github.com/christopher-besch/arg_toolset","description":"Toolkit aiding in solving alternate reality games.","title":"Arg Toolset","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABTUlEQVR42m2S666CQAyE9x0QRG6iIoii3ATC+z9YT74mJeTEH5OW7ky308U9Hg9ZlkXCMFREUaTxdrtpfV1XmaZJ4jiWIAjkdDoph/gL7nq9Sl3XUlWVZFmmIhomSSLP51PKslRcLheN1I/H4zbAfzhIn89H2rbVpggADai9Xi9pmkYjvPv9vnF+wUHE0vv9VotMRTOm7vteQePv9ytd18k8z9o8z3PB3R7oXFEUKmaK8/m8WUaAkB1zDriMb7jkOOKbHFBXy0zAJOSQeBBuwyIkpre1WDNqtgpywLnjEDvDMGzWILErs0vELtHE+3UAzrUh3u1BfN8Xz/PkcDiofYRm1SKTcqE9pq2AAdA6CuM4bnukOUJ2iwCYRTuz3OwyHVrdIQ0Z3QrWgBttdya0M9vrPocD1DJ2uTFNU7WLdSxDsBc2Do9lHP4I4j7/A+CPPseYlsGzAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/d9af869cd877cf16897b43771cccfaa7/9d14b/arg_toolset.png","srcSet":"/static/d9af869cd877cf16897b43771cccfaa7/d141e/arg_toolset.png 132w,\n/static/d9af869cd877cf16897b43771cccfaa7/9803f/arg_toolset.png 264w,\n/static/d9af869cd877cf16897b43771cccfaa7/9d14b/arg_toolset.png 527w","sizes":"(min-width: 527px) 527px, 100vw"},"sources":[{"srcSet":"/static/d9af869cd877cf16897b43771cccfaa7/f62d0/arg_toolset.webp 132w,\n/static/d9af869cd877cf16897b43771cccfaa7/441a7/arg_toolset.webp 264w,\n/static/d9af869cd877cf16897b43771cccfaa7/41ffa/arg_toolset.webp 527w","type":"image/webp","sizes":"(min-width: 527px) 527px, 100vw"}]},"width":527,"height":297}}},"date":"August 2020"}}},{"node":{"id":"2cd91929-b240-50ed-8199-6f16083bc8e0","frontmatter":{"languages":["cpp"],"priority":9,"dependencies":["godot"],"slug":"cmos_simulator","link":"https://github.com/christopher-besch/cmos_simulator","description":"Click some nMos and pMon Transistors together.","title":"cmos_simulator","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB+ElEQVR42n2SS4saQRSF52dlMTFKi7G7q8putX22Thx3IcF/4kYnPgluJrp3OwFBFFw4O92qe8GF4INRT24V6OAkmQuX7mq4X59zT91wzsGoTc7AbQssnwaPhcGFAGcclmXB6/WiUqlgNpuh2+3ieDxiMBhgOp1C1ul0wrluJCxshuDaGRjZJNi3HNhdEsF8gn5AwJCFTwSsVqsYj8doNps4HA7o9XqYTCZ/A6VCqcb1mdBZEMY9gZ0oNHELljJhcVLo86JcLitlq9VKDY5GI7RaLex2uyuoAppkzQ2byKc1fElpyCb8uMtqMGMcgtvweLxoNBp4/PWITqejBqXafr9/pe5VIbXB5B4F8q6GRDSIsGUgaumIOwwB/y3t8AeWyyWen8dqcDgcYrFY/McytWBkO6ThPu1B0vmMVCygOpPUYQQ+kL2feHr6jUKhcBmWK3hbFyAXIYT9PgjDgR3JQNdNGBQWFzY+enwoPzyoAanyvboAmWCk0EbB+Q7HccFMg/YnYNO18VHKpVJJDciEpUUZxmazUeeXl5frUJTlkAxGJ2gWTiwL09Tpu7jcwzNQ1nw+R61WU3dTPmXa5/RfLcthQWFEc4jHc+8CZRjFYhHtdhv1el2B1+v1G8uM0bCNjPsVkUiKzsY/gdKibGl3v99ju92q97PlP1gnYQxM37BYAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b1db4520aec38adb87983526a2e24dc5/252d5/cmos_simulator.png","srcSet":"/static/b1db4520aec38adb87983526a2e24dc5/cb1c8/cmos_simulator.png 269w,\n/static/b1db4520aec38adb87983526a2e24dc5/16840/cmos_simulator.png 539w,\n/static/b1db4520aec38adb87983526a2e24dc5/252d5/cmos_simulator.png 1077w","sizes":"(min-width: 1077px) 1077px, 100vw"},"sources":[{"srcSet":"/static/b1db4520aec38adb87983526a2e24dc5/bb587/cmos_simulator.webp 269w,\n/static/b1db4520aec38adb87983526a2e24dc5/4bca7/cmos_simulator.webp 539w,\n/static/b1db4520aec38adb87983526a2e24dc5/2d602/cmos_simulator.webp 1077w","type":"image/webp","sizes":"(min-width: 1077px) 1077px, 100vw"}]},"width":1077,"height":606}}},"date":"May 2023"}}},{"node":{"id":"682154b4-9546-5b1b-b9e0-e98bef0a0a36","frontmatter":{"languages":["python"],"priority":9,"dependencies":["docker","minecraft"],"slug":"docker_minecraft_screenshooter","link":"https://github.com/christopher-besch/docker_minecraft_screenshooter","description":"Record Minecraft Timelapse videos.","title":"docker_minecraft screenshooter","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAACjUlEQVR42iWOTW/SAACGqy7TgxsbhQ4YA+YGK6wtLZS2lJaWfkFb2tGWMTacH9N9GJ0bcFX/gO4PGI8evLhk8eBMvHjwoFHjwcX4AzzqxUQTPSDG5M17e5/3AV5+GRy9//X07Y8XJ4PHr74evvv5/NPg2cffT15/O/rwp3f/Yf/g0fHJ4Pjz4PDN9+2tzbqu5AjU0GVJKAG3HxxIl3XKY7zeBizPFZc5d3/H2LmEWwi9zEbI8RlqSrxoNPpXNvq9tWaDJnGxXLQMNYcjQJg6E6JGIWLUj52Ki+ORwjkofxoiR4KLZ6HMSCg3FsbPw2yM4hYbtmIbGkXizlKNoQiWyQNxHkwI/kTZn+ADcW4ySvsi1ESyBCFEAM8GoukxVRXatnptiV1f80osZRiKLPMMlXOsGpAgJxKYL8b6EtzkLD6ZIqZoOUQrsbyazrBQOh+QbWFztXijWbIbtiDwZl2n6YJdr5k1BUhVwFlmYl4Gk+wkpaXanZan4lUeZasEVoxgfLjS5rZWq20Nq0iVpmtWRE7Xa1a9qikiMMP5povjc5K/ZCPrV9sKlSktRlsrDl6OwwWwtTL8M1sSctPKODIhi5xp6pZtaWqlpklAjPFdUMAFGVItvuU2HYm5vtoqa+QCD/IavNJe9iR81870m9k9B+momXpNUNWKqkrDAHA1gJcDuBC+QIFJMlTSSEkvEsUIzAdba/q9u3c6GtJ10Z6X7XpY10O3jHRHSbli2iyjQFLzs3RgHvPHs/4UC8FCEBaDSDWKCKGyRNmm3pGTew7adbNdFxv2UKHfRLuNzC0zBaASmCXBBOGfJ8EkE4S5ECpPo+o0Volghbhlm73dne1GYd9But7//T9Eb2jhon8BCT+yvCMA7T4AAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/918bfbc61528540e93979b38c00bffea/afa5c/docker_minecraft_screenshooter.png","srcSet":"/static/918bfbc61528540e93979b38c00bffea/2fe1e/docker_minecraft_screenshooter.png 480w,\n/static/918bfbc61528540e93979b38c00bffea/9bec7/docker_minecraft_screenshooter.png 960w,\n/static/918bfbc61528540e93979b38c00bffea/afa5c/docker_minecraft_screenshooter.png 1920w","sizes":"(min-width: 1920px) 1920px, 100vw"},"sources":[{"srcSet":"/static/918bfbc61528540e93979b38c00bffea/3a3a2/docker_minecraft_screenshooter.webp 480w,\n/static/918bfbc61528540e93979b38c00bffea/bde8a/docker_minecraft_screenshooter.webp 960w,\n/static/918bfbc61528540e93979b38c00bffea/c512e/docker_minecraft_screenshooter.webp 1920w","type":"image/webp","sizes":"(min-width: 1920px) 1920px, 100vw"}]},"width":1920,"height":1080}}},"date":"March 2023"}}},{"node":{"id":"1d1c76e2-efb0-523c-af84-b0f2c4f87211","frontmatter":{"languages":["cpp"],"priority":9,"dependencies":["glm","godot"],"slug":"glome_projection","link":"https://github.com/christopher-besch/glome_projection","description":"Interactively Project 4D Sphere onto 2D Screen.","title":"glome_projection","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABKUlEQVR42lWS6U4CMRRGDyiKEUHBBQfEhVGUCLj/cI8a9QWM7/8m3jnjEGia26btt9xvBujBDuzDBXzCA2xBBdZhF/bgFurMj0toukmgDR0puvAM3zCBDWj4JoVzKOWwfAnA2E0otKBmDYoDOIEvePQwbjcFJzPYbFxZw2FVq9uwpmC868O1sy5pnAxhcVa8WVC8FN2+W3t2Gy7uzGJV8YFmp9io5VjeVJiYQjT8q+eOFKdwo3jD5I5hAZbyWcpqRjnUZ7w+M4gA35tfImO3SGRoX6j533xqSDEPYeSLkebz/Afy1uyxP+88G7lCokKqeKi9Cm6bSJhfMchcYw7cKvrpKRvgJ/gowGOvqn6zxK9Ynv1buvIdeZea8I8sdcEj3S4beEvqyhT5BwVfFxtLtlefAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/311e9ddcb1e37c3b3a82f909b721b43f/afa5c/glome_projection.png","srcSet":"/static/311e9ddcb1e37c3b3a82f909b721b43f/2fe1e/glome_projection.png 480w,\n/static/311e9ddcb1e37c3b3a82f909b721b43f/9bec7/glome_projection.png 960w,\n/static/311e9ddcb1e37c3b3a82f909b721b43f/afa5c/glome_projection.png 1920w","sizes":"(min-width: 1920px) 1920px, 100vw"},"sources":[{"srcSet":"/static/311e9ddcb1e37c3b3a82f909b721b43f/3a3a2/glome_projection.webp 480w,\n/static/311e9ddcb1e37c3b3a82f909b721b43f/bde8a/glome_projection.webp 960w,\n/static/311e9ddcb1e37c3b3a82f909b721b43f/c512e/glome_projection.webp 1920w","type":"image/webp","sizes":"(min-width: 1920px) 1920px, 100vw"}]},"width":1920,"height":1080}}},"date":"January 2023"}}},{"node":{"id":"b4c72d3d-c69e-521e-ae22-a29ff7a64c53","frontmatter":{"languages":["python"],"priority":9,"dependencies":["ffmpeg","youtube-dl"],"slug":"lofi_girl_downloader","link":"https://github.com/christopher-besch/lofi_girl_downloader","description":"Download and order all music from Lofi Girl.","title":"Lofi Girl Downloader","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABPklEQVR42l3SV5bCQAxEUYMxJsxg4Nhgcg77X+FcWpP1oSM3raonNdnhcNhsNqvVar1eN02z3+8Xi4Xi7StGo5E8Ho/fU5Rl2ev1ut1uJm632+l0Oh6P8na7vd/vbduS2+12bQpaFJ3IPufzeVVVtKhkl8vler3qfD6ffqaCJXL45HleFEWZot/vq+NEnXFgCNttJmom4blcLjG7JA+HQ26dTif7HbCDWSYB2/Ak4NEybV3XTQq0RYpAeDVjRq7z8XgwpwL+fD47mU6n7v1bm7af5tg2SG6xm1i722b+zrBD4g8258AWVEwRY9cpdJpcGwqKk8lEzVYxGAxeM+vnDzuAAx5LPKyraAMhXtjaLPz11MEpbIuVT1YKg+mfzWY6edofz+jJU3xix6q9M0/Lk70fucCGRwKnOv4bsQK9H5rmMIWxkW/CAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b400baaa5c2bdb1e044a962fc2c88517/f3b86/lofi_girl_downloader.png","srcSet":"/static/b400baaa5c2bdb1e044a962fc2c88517/ece18/lofi_girl_downloader.png 207w,\n/static/b400baaa5c2bdb1e044a962fc2c88517/c9837/lofi_girl_downloader.png 415w,\n/static/b400baaa5c2bdb1e044a962fc2c88517/f3b86/lofi_girl_downloader.png 829w","sizes":"(min-width: 829px) 829px, 100vw"},"sources":[{"srcSet":"/static/b400baaa5c2bdb1e044a962fc2c88517/068c1/lofi_girl_downloader.webp 207w,\n/static/b400baaa5c2bdb1e044a962fc2c88517/74295/lofi_girl_downloader.webp 415w,\n/static/b400baaa5c2bdb1e044a962fc2c88517/741ae/lofi_girl_downloader.webp 829w","type":"image/webp","sizes":"(min-width: 829px) 829px, 100vw"}]},"width":829,"height":467}}},"date":"August 2021"}}},{"node":{"id":"becaac7b-3c8d-5865-8e60-2aec2e134b50","frontmatter":{"languages":["typescript"],"priority":9,"dependencies":["gatsby","cors_anywhere","react-big-calendar"],"slug":"therapy_search","link":"https://github.com/christopher-besch/therapy_search","description":"Compute Call Times into a Calendar.","title":"therapy_search","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAACtElEQVR42m2SyU8TcRSA5z8xnvWi8eISE6+evJiYuCTggkgIKCBRBFeiuLBrUQQXqlCLUEAoIlCULkAtHTq0FApuQFtkaSlQcMvnb0ZO6uHLm5d5+eW97z1pYW6OD8E5RmfiBGZWCHyNMz4bZ0x8+8PLKFMxPJMxhgTK9BIjoWW8wSV8IvpVwita7lHrBNK3eAx9l8K+gtccLOokodzC4ZIuUip7OaF7R/ojO9n6frJr+jj/bIArRhfXG2UuGQe5Wj9I/ks3uXXvOfPEQdbTPqTv4kFdq5utWY3syjGxM6dJxCYSyiwcvdtDpihMrrSR9sjB2Zp+Tj6w0uicpFWexjwUot0Tosc/y/tPUayBeaS1pQgFRgcbk5+z+4KJTWkGtmYaKTDJPH0XIPGehQ1JerZkvGBbVj2b0w3kNwxS0qpw2eAk+X4P1+pdVHb50XX4kFZiEZoco6IDG5eNTgqaZG42y1R1+yl/PSyKvJS0KTzoGuG5bYJa+wdKzQqFr4a41ewmp7ZfjO3ionj8douMFF+K0jYQ4KzeyZ0WBYvvK93eGV65pzE4PtGhhOmbiGi56lAdO73azvF7b0mrtpH60Cpym+b8zGMH0nIsikX+SFn7COVmL/tvv2FPXgtHSrvZm2/mQOEbDhV3ki2E19k/ou+d0LyZh4K0CzqUEJ3DYdHIjPAaVDtc1Dq8ZHSTV+dk+zkTO86bOC22myEWom2yQaa4dVh4GqPM7BMj+ygSuRp1HX6K27zcMHmELg9SZGGe8el5XJ8XcX+JIot7Gxb3NhX9Tij2k8jaL74Bsys/xOgLGqPr9/rnZlcZE9Gv3q1AWhUOTfZRMmuc5BpcmsvUKgdJ960axyp6SdT1crzCSkqVXUM9o785tY5wuIg8EabFLZx4gpqfNnFjqo9/EIvR+N+/dX4DLBO43njKsuEAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/94a34e571c20f8d09ace3b0ab1c8cbc3/13309/therapy_search.png","srcSet":"/static/94a34e571c20f8d09ace3b0ab1c8cbc3/c475f/therapy_search.png 267w,\n/static/94a34e571c20f8d09ace3b0ab1c8cbc3/94713/therapy_search.png 534w,\n/static/94a34e571c20f8d09ace3b0ab1c8cbc3/13309/therapy_search.png 1068w","sizes":"(min-width: 1068px) 1068px, 100vw"},"sources":[{"srcSet":"/static/94a34e571c20f8d09ace3b0ab1c8cbc3/37b30/therapy_search.webp 267w,\n/static/94a34e571c20f8d09ace3b0ab1c8cbc3/788c4/therapy_search.webp 534w,\n/static/94a34e571c20f8d09ace3b0ab1c8cbc3/d158a/therapy_search.webp 1068w","type":"image/webp","sizes":"(min-width: 1068px) 1068px, 100vw"}]},"width":1068,"height":600}}},"date":"August 2022"}}},{"node":{"id":"b5e35dbf-f008-5c5b-a036-71b512291d78","frontmatter":{"languages":["python"],"priority":21,"dependencies":[],"slug":"technik3_plan","link":"https://github.com/christopher-besch/technik3-plan","description":"Plan a School Event.","title":"Technik³ Plan","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABSElEQVR42iXR6W7CQAwE4H3/J6xUtQUBSTiz5IQEpH6s/WMztsfjI+nr+6euj23bnk6n3W53PB5vH2t/f/9Y1/VwXdfb7Rbhcrns9/uqqgXbNqd1XXJum6aRm+cZQJXxHg4HMiJVVU3TRBeWejwe1+sVSKLn87nrumEY7vc7LKdD3/fjOAZgdHFEEJ7PJyEgzYXaFlMvRC6EuYA3upFWbxzF+2IpxIJhVEJyMBJsbG0RYhe0zWZD0SJWSMMw+pAgHNcyIbagl6tAQxdRDFAJ5qe4rpuy2JBzJiEdncnrqSaKKQYBeVmWmCtJr+v6KIbh5SqIO9k/MEVZLvx6vZZixh6snovpYBiuaW1F14R+vgjRz58tHGWhlTSLgzFT3eL356xAnAQeFxWOixhNPbk0zfOtXA/bVDbR/F5MDXZciISBNRB8v9/R/B/CzWj/TJl9EAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/faa3120c358f8722a4cf8d351c7ad243/380c0/technik3_plan.png","srcSet":"/static/faa3120c358f8722a4cf8d351c7ad243/ccf6a/technik3_plan.png 178w,\n/static/faa3120c358f8722a4cf8d351c7ad243/d4ef9/technik3_plan.png 355w,\n/static/faa3120c358f8722a4cf8d351c7ad243/380c0/technik3_plan.png 710w","sizes":"(min-width: 710px) 710px, 100vw"},"sources":[{"srcSet":"/static/faa3120c358f8722a4cf8d351c7ad243/744a3/technik3_plan.webp 178w,\n/static/faa3120c358f8722a4cf8d351c7ad243/7d728/technik3_plan.webp 355w,\n/static/faa3120c358f8722a4cf8d351c7ad243/09b79/technik3_plan.webp 710w","type":"image/webp","sizes":"(min-width: 710px) 710px, 100vw"}]},"width":710,"height":400}}},"date":"February 2019"}}},{"node":{"id":"b3b0a78c-e001-514a-a073-261c08a75a40","frontmatter":{"languages":["typescript"],"priority":31,"dependencies":["gatsby"],"slug":"homepage","link":"https://github.com/christopher-besch/homepage","description":"This Homepage.","title":"Homepage","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAAC/ElEQVR42h2TXWhbZRjHc+Mq22q2tixr89nk5OQk5+Sck69zkpxkaZdt6TbEtixFlFXtKhMZ4pS1Ll3XshUvnFMEZTimKDLEOb3Y1fCmiODGGNONMlDBXQji54XzzpufT3LxwPO+vO//z/P7v6/v8LPzdDpLnFo6xfLaOT745AqKqrEjsLNX/m3b2Tkc4ImZY8wePU9nbY3VxbO88Nwr+IdH8IdCbB0com/zFkYio/imDs1gWRaBkSCnV1a4fed7wrE4wWCIgYFB/P5tRGIxDs/NcXp1lYUzZ3nryKscm36eoUiEUGyUoUCARzZtIhyN4ys4ZSrVCiXXpT3TZnJqCsO0e3uGmcUtu+zdN4FpF6h4dbJZC9erUhsfx87l8aQvOSW8mke13hBBt0bR9XCqdcxciXhKp1Sp40jpVgFDhDTDRs1kiSoacTVNNKEymsz0zuWdCmkx0XQTVbfwOc0Gu1sTjDdbNFsHaOyZIGWYROKKjJ4gGI6JQIrJ9iyLCx1OdJZZWjnDU7NHUDRDjCzi6RyxpEbazOObfLpNZ7nD4msLdE6eZH7+qAiNsmXrZvr7+3m0r4/Htg9w9Ytr/PvXH/z59y/Af3x+9UsGdwwLtwShRJYh6bvGvlp9N60D+6nUasKqxbSEpKZ18oUCqpZGVVOCw6M9Nc2Lz8xx6OBBlk4c56WXj5MSDF6tLlOEhd8umvv247MKJSw7JwFYAt4WFgZWvihcXXKFIna+0AspI2XYFsl0hrQg6Z7xdgmuPU1cMWyMjVEqV/HptiPM7B74hLBQhIlhd03KGDkHq1hGl7XrjVEf39sLolCukXM8imVJPe9iSmVMCS8rDLvpxCSASMrEscNER8K88967fHX7Ore+u8tvv/7O5c+ucOH9i/z04w9sbGzwz8OHXPrwI4KRKIqioAmaYDBIUtO7gpKSkiJZavDk4znKMvLr597m6zvfcOPmLe7eu8/Hlz/ljTfPc/PGt6yvr/PzgwdcuHhJ7iXlU9joelbeZI68TPM/0daVA+bTPIwAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/b95e29677cb3c79ceb36176372272f18/87706/homepage.png","srcSet":"/static/b95e29677cb3c79ceb36176372272f18/f80f8/homepage.png 320w,\n/static/b95e29677cb3c79ceb36176372272f18/9a63f/homepage.png 640w,\n/static/b95e29677cb3c79ceb36176372272f18/87706/homepage.png 1280w","sizes":"(min-width: 1280px) 1280px, 100vw"},"sources":[{"srcSet":"/static/b95e29677cb3c79ceb36176372272f18/c0bcc/homepage.webp 320w,\n/static/b95e29677cb3c79ceb36176372272f18/17574/homepage.webp 640w,\n/static/b95e29677cb3c79ceb36176372272f18/71d4d/homepage.webp 1280w","type":"image/webp","sizes":"(min-width: 1280px) 1280px, 100vw"}]},"width":1280,"height":720}}},"date":"December 2021"}}},{"node":{"id":"a9f19df4-0623-5e91-a9e1-307d9c208b7f","frontmatter":{"languages":["cpp"],"priority":32,"dependencies":[],"slug":"bwinf_39_round2","link":"https://github.com/christopher-besch/bwinf_39_round2","description":"Coding Competition.","title":"BwInf 39 Round 2","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABK0lEQVR42lVS7ZKDIAzk/Z+wdlqvM53pFeupBcKHELxALOftj8y6bpIFFdsB3vt5nrXSAPCuADBMdAUi7tacqQjmWJFSrmIzZMRMItGDgqk6SzM/c9Ns9GLfbVY1b9MyYXAHcYuI8zRuGcVfEnqdUWpJ9RggWrvKn/I2YQuclneclEgptUhUn1r66I/N2fssB/wY9jVgk3yV2E0NKUgjOWHzgVNGlc37mupdxzEpEG0n+Z9q9MmzwqIL8akHOki7rXI1AIsa9wtzzllrocDywcjEojGGSAkVgquwFeCs875cGHxAX3JdV05YJllLCvXzL/Bd8Xg8hmG43+9SSkFqjJEqzWZC/cSJUDMpzFmk2nSaLr4q+r6/3W6XClbO5/PpdLr8R7N1XXe9Xn8B22Z9MJvbQvYAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/19bb00250071e5e6256839013240dd1f/721bf/bwinf_39_round2.png","srcSet":"/static/19bb00250071e5e6256839013240dd1f/822d2/bwinf_39_round2.png 211w,\n/static/19bb00250071e5e6256839013240dd1f/7f025/bwinf_39_round2.png 422w,\n/static/19bb00250071e5e6256839013240dd1f/721bf/bwinf_39_round2.png 843w","sizes":"(min-width: 843px) 843px, 100vw"},"sources":[{"srcSet":"/static/19bb00250071e5e6256839013240dd1f/36c97/bwinf_39_round2.webp 211w,\n/static/19bb00250071e5e6256839013240dd1f/ca09e/bwinf_39_round2.webp 422w,\n/static/19bb00250071e5e6256839013240dd1f/f5388/bwinf_39_round2.webp 843w","type":"image/webp","sizes":"(min-width: 843px) 843px, 100vw"}]},"width":843,"height":474}}},"date":"December 2020"}}},{"node":{"id":"a8c27062-4837-548b-a7bd-68445362f3c6","frontmatter":{"languages":["cpp"],"priority":32,"dependencies":[],"slug":"bwinf_40_round1","link":"https://github.com/yves147/bwinf40","description":"Coding Competition.","title":"BwInf 40 Round 1","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA/0lEQVR42m2RWQ6DQAxD5/63ZBESYmfYaaGvY5QilXwgJxPHTnDrus7zfJ5n27be+3Ec+76n4kNQpMKXhm3b7PsK4YZhmKbpOI6iKKBVVQVYloUiz+8QgGcyIjD3fS/Lkip8pAA4oshoMOB8iq8yZFrTNCVvmkZGwABSm0snsvJykVlM5DiOtbnU5JBXI7MRbVhjKHyeHsi6nwUjuIKRu67jIoC6rh2TWJ0kSRLtDJZtI/8rwyd1nAeEjTzPtRjpEUJkRiMiUwxSA4D0ezB80pFlGR240rUtmKtFOB7KrEkKIL3+Mx22M+S7soXZ/pGZpH8TRREj9Pb4V5HB4F35A+Nyfyvs76hkAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/a1ce44f6ee62cb4c329694ea10a70535/372ef/bwinf_40_round1.png","srcSet":"/static/a1ce44f6ee62cb4c329694ea10a70535/ec668/bwinf_40_round1.png 183w,\n/static/a1ce44f6ee62cb4c329694ea10a70535/d8edb/bwinf_40_round1.png 366w,\n/static/a1ce44f6ee62cb4c329694ea10a70535/372ef/bwinf_40_round1.png 731w","sizes":"(min-width: 731px) 731px, 100vw"},"sources":[{"srcSet":"/static/a1ce44f6ee62cb4c329694ea10a70535/5ba27/bwinf_40_round1.webp 183w,\n/static/a1ce44f6ee62cb4c329694ea10a70535/cd823/bwinf_40_round1.webp 366w,\n/static/a1ce44f6ee62cb4c329694ea10a70535/b87cd/bwinf_40_round1.webp 731w","type":"image/webp","sizes":"(min-width: 731px) 731px, 100vw"}]},"width":731,"height":411}}},"date":"August 2021"}}},{"node":{"id":"b20898a3-5f60-559e-bbb1-0325a0fa22e7","frontmatter":{"languages":["typescript"],"priority":32,"dependencies":["webpack"],"slug":"project_orange","link":"https://github.com/Science-Camp-Softwareentwicklung-02-22/TeamOrange","description":"Top-Down Shooter in a Week","title":"Project Orange","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAC4jAAAuIwF4pT92AAAB6klEQVR42oWSS09TURSF93neFtIHWqHUS8VEGDggYDRKWisOTAjhnVDEQDACCSFh4liLgo/SgCYSExL+A79CB8YJE3/PYp+eC1xAwmAPzt17fXetfQ4REXxJkLRcSdi2IsKheRQqr9BeriL7YAS5R+O4VZ5BsreE/OAU2u70sUZ7jZA448SAQgXcNOgtVjA38R2L01zDu3j9/AtWx/bQWDnE9ON1DPbPI5EOeZbnpbkC2PzITWqBtTkYnUUmcRc/V/bxZ/s3/u0f4W/jF+53PIG2NyBNCqQSrFOsEZeBUgp05g3CrgBBwMNBOzKZIsYeVjFRmsObF6voKQywo1YI62BJ784lEwIiDrSG8LJK2NpU2KhZvF1L49lACClSzWHnwP1QKt6XbmGYW42OUgkoyYZEDPi0RNjZIdRqhI13Eo2vBgujGpYsLDtxu9UmgFImAp3E9FEvAWdnCNt1hjHw43tC/QNhfUkhwbcYMEQJ78JotxoPOCl3tvxdyxiwUiZ82yVscuQfW1nsMXxy3A9YdpPLdiCfu3m6JxErd9YXHRojMVuVqH9SOPicxPKSRDrl9qOaQ523e9DVfc9DxLkb/X9kL9Qo5DXCUHEM7R9tVIr7mi9FsUi7F3E9MIoifPOiAx+dYZHIQdUVwGO8DxRGOMZEcAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/bd189e0525155225c9b2b33a04628548/a7193/project_orange.png","srcSet":"/static/bd189e0525155225c9b2b33a04628548/c9e85/project_orange.png 367w,\n/static/bd189e0525155225c9b2b33a04628548/8bc6d/project_orange.png 735w,\n/static/bd189e0525155225c9b2b33a04628548/a7193/project_orange.png 1469w","sizes":"(min-width: 1469px) 1469px, 100vw"},"sources":[{"srcSet":"/static/bd189e0525155225c9b2b33a04628548/0b8bd/project_orange.webp 367w,\n/static/bd189e0525155225c9b2b33a04628548/0fe8f/project_orange.webp 735w,\n/static/bd189e0525155225c9b2b33a04628548/1f94c/project_orange.webp 1469w","type":"image/webp","sizes":"(min-width: 1469px) 1469px, 100vw"}]},"width":1469,"height":826}}},"date":"February 2022"}}},{"node":{"id":"406da497-60f2-5a90-aed2-d65c3e5f0e54","frontmatter":{"languages":["typescript"],"priority":32,"dependencies":["gatsby"],"slug":"quote_rater","link":"https://github.com/christopher-besch/quote_rater","description":"Rate Quotes to Order them.","title":"Quote Rater","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB30lEQVR42m2QfWvTUBjF82FUNiVpm/eb96Rt0jXp2oQ0SZOmrd262Y5uOFT0jykKQ0T9Rxm+bus6t0zoN5plhdLv4XWKjHXw4+HAPee5hwdRdau9vuFFrbC5stbbWnZr9zu91Qf9TrcPp2V7BFBITiGAPA8iZZf6D590elsw093cdoOGZfvttY1uf7vT29QtB2clTskDOc9KuWsgvGrIuSJ84xSdEbMwaXvRshOUbL/kBJVq6Ph16GEETVANXtGvguhmZansOkFcqUaw87f9wfn5r9lsNh6PLy4m0+l0MpnsvnknaAVY4Vp/5PGznUdPdzSjlCuWDcvWCqXnL3eTn6P9wyFcdHj0A87jkzN4FIzkKF6F+f8gL169hih5EzZHSS5NC9CEEgBqjOJR4lITIMNIV2P/wqbtBXE7bK46fqwalpw3xWwBVvrT8NLx97ebr/32/YfkbHQ0PD1NRsPjZDBMDgYne5++f9z78vnrQb21fg8HtJCleG0exCy7tXrT9SPHC6u1uBrEXq3hhY0gakWNFU0vpkiwiBELKD4PgmboNMWmSYDhUIAUwWYogOJ0imRTBEOyAgXEO3ex24voPAhO80BQaE5iBYXhZU7SgKjSnMjLGivIUMMVtxbQG/kNQbvKNyMkz3AAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/14b1f3f938711f94880e5b0952b6d916/fec1d/quote_rater.png","srcSet":"/static/14b1f3f938711f94880e5b0952b6d916/4a3eb/quote_rater.png 181w,\n/static/14b1f3f938711f94880e5b0952b6d916/f9f2a/quote_rater.png 361w,\n/static/14b1f3f938711f94880e5b0952b6d916/fec1d/quote_rater.png 722w","sizes":"(min-width: 722px) 722px, 100vw"},"sources":[{"srcSet":"/static/14b1f3f938711f94880e5b0952b6d916/f6540/quote_rater.webp 181w,\n/static/14b1f3f938711f94880e5b0952b6d916/9a7e4/quote_rater.webp 361w,\n/static/14b1f3f938711f94880e5b0952b6d916/ca151/quote_rater.webp 722w","type":"image/webp","sizes":"(min-width: 722px) 722px, 100vw"}]},"width":722,"height":406}}},"date":"January 2022"}}},{"node":{"id":"5174106e-4bb8-5300-b455-253fb3796a88","frontmatter":{"languages":["python"],"priority":33,"dependencies":[],"slug":"bwinf_39_round1","link":"https://github.com/christopher-besch/bwinf_39_round1","description":"Coding Competition.","title":"BwInf 39 Round 1","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA/ElEQVR42m2S1w7DMAwD+/+fGWTD2c5ePZitmwbRE0vpTMX163SVZVkYhnVdx3EcRVFVVYggCHCSJEEYYxiglaYprW3boF6Cp2nq+x6rLMu2bXGMq33f4fM81zSHNk2DOI7jB6/rCs+EtXYcR3rDMCBwEJiCCeDnHZ7nmQY5HIzAQXRdxxCiKApamDjq/sHLspBMPmkIegqBQfAhPpmBB1hLsqEWAyAHeHDFuUpm4A6TRsPDPhmHQ6/JD9/sYS0mGEGydSV4dHV+6wNj8TdoSbVJ46pwtKpgxMOFcduagETrFBwl+7Wfb5tR/g8sHoYeCW9DybQQgnlC10fyBjUMf1U31Al4AAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/95e492f6b8b078f6280ffcb9c31a7eb2/ee310/bwinf_39_round1.png","srcSet":"/static/95e492f6b8b078f6280ffcb9c31a7eb2/27103/bwinf_39_round1.png 189w,\n/static/95e492f6b8b078f6280ffcb9c31a7eb2/48b82/bwinf_39_round1.png 377w,\n/static/95e492f6b8b078f6280ffcb9c31a7eb2/ee310/bwinf_39_round1.png 754w","sizes":"(min-width: 754px) 754px, 100vw"},"sources":[{"srcSet":"/static/95e492f6b8b078f6280ffcb9c31a7eb2/d03cf/bwinf_39_round1.webp 189w,\n/static/95e492f6b8b078f6280ffcb9c31a7eb2/c7b47/bwinf_39_round1.webp 377w,\n/static/95e492f6b8b078f6280ffcb9c31a7eb2/ac176/bwinf_39_round1.webp 754w","type":"image/webp","sizes":"(min-width: 754px) 754px, 100vw"}]},"width":754,"height":425}}},"date":"August 2020"}}},{"node":{"id":"c573109b-9a4d-501e-b0cd-91f7808e1288","frontmatter":{"languages":[],"priority":34,"dependencies":["blender"],"slug":"blender_models","link":"https://github.com/christopher-besch/blender_models","description":"Amateur 3D Models created with Blender.","title":"Blender Models","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABvklEQVR42m2QW4/aMBCF82/60oe+VKpUlS1ll9KmkBuEXEhiezyesEBCEki4/Pk6tNA+rPRpbNnnzPjYOLRd253a01nT3Wq/uVy666W7nNtLf6g5t9drfTrjvma7tr3pu7NRNYfmcKwPR12burkth5qKihcdr7tM0zTpnp786N2Av/8afzHL11KPbJrW2O6KXVlWalPGagvrel1UsBZmmI7mYGW5x7e/wmoQ0kdz/mHIP5np558UQ1HVu6I0JCpFRDHb2VBYSB7kHlMvAQ3CfBjDLJATm/9wkmmgvqfpLFpZIcuEojVSbgiQUqjNQlRzWI9X23FWmbD/JooXUbg8WSxTxw48Z/w89oe2P3JiK0SVg1QaAwD18E2cH91NbnHwmHSZsFOYRDjx0QqFE2IQOtPpfDKLnheRF0qptEVjgEQg9ZrkhUuJv4qDOMnSjHEpEDPodUQyTbjtZnZAU8aCDDlKpRCxN+seCEokgoEOgahII5FkX/sJgJgzgphLMwndpUwAif5O/qPQSXrDHfwf3U4Sm65olPhPFo+4/i0pSZvVG+qH54F+2jJlbiIjeBwaOtXb6jvqjs4JOmr+7+o3UgD/d1vX2VsAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/fec5ea1ede618e8a5b9b43714d665ecb/82514/blender_models.png","srcSet":"/static/fec5ea1ede618e8a5b9b43714d665ecb/aa5e8/blender_models.png 353w,\n/static/fec5ea1ede618e8a5b9b43714d665ecb/0abdc/blender_models.png 706w,\n/static/fec5ea1ede618e8a5b9b43714d665ecb/82514/blender_models.png 1411w","sizes":"(min-width: 1411px) 1411px, 100vw"},"sources":[{"srcSet":"/static/fec5ea1ede618e8a5b9b43714d665ecb/d1a36/blender_models.webp 353w,\n/static/fec5ea1ede618e8a5b9b43714d665ecb/76822/blender_models.webp 706w,\n/static/fec5ea1ede618e8a5b9b43714d665ecb/8cbe2/blender_models.webp 1411w","type":"image/webp","sizes":"(min-width: 1411px) 1411px, 100vw"}]},"width":1411,"height":794}}},"date":"May 2020"}}},{"node":{"id":"a0437b0a-4bd1-5136-95bc-f8347a2c6433","frontmatter":{"languages":["java"],"priority":35,"dependencies":[],"slug":"java_encryption","link":"https://github.com/christopher-besch/java_encryption","description":"A Funky Encryption Algorithm no one should ever use.","title":"Java Encryption","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABuUlEQVR42lVSCW6DMBDk/39r7kLShIbDHL7tYJvT0IUqqjrCaD2rYbwegrZtuRBcSiEl45xxoZRaGaWk1vKlmZCUca0VY4xSKqDFOcEYhEFrXYsQPLqqZJ6XSSIQavJ8QmgsirFAA2wRkgiZ18uPg59n7+cJ1jwHjBCx2/VhKM9nejx2YciezyZNxufT3G5D/K2+vtjjQaMovZwdwYuUngtP2dR1wSiE+9j1l4vb79XpqC+XKo5tUbSMaUKclA2jnrFBiJfS4Lb8wvsFnCchqsNxuN/Bs4mi/nRihwP4ZJ+f9Hp1j7t9PJrbra9rV9cjrmsYAZNVD+JFKbHft2HUxTErCo+xwUQQYssSZ/lIyEhpj3EvJS2KrqomQiZrfw8QLNa6LOvzfClLnSZwT64sDCW9sVLp0VhvzNQ0s2sHu9ZL1y5vBM45CEmCP2SzhUQoBWJ7r1sIjAmhtKac15Ra5/7EsIZhgGy1WpOEACVcIXxRrIGvmXPedR2FQazdJp3/iYGNouh6vX5vgCJJkizL0jQNwzCO4zzPoQYSirIsm6b5J66qCnrwA0Eb/O0G8DfGtG8AYza498l/ABSvZSyj/dM1AAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/3d1330b24531a344824d900190760ca4/b027b/java_encryption.png","srcSet":"/static/3d1330b24531a344824d900190760ca4/1f596/java_encryption.png 152w,\n/static/3d1330b24531a344824d900190760ca4/f6b65/java_encryption.png 305w,\n/static/3d1330b24531a344824d900190760ca4/b027b/java_encryption.png 609w","sizes":"(min-width: 609px) 609px, 100vw"},"sources":[{"srcSet":"/static/3d1330b24531a344824d900190760ca4/c4b59/java_encryption.webp 152w,\n/static/3d1330b24531a344824d900190760ca4/b29a5/java_encryption.webp 305w,\n/static/3d1330b24531a344824d900190760ca4/26613/java_encryption.webp 609w","type":"image/webp","sizes":"(min-width: 609px) 609px, 100vw"}]},"width":609,"height":342}}},"date":"February 2021"}}},{"node":{"id":"075a429f-cef7-5042-89f2-88593af6cc5f","frontmatter":{"languages":["java"],"priority":35,"dependencies":["sqllite","spark","maven"],"slug":"social_blog","link":"https://github.com/pascal-kuschkowitz/Inf-Proj-ProductDev","description":"A little School Project using SQLite and Java.","title":"Social Blog","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA+0lEQVR42pWS626DMAyFef+nW7dSaZU29q8jCSThEgIFzux0kSqtkM6SJSu2D/6MM2MstDHo3QA/jsEH72+xH8N77xzcMGC6XpOe4dccNTVNA60N2rYLcdd1+K9l67qGoBQCxzzH2zHHy+EV+emEj88CMf+0YKqABaM/k8vuk0pVkFIRak/YbcCODcuyUE7CWPtnHZuC3CCERK01iSvUdY1b7Yp5nnG5fEPSu6a8JdGk4BYWT8e+t5LHE9LXGdkSFp9TLIyiZSkCMuNyzUintTsh71BVVUBlrPvCaZro7x/wfj6jKL6CoKd73RRMGU/Ioo/QdwX3ziS1b7YfJ4ZfcmYkdp8AAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/e562f950599e1539c8904b96c2ab2241/87706/social_blog.png","srcSet":"/static/e562f950599e1539c8904b96c2ab2241/f80f8/social_blog.png 320w,\n/static/e562f950599e1539c8904b96c2ab2241/9a63f/social_blog.png 640w,\n/static/e562f950599e1539c8904b96c2ab2241/87706/social_blog.png 1280w","sizes":"(min-width: 1280px) 1280px, 100vw"},"sources":[{"srcSet":"/static/e562f950599e1539c8904b96c2ab2241/c0bcc/social_blog.webp 320w,\n/static/e562f950599e1539c8904b96c2ab2241/17574/social_blog.webp 640w,\n/static/e562f950599e1539c8904b96c2ab2241/71d4d/social_blog.webp 1280w","type":"image/webp","sizes":"(min-width: 1280px) 1280px, 100vw"}]},"width":1280,"height":720}}},"date":"October 2020"}}},{"node":{"id":"be675c7f-31af-5837-b780-07eff6d95a0d","frontmatter":{"languages":["python"],"priority":41,"dependencies":[],"slug":"bwinf_37_round1","link":"https://github.com/christopher-besch/bwinf_37_round1","description":"Coding Competition.","title":"BwInf 37 Round 1","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABRUlEQVR42k1SjXrCMAjsM5i0QIA2qTr95vu/344k63bVGgwHx8+iTG23dlhrB9MmIkyE77quuWO7QPEA0yJa4ORmrmpF3Eprre4wy0VGuNKhRfEp04KhS05Jhb8/n7PW6vp6v9+vFxPfbreUcsqZiItMMLOwDBOBFsRGCuENUhHZ3SU8NnNXZhS173utqMysaD2qKf5mRAc/yEhuWh5nq1ashOBRvNCGA1iIqCE7QiNtgqQgpSDjiCa50JoTvNGKW0fITrm3hriDopeQyKMdy/gBz5nurX4978/7ibYh8bzqzF5qGYd4i0DgJKfOr8dx1OYqiII60SBoAyeaXApo60BexywmOeaZ86Pu1c15W6OkfI1qTAhq6V8JwCTDG1JON6Utir2o4/YX2I1r/n+Zkbbt6KlifzB9iLw8YkmwGDIXA/zr6ge8Pz5cfrC+QAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/014908da94e0813ede327942eebbcc65/9bad6/bwinf_37_round1.png","srcSet":"/static/014908da94e0813ede327942eebbcc65/ced49/bwinf_37_round1.png 171w,\n/static/014908da94e0813ede327942eebbcc65/72dd6/bwinf_37_round1.png 343w,\n/static/014908da94e0813ede327942eebbcc65/9bad6/bwinf_37_round1.png 685w","sizes":"(min-width: 685px) 685px, 100vw"},"sources":[{"srcSet":"/static/014908da94e0813ede327942eebbcc65/8a4d2/bwinf_37_round1.webp 171w,\n/static/014908da94e0813ede327942eebbcc65/e31ae/bwinf_37_round1.webp 343w,\n/static/014908da94e0813ede327942eebbcc65/24a56/bwinf_37_round1.webp 685w","type":"image/webp","sizes":"(min-width: 685px) 685px, 100vw"}]},"width":685,"height":385}}},"date":"August 2018"}}},{"node":{"id":"a546ebe5-dfbb-5cba-a3cd-d1a5d959e7c5","frontmatter":{"languages":["java"],"priority":41,"dependencies":[],"slug":"java_sorting_algorithms","link":"https://github.com/christopher-besch/sorting_algorithms","description":"Example Implementation of Quick Sort.","title":"Java Quick Sort","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABKElEQVR42oVRi27DIAzkHwrEBD+ANOmy/f//7SBJu0qTerIcY8X2+eyWgVJKa1ar1KKmOWcKIfhPcMIsOXPmeZ5jiKEbyuBCBKY4Af0T/wK5XsyJqikR4U0poQXiNAJkwoVr2BsdRzGYgTA6iKo9gQzY3wDvh/uPNlguprUUFeFMmEcU4efUA2FQQJJQfhudrqC3c6B0N11auwNNliamcy1cK1Qg1VkFlpi7IQMte5wJmzv0QNVj21q1WgRe8vmfDy90JeMVx259MlQ0zlBoaBoh3JAzDKXjh1OhDPJAKeWMC2OymZiBtqrysaT3/tr2zRzGywHmUiA4QyfwOI26JzpjsBvPeGQcuq7ruu/7Y1t/vtf9a9nWCiulE8HmiV5dUIxDIBi3mH4ByQJAIObWcLEAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/a0a37e44a5b2abd8a730c618e8063a33/2a75c/java_quick_sort.png","srcSet":"/static/a0a37e44a5b2abd8a730c618e8063a33/0dbce/java_quick_sort.png 257w,\n/static/a0a37e44a5b2abd8a730c618e8063a33/12c30/java_quick_sort.png 513w,\n/static/a0a37e44a5b2abd8a730c618e8063a33/2a75c/java_quick_sort.png 1026w","sizes":"(min-width: 1026px) 1026px, 100vw"},"sources":[{"srcSet":"/static/a0a37e44a5b2abd8a730c618e8063a33/e43da/java_quick_sort.webp 257w,\n/static/a0a37e44a5b2abd8a730c618e8063a33/fffe3/java_quick_sort.webp 513w,\n/static/a0a37e44a5b2abd8a730c618e8063a33/51e4d/java_quick_sort.webp 1026w","type":"image/webp","sizes":"(min-width: 1026px) 1026px, 100vw"}]},"width":1026,"height":577}}},"date":"September 2020"}}},{"node":{"id":"a43853c3-0c86-5519-a03f-2a6011a3509c","frontmatter":{"languages":["python"],"priority":42,"dependencies":[],"slug":"manim","link":"https://www.manim.community","description":"A community maintained Python library for creating mathematical animations.","title":"Manim","thumb":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAB2klEQVR42q2TX09TQRDF7+fTxKifwAde8MkHjZpQElNRqNCagiZiajQkjQah1UraWiolSLFCWyy2irVAubf/7m1vpdX4+HN3oUoIJmp8ONmd2d0zM2dmtWZ1l/8Jza4bfDGrymjVdLWXvqMXrUr5zwi3Nwvks2uKzDR2eJ9ZpVz8oGxJ0kMvqLwjIX12Xad9gJ+EksDjGhYkH9lIp7jjcVPM5/jWthRJt9Vgz6rxbvUN7UaFr3aDbrOuqtC3SuyW9mEa+xVoemmTwBM/i7EIiViYyPMAeREktZQQJCtEQ0G1n/ZPsTgf5eVciHg4RCGbweGY5lzfJH39PnLZAh3LQPtc2CC5EFcPkom4IpYkg1evcFtk7hwcYMI9infsFmPDNxi57mTIMcD45DgXXVOcOOPm5Gk36ZWMqKaKlk0lef0qJiKuUVhPEwkFCD+bxf/wAXOBpwIzKmu5SnteZOh7dJ8Ld53cjPs4P3SPs6dcvPWO0jF1tJ7oUp+e6LIhHaGT9Ekde6vdMPjesljILXNpxsvl2Qn88SDrnhGK1/ox00tovxsLKfLhLiscnNX0LYKpKI+XX6CXP9Gt7dCsiM4b278I/waygr26yFrArhmYh+fwX3+EVS0fO+w/AIDi+spP065nAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/131d488121e2764ced8229bd101b9001/85cff/manim.png","srcSet":"/static/131d488121e2764ced8229bd101b9001/a25bb/manim.png 139w,\n/static/131d488121e2764ced8229bd101b9001/3035b/manim.png 279w,\n/static/131d488121e2764ced8229bd101b9001/85cff/manim.png 557w","sizes":"(min-width: 557px) 557px, 100vw"},"sources":[{"srcSet":"/static/131d488121e2764ced8229bd101b9001/082a1/manim.webp 139w,\n/static/131d488121e2764ced8229bd101b9001/0eb14/manim.webp 279w,\n/static/131d488121e2764ced8229bd101b9001/d823f/manim.webp 557w","type":"image/webp","sizes":"(min-width: 557px) 557px, 100vw"}]},"width":557,"height":313}}},"date":"September 2021"}}}]}},"pageContext":{}},"staticQueryHashes":["1995789189","2480137602"],"slicesMap":{}} \ No newline at end of file diff --git a/photography/index.html b/photography/index.html index 21995747..fc35f05c 100644 --- a/photography/index.html +++ b/photography/index.html @@ -52,6 +52,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/photography/leaving_home/index.html b/photography/leaving_home/index.html index 9c237068..ae4fa972 100644 --- a/photography/leaving_home/index.html +++ b/photography/leaving_home/index.html @@ -52,6 +52,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/photography/to_vanish/index.html b/photography/to_vanish/index.html index 054f1ee5..c48595e0 100644 --- a/photography/to_vanish/index.html +++ b/photography/to_vanish/index.html @@ -52,6 +52,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/photography/transient/index.html b/photography/transient/index.html index 57b3acee..9ae0093d 100644 --- a/photography/transient/index.html +++ b/photography/transient/index.html @@ -52,6 +52,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/privacy/index.html b/privacy/index.html index 72d8b5a3..6ecb4412 100644 --- a/privacy/index.html +++ b/privacy/index.html @@ -52,6 +52,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/projects/c/index.html b/projects/c/index.html new file mode 100644 index 00000000..3fd28338 --- /dev/null +++ b/projects/c/index.html @@ -0,0 +1,57 @@ +Projects—Christopher Besch + + \ No newline at end of file diff --git a/projects/cpp/index.html b/projects/cpp/index.html index 26089c0c..b4d786e0 100644 --- a/projects/cpp/index.html +++ b/projects/cpp/index.html @@ -52,6 +52,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/projects/index.html b/projects/index.html index 375aa082..b9331903 100644 --- a/projects/index.html +++ b/projects/index.html @@ -48,10 +48,10 @@ } } }) - Projects—Christopher Besch

Projects


thumbnail

Manim Editor

python
typescript

Web Presenter for Mathematical Animations using Manim.

thumbnail

Visualizations

cpp

Visualize Graphs with Godot and C++.

thumbnail

compare_view

typescript

Blend Between Multiple Images.

thumbnail

docker_cron


Scheduling container tasks with docker-compose.

thumbnail

docker_logdna

rust

IBM: Logdna logging driver Docker plugin.

thumbnail

Maki

cpp
python

Interactive and Programmatic Animation Development; or: How to Time Travel?

thumbnail

Neural Network

cpp

Experimental Deep-Learning Framework.

thumbnail

Ray Tracer

cpp

Experimental Offline Ray Tracer.

thumbnail

Todd Linux

python

Experimental Source-Based Linux Distribution.

Show All
+ Projects—Christopher Besch

Projects


thumbnail

Manim Editor

python
typescript

Web Presenter for Mathematical Animations using Manim.

thumbnail

Visualizations

cpp

Visualize Graphs with Godot and C++.

thumbnail

compare_view

typescript

Blend Between Multiple Images.

thumbnail

mold_detect

c

Warn residents of mold-friendly atmosphere and log opened windows.

thumbnail

docker_logdna

rust

IBM: Logdna logging driver Docker plugin.

thumbnail

Maki

cpp
python

Interactive and Programmatic Animation Development; or: How to Time Travel?

thumbnail

Neural Network

cpp

Experimental Deep-Learning Framework.

thumbnail

Ray Tracer

cpp

Experimental Offline Ray Tracer.

thumbnail

Todd Linux

python

Experimental Source-Based Linux Distribution.

Show All
- \ No newline at end of file + \ No newline at end of file diff --git a/projects/java/index.html b/projects/java/index.html index e75b8e38..e84bb5a2 100644 --- a/projects/java/index.html +++ b/projects/java/index.html @@ -52,6 +52,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/projects/python/index.html b/projects/python/index.html index fb092d27..2de61cca 100644 --- a/projects/python/index.html +++ b/projects/python/index.html @@ -52,6 +52,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/projects/rust/index.html b/projects/rust/index.html index 5c0a4493..60c158fd 100644 --- a/projects/rust/index.html +++ b/projects/rust/index.html @@ -52,6 +52,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/projects/typescript/index.html b/projects/typescript/index.html index debd8242..46103737 100644 --- a/projects/typescript/index.html +++ b/projects/typescript/index.html @@ -52,6 +52,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/static/e3a1143657c343da032639c75f73878a/05bc9/mold_detect.png b/static/e3a1143657c343da032639c75f73878a/05bc9/mold_detect.png new file mode 100644 index 0000000000000000000000000000000000000000..f16806b38e43a64528c848dfc7f3506de937ab38 GIT binary patch literal 96242 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 literal 0 HcmV?d00001 diff --git a/static/e3a1143657c343da032639c75f73878a/20203/mold_detect.webp b/static/e3a1143657c343da032639c75f73878a/20203/mold_detect.webp new file mode 100644 index 0000000000000000000000000000000000000000..b07e4881d79b5f4fb5eeb184e472e8401426e5fc GIT binary patch literal 4410 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 AU;qFB literal 0 HcmV?d00001 diff --git a/static/e3a1143657c343da032639c75f73878a/44573/mold_detect.webp b/static/e3a1143657c343da032639c75f73878a/44573/mold_detect.webp new file mode 100644 index 0000000000000000000000000000000000000000..c3b7f7a4c3db95185777007a3f36a77138631158 GIT binary patch literal 28890 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 literal 0 HcmV?d00001 diff --git a/webpack-runtime-3f948c29a210e4747687.js b/webpack-runtime-3f948c29a210e4747687.js new file mode 100644 index 00000000..346b842b --- /dev/null +++ b/webpack-runtime-3f948c29a210e4747687.js @@ -0,0 +1,2 @@ +!function(){"use strict";var e,t,n,r,o,a,c,i={},s={};function f(e){var t=s[e];if(void 0!==t)return t.exports;var n=s[e]={exports:{}};return i[e](n,n.exports,f),n.exports}f.m=i,e=[],f.O=function(t,n,r,o){if(!n){var a=1/0;for(u=0;u=o)&&Object.keys(f.O).every((function(e){return f.O[e](n[i])}))?n.splice(i--,1):(c=!1,o0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[n,r,o]},f.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return f.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},f.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var o=Object.create(null);f.r(o);var a={};t=t||[null,n({}),n([]),n(n)];for(var c=2&r&&e;"object"==typeof c&&!~t.indexOf(c);c=n(c))Object.getOwnPropertyNames(c).forEach((function(t){a[t]=function(){return e[t]}}));return a.default=function(){return e},f.d(o,a),o},f.d=function(e,t){for(var n in t)f.o(t,n)&&!f.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},f.f={},f.e=function(e){return Promise.all(Object.keys(f.f).reduce((function(t,n){return f.f[n](e,t),t}),[]))},f.u=function(e){return({9:"c804ae579c3e2b4740c8c44db44e41913c869de7",18:"component---src-templates-projects-language-tsx",49:"component---src-pages-about-tsx",63:"component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md",129:"component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md",144:"component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md",218:"component---src-pages-404-tsx",248:"component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md",317:"component---src-pages-projects-tsx",339:"component---src-pages-articles-tsx",370:"component---src-pages-photography-leaving-home-tsx",398:"component---src-pages-photography-transient-tsx",412:"component---src-pages-photography-index-tsx",488:"component---src-pages-photography-to-vanish-tsx",532:"styles",566:"eb4d601d433ae0407bb09582457157111a28f8a4",657:"component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md",691:"component---src-pages-index-tsx",821:"59ecb6b20c093a27a8a7b94060ba1aa50dff7465",831:"component---src-pages-privacy-tsx",964:"component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md",994:"component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md"}[e]||e)+"-"+{9:"2c42feaa3017eda97d1c",18:"0097dee73f39d18c6125",49:"e78dd311a29d07914929",63:"c1cd5142d52b0620fa6e",129:"0dc7578afbe0f6804be1",144:"6c3758660f2fd26eb3aa",218:"0e4184ff774d07ff7424",248:"7987ecfa3f60efdef757",317:"cf9175c85e5ff3d0840f",339:"aee777c739ad265b4b37",370:"1d31d0fc72b427f62866",398:"da3c3d6b2e8e37152883",412:"8d1e8199fe3d0cfa0451",488:"96906898296e8346f439",532:"31adbf9bb943a902a61e",566:"6e877925300148db5b30",657:"1473237b99aadc49bedc",691:"ad7c035d82f1d9159f1c",731:"ba8a53f8281a1cc95015",821:"99fffe9cc00f51c70011",831:"f5b20c36c4a2a18f1f54",843:"d5350335afc5e3cd6698",964:"0fabff1b1842545c8a5d",994:"28fdf47d2f96c11d9211"}[e]+".js"},f.miniCssF=function(e){return"styles.99571fbd12a33704904b.css"},f.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="homepage:",f.l=function(e,t,n,a){if(r[e])r[e].push(t);else{var c,i;if(void 0!==n)for(var s=document.getElementsByTagName("script"),u=0;u 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"homepage:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","var createStylesheet = function(chunkId, fullhref, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tdocument.head.appendChild(linkTag);\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t658: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"532\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + ({\"9\":\"c804ae579c3e2b4740c8c44db44e41913c869de7\",\"18\":\"component---src-templates-projects-language-tsx\",\"49\":\"component---src-pages-about-tsx\",\"63\":\"component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md\",\"129\":\"component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md\",\"144\":\"component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md\",\"218\":\"component---src-pages-404-tsx\",\"248\":\"component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md\",\"317\":\"component---src-pages-projects-tsx\",\"339\":\"component---src-pages-articles-tsx\",\"370\":\"component---src-pages-photography-leaving-home-tsx\",\"398\":\"component---src-pages-photography-transient-tsx\",\"412\":\"component---src-pages-photography-index-tsx\",\"488\":\"component---src-pages-photography-to-vanish-tsx\",\"532\":\"styles\",\"566\":\"eb4d601d433ae0407bb09582457157111a28f8a4\",\"657\":\"component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md\",\"691\":\"component---src-pages-index-tsx\",\"821\":\"59ecb6b20c093a27a8a7b94060ba1aa50dff7465\",\"831\":\"component---src-pages-privacy-tsx\",\"964\":\"component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md\",\"994\":\"component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md\"}[chunkId] || chunkId) + \"-\" + {\"9\":\"2c42feaa3017eda97d1c\",\"18\":\"0097dee73f39d18c6125\",\"49\":\"e78dd311a29d07914929\",\"63\":\"c1cd5142d52b0620fa6e\",\"129\":\"0dc7578afbe0f6804be1\",\"144\":\"6c3758660f2fd26eb3aa\",\"218\":\"0e4184ff774d07ff7424\",\"248\":\"7987ecfa3f60efdef757\",\"317\":\"cf9175c85e5ff3d0840f\",\"339\":\"aee777c739ad265b4b37\",\"370\":\"1d31d0fc72b427f62866\",\"398\":\"da3c3d6b2e8e37152883\",\"412\":\"8d1e8199fe3d0cfa0451\",\"488\":\"96906898296e8346f439\",\"532\":\"31adbf9bb943a902a61e\",\"566\":\"6e877925300148db5b30\",\"657\":\"1473237b99aadc49bedc\",\"691\":\"ad7c035d82f1d9159f1c\",\"731\":\"ba8a53f8281a1cc95015\",\"821\":\"99fffe9cc00f51c70011\",\"831\":\"f5b20c36c4a2a18f1f54\",\"843\":\"d5350335afc5e3cd6698\",\"964\":\"0fabff1b1842545c8a5d\",\"994\":\"28fdf47d2f96c11d9211\"}[chunkId] + \".js\";\n};","// This function allow to reference all chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + \"styles\" + \".\" + \"99571fbd12a33704904b\" + \".css\";\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t658: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^(532|658)$/.test(chunkId)) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhomepage\"] = self[\"webpackChunkhomepage\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","loadStylesheet","installedCssChunks","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","getPrototypeOf","obj","__proto__","t","value","mode","this","then","ns","create","def","current","indexOf","getOwnPropertyNames","forEach","definition","o","defineProperty","enumerable","get","f","e","chunkId","Promise","all","reduce","promises","u","miniCssF","prop","prototype","hasOwnProperty","call","l","url","done","push","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","setTimeout","bind","type","target","head","appendChild","Symbol","toStringTag","p","resolve","reject","href","fullhref","existingLinkTags","dataHref","tag","rel","existingStyleTags","findStylesheet","linkTag","errorType","realHref","err","Error","code","request","createStylesheet","miniCss","installedChunks","installedChunkData","test","promise","error","realSrc","message","name","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","id","chunkLoadingGlobal","self"],"sourceRoot":""} \ No newline at end of file diff --git a/webpack-runtime-fb877d2ab59b330d26bb.js b/webpack-runtime-fb877d2ab59b330d26bb.js deleted file mode 100644 index 02e4506b..00000000 --- a/webpack-runtime-fb877d2ab59b330d26bb.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(){"use strict";var e,t,n,r,o,a,c,i={},s={};function f(e){var t=s[e];if(void 0!==t)return t.exports;var n=s[e]={exports:{}};return i[e](n,n.exports,f),n.exports}f.m=i,e=[],f.O=function(t,n,r,o){if(!n){var a=1/0;for(u=0;u=o)&&Object.keys(f.O).every((function(e){return f.O[e](n[i])}))?n.splice(i--,1):(c=!1,o0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[n,r,o]},f.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return f.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},f.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var o=Object.create(null);f.r(o);var a={};t=t||[null,n({}),n([]),n(n)];for(var c=2&r&&e;"object"==typeof c&&!~t.indexOf(c);c=n(c))Object.getOwnPropertyNames(c).forEach((function(t){a[t]=function(){return e[t]}}));return a.default=function(){return e},f.d(o,a),o},f.d=function(e,t){for(var n in t)f.o(t,n)&&!f.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},f.f={},f.e=function(e){return Promise.all(Object.keys(f.f).reduce((function(t,n){return f.f[n](e,t),t}),[]))},f.u=function(e){return({18:"component---src-templates-projects-language-tsx",49:"component---src-pages-about-tsx",63:"component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md",129:"component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md",144:"component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md",218:"component---src-pages-404-tsx",248:"component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md",317:"component---src-pages-projects-tsx",339:"component---src-pages-articles-tsx",370:"component---src-pages-photography-leaving-home-tsx",398:"component---src-pages-photography-transient-tsx",412:"component---src-pages-photography-index-tsx",488:"component---src-pages-photography-to-vanish-tsx",532:"styles",566:"eb4d601d433ae0407bb09582457157111a28f8a4",657:"component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md",691:"component---src-pages-index-tsx",821:"59ecb6b20c093a27a8a7b94060ba1aa50dff7465",831:"component---src-pages-privacy-tsx",964:"component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md",994:"component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md"}[e]||e)+"-"+{18:"cad086841d9502611b71",49:"e78dd311a29d07914929",63:"c1cd5142d52b0620fa6e",129:"0dc7578afbe0f6804be1",144:"6c3758660f2fd26eb3aa",218:"0e4184ff774d07ff7424",248:"7987ecfa3f60efdef757",317:"6913816ab911269673c3",339:"aee777c739ad265b4b37",370:"1d31d0fc72b427f62866",398:"da3c3d6b2e8e37152883",412:"8d1e8199fe3d0cfa0451",488:"96906898296e8346f439",532:"31adbf9bb943a902a61e",566:"6e877925300148db5b30",657:"1473237b99aadc49bedc",691:"9ee5b786a2e7b89276c9",731:"ba8a53f8281a1cc95015",821:"99fffe9cc00f51c70011",831:"f5b20c36c4a2a18f1f54",843:"d5350335afc5e3cd6698",964:"0fabff1b1842545c8a5d",994:"28fdf47d2f96c11d9211"}[e]+".js"},f.miniCssF=function(e){return"styles.99571fbd12a33704904b.css"},f.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="homepage:",f.l=function(e,t,n,a){if(r[e])r[e].push(t);else{var c,i;if(void 0!==n)for(var s=document.getElementsByTagName("script"),u=0;u 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"homepage:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","var createStylesheet = function(chunkId, fullhref, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tdocument.head.appendChild(linkTag);\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t658: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"532\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + ({\"18\":\"component---src-templates-projects-language-tsx\",\"49\":\"component---src-pages-about-tsx\",\"63\":\"component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md\",\"129\":\"component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md\",\"144\":\"component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md\",\"218\":\"component---src-pages-404-tsx\",\"248\":\"component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md\",\"317\":\"component---src-pages-projects-tsx\",\"339\":\"component---src-pages-articles-tsx\",\"370\":\"component---src-pages-photography-leaving-home-tsx\",\"398\":\"component---src-pages-photography-transient-tsx\",\"412\":\"component---src-pages-photography-index-tsx\",\"488\":\"component---src-pages-photography-to-vanish-tsx\",\"532\":\"styles\",\"566\":\"eb4d601d433ae0407bb09582457157111a28f8a4\",\"657\":\"component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md\",\"691\":\"component---src-pages-index-tsx\",\"821\":\"59ecb6b20c093a27a8a7b94060ba1aa50dff7465\",\"831\":\"component---src-pages-privacy-tsx\",\"964\":\"component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md\",\"994\":\"component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md\"}[chunkId] || chunkId) + \"-\" + {\"18\":\"cad086841d9502611b71\",\"49\":\"e78dd311a29d07914929\",\"63\":\"c1cd5142d52b0620fa6e\",\"129\":\"0dc7578afbe0f6804be1\",\"144\":\"6c3758660f2fd26eb3aa\",\"218\":\"0e4184ff774d07ff7424\",\"248\":\"7987ecfa3f60efdef757\",\"317\":\"6913816ab911269673c3\",\"339\":\"aee777c739ad265b4b37\",\"370\":\"1d31d0fc72b427f62866\",\"398\":\"da3c3d6b2e8e37152883\",\"412\":\"8d1e8199fe3d0cfa0451\",\"488\":\"96906898296e8346f439\",\"532\":\"31adbf9bb943a902a61e\",\"566\":\"6e877925300148db5b30\",\"657\":\"1473237b99aadc49bedc\",\"691\":\"9ee5b786a2e7b89276c9\",\"731\":\"ba8a53f8281a1cc95015\",\"821\":\"99fffe9cc00f51c70011\",\"831\":\"f5b20c36c4a2a18f1f54\",\"843\":\"d5350335afc5e3cd6698\",\"964\":\"0fabff1b1842545c8a5d\",\"994\":\"28fdf47d2f96c11d9211\"}[chunkId] + \".js\";\n};","// This function allow to reference all chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + \"styles\" + \".\" + \"99571fbd12a33704904b\" + \".css\";\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t658: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^(532|658)$/.test(chunkId)) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhomepage\"] = self[\"webpackChunkhomepage\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","loadStylesheet","installedCssChunks","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","getPrototypeOf","obj","__proto__","t","value","mode","this","then","ns","create","def","current","indexOf","getOwnPropertyNames","forEach","definition","o","defineProperty","enumerable","get","f","e","chunkId","Promise","all","reduce","promises","u","miniCssF","prop","prototype","hasOwnProperty","call","l","url","done","push","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","setTimeout","bind","type","target","head","appendChild","Symbol","toStringTag","p","resolve","reject","href","fullhref","existingLinkTags","dataHref","tag","rel","existingStyleTags","findStylesheet","linkTag","errorType","realHref","err","Error","code","request","createStylesheet","miniCss","installedChunks","installedChunkData","test","promise","error","realSrc","message","name","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","id","chunkLoadingGlobal","self"],"sourceRoot":""} \ No newline at end of file diff --git a/webpack.stats.json b/webpack.stats.json index e60fd656..448975c6 100644 --- a/webpack.stats.json +++ b/webpack.stats.json @@ -1 +1 @@ -{"name":"build-javascript","namedChunkGroups":{"app":{"name":"app","assets":[{"name":"webpack-runtime-fb877d2ab59b330d26bb.js","size":6521},{"name":"framework-0a3afb48ba96f399ef2c.js","size":140757},{"name":"app-9d8349539d1a53475fba.js","size":66106}],"filteredAssets":0,"assetsSize":213384,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":610029},"component---src-pages-404-tsx":{"name":"component---src-pages-404-tsx","assets":[{"name":"styles.99571fbd12a33704904b.css","size":38825},{"name":"component---src-pages-404-tsx-0e4184ff774d07ff7424.js","size":5417}],"filteredAssets":0,"assetsSize":44242,"filteredAuxiliaryAssets":1,"auxiliaryAssetsSize":13720},"component---src-pages-about-tsx":{"name":"component---src-pages-about-tsx","assets":[{"name":"styles.99571fbd12a33704904b.css","size":38825},{"name":"component---src-pages-about-tsx-e78dd311a29d07914929.js","size":18250}],"filteredAssets":0,"assetsSize":57075,"filteredAuxiliaryAssets":1,"auxiliaryAssetsSize":32438},"component---src-pages-articles-tsx":{"name":"component---src-pages-articles-tsx","assets":[{"name":"styles.99571fbd12a33704904b.css","size":38825},{"name":"59ecb6b20c093a27a8a7b94060ba1aa50dff7465-99fffe9cc00f51c70011.js","size":15189},{"name":"component---src-pages-articles-tsx-aee777c739ad265b4b37.js","size":1651}],"filteredAssets":0,"assetsSize":55665,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":85579},"component---src-pages-index-tsx":{"name":"component---src-pages-index-tsx","assets":[{"name":"styles.99571fbd12a33704904b.css","size":38825},{"name":"59ecb6b20c093a27a8a7b94060ba1aa50dff7465-99fffe9cc00f51c70011.js","size":15189},{"name":"component---src-pages-index-tsx-9ee5b786a2e7b89276c9.js","size":7526}],"filteredAssets":0,"assetsSize":61540,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":104058},"component---src-pages-photography-index-tsx":{"name":"component---src-pages-photography-index-tsx","assets":[{"name":"styles.99571fbd12a33704904b.css","size":38825},{"name":"59ecb6b20c093a27a8a7b94060ba1aa50dff7465-99fffe9cc00f51c70011.js","size":15189},{"name":"component---src-pages-photography-index-tsx-8d1e8199fe3d0cfa0451.js","size":1699}],"filteredAssets":0,"assetsSize":55713,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":84480},"component---src-pages-photography-leaving-home-tsx":{"name":"component---src-pages-photography-leaving-home-tsx","assets":[{"name":"styles.99571fbd12a33704904b.css","size":38825},{"name":"59ecb6b20c093a27a8a7b94060ba1aa50dff7465-99fffe9cc00f51c70011.js","size":15189},{"name":"component---src-pages-photography-leaving-home-tsx-1d31d0fc72b427f62866.js","size":1713}],"filteredAssets":0,"assetsSize":55727,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":84568},"component---src-pages-photography-to-vanish-tsx":{"name":"component---src-pages-photography-to-vanish-tsx","assets":[{"name":"styles.99571fbd12a33704904b.css","size":38825},{"name":"59ecb6b20c093a27a8a7b94060ba1aa50dff7465-99fffe9cc00f51c70011.js","size":15189},{"name":"component---src-pages-photography-to-vanish-tsx-96906898296e8346f439.js","size":1710}],"filteredAssets":0,"assetsSize":55724,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":84549},"component---src-pages-photography-transient-tsx":{"name":"component---src-pages-photography-transient-tsx","assets":[{"name":"styles.99571fbd12a33704904b.css","size":38825},{"name":"59ecb6b20c093a27a8a7b94060ba1aa50dff7465-99fffe9cc00f51c70011.js","size":15189},{"name":"component---src-pages-photography-transient-tsx-da3c3d6b2e8e37152883.js","size":1708}],"filteredAssets":0,"assetsSize":55722,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":84551},"component---src-pages-privacy-tsx":{"name":"component---src-pages-privacy-tsx","assets":[{"name":"styles.99571fbd12a33704904b.css","size":38825},{"name":"component---src-pages-privacy-tsx-f5b20c36c4a2a18f1f54.js","size":8903}],"filteredAssets":0,"assetsSize":47728,"filteredAuxiliaryAssets":1,"auxiliaryAssetsSize":19006},"component---src-pages-projects-tsx":{"name":"component---src-pages-projects-tsx","assets":[{"name":"styles.99571fbd12a33704904b.css","size":38825},{"name":"59ecb6b20c093a27a8a7b94060ba1aa50dff7465-99fffe9cc00f51c70011.js","size":15189},{"name":"component---src-pages-projects-tsx-6913816ab911269673c3.js","size":10365}],"filteredAssets":0,"assetsSize":64379,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":119625},"component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md":{"name":"component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md","assets":[{"name":"styles.99571fbd12a33704904b.css","size":38825},{"name":"eb4d601d433ae0407bb09582457157111a28f8a4-6e877925300148db5b30.js","size":93001},{"name":"component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md-0dc7578afbe0f6804be1.js","size":7611}],"filteredAssets":0,"assetsSize":139437,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":289974},"component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md":{"name":"component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md","assets":[{"name":"styles.99571fbd12a33704904b.css","size":38825},{"name":"eb4d601d433ae0407bb09582457157111a28f8a4-6e877925300148db5b30.js","size":93001},{"name":"component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md-7987ecfa3f60efdef757.js","size":57049}],"filteredAssets":0,"assetsSize":188875,"filteredAuxiliaryAssets":13,"auxiliaryAssetsSize":54108594},"component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md":{"name":"component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md","assets":[{"name":"styles.99571fbd12a33704904b.css","size":38825},{"name":"eb4d601d433ae0407bb09582457157111a28f8a4-6e877925300148db5b30.js","size":93001},{"name":"component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md-0fabff1b1842545c8a5d.js","size":67303}],"filteredAssets":0,"assetsSize":199129,"filteredAuxiliaryAssets":11,"auxiliaryAssetsSize":2445584},"component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md":{"name":"component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md","assets":[{"name":"styles.99571fbd12a33704904b.css","size":38825},{"name":"eb4d601d433ae0407bb09582457157111a28f8a4-6e877925300148db5b30.js","size":93001},{"name":"component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md-1473237b99aadc49bedc.js","size":49276}],"filteredAssets":0,"assetsSize":181102,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":480560},"component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md":{"name":"component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md","assets":[{"name":"styles.99571fbd12a33704904b.css","size":38825},{"name":"eb4d601d433ae0407bb09582457157111a28f8a4-6e877925300148db5b30.js","size":93001},{"name":"component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md-28fdf47d2f96c11d9211.js","size":2328}],"filteredAssets":0,"assetsSize":134154,"filteredAuxiliaryAssets":4,"auxiliaryAssetsSize":3417873},"component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md":{"name":"component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md","assets":[{"name":"styles.99571fbd12a33704904b.css","size":38825},{"name":"eb4d601d433ae0407bb09582457157111a28f8a4-6e877925300148db5b30.js","size":93001},{"name":"component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md-c1cd5142d52b0620fa6e.js","size":12030}],"filteredAssets":0,"assetsSize":143856,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":296776},"component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md":{"name":"component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md","assets":[{"name":"styles.99571fbd12a33704904b.css","size":38825},{"name":"eb4d601d433ae0407bb09582457157111a28f8a4-6e877925300148db5b30.js","size":93001},{"name":"component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md-6c3758660f2fd26eb3aa.js","size":11698}],"filteredAssets":0,"assetsSize":143524,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":295735},"component---src-templates-projects-language-tsx":{"name":"component---src-templates-projects-language-tsx","assets":[{"name":"styles.99571fbd12a33704904b.css","size":38825},{"name":"59ecb6b20c093a27a8a7b94060ba1aa50dff7465-99fffe9cc00f51c70011.js","size":15189},{"name":"component---src-templates-projects-language-tsx-cad086841d9502611b71.js","size":10572}],"filteredAssets":0,"assetsSize":64586,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":120530}},"assetsByChunkName":{"app":["webpack-runtime-fb877d2ab59b330d26bb.js","framework-0a3afb48ba96f399ef2c.js","app-9d8349539d1a53475fba.js"],"component---src-pages-404-tsx":["styles.99571fbd12a33704904b.css","component---src-pages-404-tsx-0e4184ff774d07ff7424.js"],"component---src-pages-about-tsx":["styles.99571fbd12a33704904b.css","component---src-pages-about-tsx-e78dd311a29d07914929.js"],"component---src-pages-articles-tsx":["styles.99571fbd12a33704904b.css","59ecb6b20c093a27a8a7b94060ba1aa50dff7465-99fffe9cc00f51c70011.js","component---src-pages-articles-tsx-aee777c739ad265b4b37.js"],"component---src-pages-index-tsx":["styles.99571fbd12a33704904b.css","59ecb6b20c093a27a8a7b94060ba1aa50dff7465-99fffe9cc00f51c70011.js","component---src-pages-index-tsx-9ee5b786a2e7b89276c9.js"],"component---src-pages-photography-index-tsx":["styles.99571fbd12a33704904b.css","59ecb6b20c093a27a8a7b94060ba1aa50dff7465-99fffe9cc00f51c70011.js","component---src-pages-photography-index-tsx-8d1e8199fe3d0cfa0451.js"],"component---src-pages-photography-leaving-home-tsx":["styles.99571fbd12a33704904b.css","59ecb6b20c093a27a8a7b94060ba1aa50dff7465-99fffe9cc00f51c70011.js","component---src-pages-photography-leaving-home-tsx-1d31d0fc72b427f62866.js"],"component---src-pages-photography-to-vanish-tsx":["styles.99571fbd12a33704904b.css","59ecb6b20c093a27a8a7b94060ba1aa50dff7465-99fffe9cc00f51c70011.js","component---src-pages-photography-to-vanish-tsx-96906898296e8346f439.js"],"component---src-pages-photography-transient-tsx":["styles.99571fbd12a33704904b.css","59ecb6b20c093a27a8a7b94060ba1aa50dff7465-99fffe9cc00f51c70011.js","component---src-pages-photography-transient-tsx-da3c3d6b2e8e37152883.js"],"component---src-pages-privacy-tsx":["styles.99571fbd12a33704904b.css","component---src-pages-privacy-tsx-f5b20c36c4a2a18f1f54.js"],"component---src-pages-projects-tsx":["styles.99571fbd12a33704904b.css","59ecb6b20c093a27a8a7b94060ba1aa50dff7465-99fffe9cc00f51c70011.js","component---src-pages-projects-tsx-6913816ab911269673c3.js"],"component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md":["styles.99571fbd12a33704904b.css","eb4d601d433ae0407bb09582457157111a28f8a4-6e877925300148db5b30.js","component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md-0dc7578afbe0f6804be1.js"],"component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md":["styles.99571fbd12a33704904b.css","eb4d601d433ae0407bb09582457157111a28f8a4-6e877925300148db5b30.js","component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md-7987ecfa3f60efdef757.js"],"component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md":["styles.99571fbd12a33704904b.css","eb4d601d433ae0407bb09582457157111a28f8a4-6e877925300148db5b30.js","component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md-0fabff1b1842545c8a5d.js"],"component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md":["styles.99571fbd12a33704904b.css","eb4d601d433ae0407bb09582457157111a28f8a4-6e877925300148db5b30.js","component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md-1473237b99aadc49bedc.js"],"component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md":["styles.99571fbd12a33704904b.css","eb4d601d433ae0407bb09582457157111a28f8a4-6e877925300148db5b30.js","component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md-28fdf47d2f96c11d9211.js"],"component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md":["styles.99571fbd12a33704904b.css","eb4d601d433ae0407bb09582457157111a28f8a4-6e877925300148db5b30.js","component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md-c1cd5142d52b0620fa6e.js"],"component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md":["styles.99571fbd12a33704904b.css","eb4d601d433ae0407bb09582457157111a28f8a4-6e877925300148db5b30.js","component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md-6c3758660f2fd26eb3aa.js"],"component---src-templates-projects-language-tsx":["styles.99571fbd12a33704904b.css","59ecb6b20c093a27a8a7b94060ba1aa50dff7465-99fffe9cc00f51c70011.js","component---src-templates-projects-language-tsx-cad086841d9502611b71.js"]},"childAssetsByChunkName":{}} \ No newline at end of file +{"name":"build-javascript","namedChunkGroups":{"app":{"name":"app","assets":[{"name":"webpack-runtime-3f948c29a210e4747687.js","size":6591},{"name":"framework-0a3afb48ba96f399ef2c.js","size":140757},{"name":"app-5dbf3959725da9267ec3.js","size":66120}],"filteredAssets":0,"assetsSize":213468,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":610135},"component---src-pages-404-tsx":{"name":"component---src-pages-404-tsx","assets":[{"name":"styles.99571fbd12a33704904b.css","size":38825},{"name":"component---src-pages-404-tsx-0e4184ff774d07ff7424.js","size":5417}],"filteredAssets":0,"assetsSize":44242,"filteredAuxiliaryAssets":1,"auxiliaryAssetsSize":13720},"component---src-pages-about-tsx":{"name":"component---src-pages-about-tsx","assets":[{"name":"styles.99571fbd12a33704904b.css","size":38825},{"name":"component---src-pages-about-tsx-e78dd311a29d07914929.js","size":18250}],"filteredAssets":0,"assetsSize":57075,"filteredAuxiliaryAssets":1,"auxiliaryAssetsSize":32438},"component---src-pages-articles-tsx":{"name":"component---src-pages-articles-tsx","assets":[{"name":"styles.99571fbd12a33704904b.css","size":38825},{"name":"59ecb6b20c093a27a8a7b94060ba1aa50dff7465-99fffe9cc00f51c70011.js","size":15189},{"name":"component---src-pages-articles-tsx-aee777c739ad265b4b37.js","size":1651}],"filteredAssets":0,"assetsSize":55665,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":85579},"component---src-pages-index-tsx":{"name":"component---src-pages-index-tsx","assets":[{"name":"styles.99571fbd12a33704904b.css","size":38825},{"name":"59ecb6b20c093a27a8a7b94060ba1aa50dff7465-99fffe9cc00f51c70011.js","size":15189},{"name":"component---src-pages-index-tsx-ad7c035d82f1d9159f1c.js","size":7595}],"filteredAssets":0,"assetsSize":61609,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":104257},"component---src-pages-photography-index-tsx":{"name":"component---src-pages-photography-index-tsx","assets":[{"name":"styles.99571fbd12a33704904b.css","size":38825},{"name":"59ecb6b20c093a27a8a7b94060ba1aa50dff7465-99fffe9cc00f51c70011.js","size":15189},{"name":"component---src-pages-photography-index-tsx-8d1e8199fe3d0cfa0451.js","size":1699}],"filteredAssets":0,"assetsSize":55713,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":84480},"component---src-pages-photography-leaving-home-tsx":{"name":"component---src-pages-photography-leaving-home-tsx","assets":[{"name":"styles.99571fbd12a33704904b.css","size":38825},{"name":"59ecb6b20c093a27a8a7b94060ba1aa50dff7465-99fffe9cc00f51c70011.js","size":15189},{"name":"component---src-pages-photography-leaving-home-tsx-1d31d0fc72b427f62866.js","size":1713}],"filteredAssets":0,"assetsSize":55727,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":84568},"component---src-pages-photography-to-vanish-tsx":{"name":"component---src-pages-photography-to-vanish-tsx","assets":[{"name":"styles.99571fbd12a33704904b.css","size":38825},{"name":"59ecb6b20c093a27a8a7b94060ba1aa50dff7465-99fffe9cc00f51c70011.js","size":15189},{"name":"component---src-pages-photography-to-vanish-tsx-96906898296e8346f439.js","size":1710}],"filteredAssets":0,"assetsSize":55724,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":84549},"component---src-pages-photography-transient-tsx":{"name":"component---src-pages-photography-transient-tsx","assets":[{"name":"styles.99571fbd12a33704904b.css","size":38825},{"name":"59ecb6b20c093a27a8a7b94060ba1aa50dff7465-99fffe9cc00f51c70011.js","size":15189},{"name":"component---src-pages-photography-transient-tsx-da3c3d6b2e8e37152883.js","size":1708}],"filteredAssets":0,"assetsSize":55722,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":84551},"component---src-pages-privacy-tsx":{"name":"component---src-pages-privacy-tsx","assets":[{"name":"styles.99571fbd12a33704904b.css","size":38825},{"name":"component---src-pages-privacy-tsx-f5b20c36c4a2a18f1f54.js","size":8903}],"filteredAssets":0,"assetsSize":47728,"filteredAuxiliaryAssets":1,"auxiliaryAssetsSize":19006},"component---src-pages-projects-tsx":{"name":"component---src-pages-projects-tsx","assets":[{"name":"styles.99571fbd12a33704904b.css","size":38825},{"name":"59ecb6b20c093a27a8a7b94060ba1aa50dff7465-99fffe9cc00f51c70011.js","size":15189},{"name":"c804ae579c3e2b4740c8c44db44e41913c869de7-2c42feaa3017eda97d1c.js","size":9855},{"name":"component---src-pages-projects-tsx-cf9175c85e5ff3d0840f.js","size":754}],"filteredAssets":0,"assetsSize":64623,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":120148},"component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md":{"name":"component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md","assets":[{"name":"styles.99571fbd12a33704904b.css","size":38825},{"name":"eb4d601d433ae0407bb09582457157111a28f8a4-6e877925300148db5b30.js","size":93001},{"name":"component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md-0dc7578afbe0f6804be1.js","size":7611}],"filteredAssets":0,"assetsSize":139437,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":289974},"component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md":{"name":"component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md","assets":[{"name":"styles.99571fbd12a33704904b.css","size":38825},{"name":"eb4d601d433ae0407bb09582457157111a28f8a4-6e877925300148db5b30.js","size":93001},{"name":"component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md-7987ecfa3f60efdef757.js","size":57049}],"filteredAssets":0,"assetsSize":188875,"filteredAuxiliaryAssets":13,"auxiliaryAssetsSize":54108594},"component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md":{"name":"component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md","assets":[{"name":"styles.99571fbd12a33704904b.css","size":38825},{"name":"eb4d601d433ae0407bb09582457157111a28f8a4-6e877925300148db5b30.js","size":93001},{"name":"component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md-0fabff1b1842545c8a5d.js","size":67303}],"filteredAssets":0,"assetsSize":199129,"filteredAuxiliaryAssets":11,"auxiliaryAssetsSize":2445584},"component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md":{"name":"component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md","assets":[{"name":"styles.99571fbd12a33704904b.css","size":38825},{"name":"eb4d601d433ae0407bb09582457157111a28f8a4-6e877925300148db5b30.js","size":93001},{"name":"component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md-1473237b99aadc49bedc.js","size":49276}],"filteredAssets":0,"assetsSize":181102,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":480560},"component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md":{"name":"component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md","assets":[{"name":"styles.99571fbd12a33704904b.css","size":38825},{"name":"eb4d601d433ae0407bb09582457157111a28f8a4-6e877925300148db5b30.js","size":93001},{"name":"component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md-28fdf47d2f96c11d9211.js","size":2328}],"filteredAssets":0,"assetsSize":134154,"filteredAuxiliaryAssets":4,"auxiliaryAssetsSize":3417873},"component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md":{"name":"component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md","assets":[{"name":"styles.99571fbd12a33704904b.css","size":38825},{"name":"eb4d601d433ae0407bb09582457157111a28f8a4-6e877925300148db5b30.js","size":93001},{"name":"component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md-c1cd5142d52b0620fa6e.js","size":12030}],"filteredAssets":0,"assetsSize":143856,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":296776},"component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md":{"name":"component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md","assets":[{"name":"styles.99571fbd12a33704904b.css","size":38825},{"name":"eb4d601d433ae0407bb09582457157111a28f8a4-6e877925300148db5b30.js","size":93001},{"name":"component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md-6c3758660f2fd26eb3aa.js","size":11698}],"filteredAssets":0,"assetsSize":143524,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":295735},"component---src-templates-projects-language-tsx":{"name":"component---src-templates-projects-language-tsx","assets":[{"name":"styles.99571fbd12a33704904b.css","size":38825},{"name":"59ecb6b20c093a27a8a7b94060ba1aa50dff7465-99fffe9cc00f51c70011.js","size":15189},{"name":"c804ae579c3e2b4740c8c44db44e41913c869de7-2c42feaa3017eda97d1c.js","size":9855},{"name":"component---src-templates-projects-language-tsx-0097dee73f39d18c6125.js","size":961}],"filteredAssets":0,"assetsSize":64830,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":121113}},"assetsByChunkName":{"app":["webpack-runtime-3f948c29a210e4747687.js","framework-0a3afb48ba96f399ef2c.js","app-5dbf3959725da9267ec3.js"],"component---src-pages-404-tsx":["styles.99571fbd12a33704904b.css","component---src-pages-404-tsx-0e4184ff774d07ff7424.js"],"component---src-pages-about-tsx":["styles.99571fbd12a33704904b.css","component---src-pages-about-tsx-e78dd311a29d07914929.js"],"component---src-pages-articles-tsx":["styles.99571fbd12a33704904b.css","59ecb6b20c093a27a8a7b94060ba1aa50dff7465-99fffe9cc00f51c70011.js","component---src-pages-articles-tsx-aee777c739ad265b4b37.js"],"component---src-pages-index-tsx":["styles.99571fbd12a33704904b.css","59ecb6b20c093a27a8a7b94060ba1aa50dff7465-99fffe9cc00f51c70011.js","component---src-pages-index-tsx-ad7c035d82f1d9159f1c.js"],"component---src-pages-photography-index-tsx":["styles.99571fbd12a33704904b.css","59ecb6b20c093a27a8a7b94060ba1aa50dff7465-99fffe9cc00f51c70011.js","component---src-pages-photography-index-tsx-8d1e8199fe3d0cfa0451.js"],"component---src-pages-photography-leaving-home-tsx":["styles.99571fbd12a33704904b.css","59ecb6b20c093a27a8a7b94060ba1aa50dff7465-99fffe9cc00f51c70011.js","component---src-pages-photography-leaving-home-tsx-1d31d0fc72b427f62866.js"],"component---src-pages-photography-to-vanish-tsx":["styles.99571fbd12a33704904b.css","59ecb6b20c093a27a8a7b94060ba1aa50dff7465-99fffe9cc00f51c70011.js","component---src-pages-photography-to-vanish-tsx-96906898296e8346f439.js"],"component---src-pages-photography-transient-tsx":["styles.99571fbd12a33704904b.css","59ecb6b20c093a27a8a7b94060ba1aa50dff7465-99fffe9cc00f51c70011.js","component---src-pages-photography-transient-tsx-da3c3d6b2e8e37152883.js"],"component---src-pages-privacy-tsx":["styles.99571fbd12a33704904b.css","component---src-pages-privacy-tsx-f5b20c36c4a2a18f1f54.js"],"component---src-pages-projects-tsx":["styles.99571fbd12a33704904b.css","59ecb6b20c093a27a8a7b94060ba1aa50dff7465-99fffe9cc00f51c70011.js","c804ae579c3e2b4740c8c44db44e41913c869de7-2c42feaa3017eda97d1c.js","component---src-pages-projects-tsx-cf9175c85e5ff3d0840f.js"],"component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md":["styles.99571fbd12a33704904b.css","eb4d601d433ae0407bb09582457157111a28f8a4-6e877925300148db5b30.js","component---src-templates-article-tsx-content-file-path-src-articles-01-manim-intro-manim-intro-md-0dc7578afbe0f6804be1.js"],"component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md":["styles.99571fbd12a33704904b.css","eb4d601d433ae0407bb09582457157111a28f8a4-6e877925300148db5b30.js","component---src-templates-article-tsx-content-file-path-src-articles-02-maki-atoms-and-time-travel-maki-atoms-and-time-travel-md-7987ecfa3f60efdef757.js"],"component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md":["styles.99571fbd12a33704904b.css","eb4d601d433ae0407bb09582457157111a28f8a4-6e877925300148db5b30.js","component---src-templates-article-tsx-content-file-path-src-articles-03-installing-gentoo-installing-gentoo-md-0fabff1b1842545c8a5d.js"],"component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md":["styles.99571fbd12a33704904b.css","eb4d601d433ae0407bb09582457157111a28f8a4-6e877925300148db5b30.js","component---src-templates-article-tsx-content-file-path-src-articles-04-revealjs-revealjs-md-1473237b99aadc49bedc.js"],"component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md":["styles.99571fbd12a33704904b.css","eb4d601d433ae0407bb09582457157111a28f8a4-6e877925300148db5b30.js","component---src-templates-article-tsx-content-file-path-src-articles-05-compare-view-example-compare-view-example-md-28fdf47d2f96c11d9211.js"],"component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md":["styles.99571fbd12a33704904b.css","eb4d601d433ae0407bb09582457157111a28f8a4-6e877925300148db5b30.js","component---src-templates-article-tsx-content-file-path-src-articles-06-bash-cmds-01-mp-3-tag-md-c1cd5142d52b0620fa6e.js"],"component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md":["styles.99571fbd12a33704904b.css","eb4d601d433ae0407bb09582457157111a28f8a4-6e877925300148db5b30.js","component---src-templates-article-tsx-content-file-path-src-articles-07-lvim-in-distrobox-lvim-in-distrobox-md-6c3758660f2fd26eb3aa.js"],"component---src-templates-projects-language-tsx":["styles.99571fbd12a33704904b.css","59ecb6b20c093a27a8a7b94060ba1aa50dff7465-99fffe9cc00f51c70011.js","c804ae579c3e2b4740c8c44db44e41913c869de7-2c42feaa3017eda97d1c.js","component---src-templates-projects-language-tsx-0097dee73f39d18c6125.js"]},"childAssetsByChunkName":{}} \ No newline at end of file